406 lines
14 KiB
JSON
406 lines
14 KiB
JSON
{
|
|
"Affinities": null,
|
|
"AllAtOnce": false,
|
|
"Constraints": null,
|
|
"ConsulNamespace": "",
|
|
"CreateIndex": 13940845,
|
|
"Datacenters": [
|
|
"dc1"
|
|
],
|
|
"DispatchIdempotencyToken": "",
|
|
"Dispatched": false,
|
|
"ID": "calendar-proxy",
|
|
"JobModifyIndex": 13940997,
|
|
"Meta": null,
|
|
"ModifyIndex": 13991837,
|
|
"Multiregion": null,
|
|
"Name": "calendar-proxy",
|
|
"Namespace": "default",
|
|
"NodePool": "default",
|
|
"NomadTokenID": "",
|
|
"ParameterizedJob": null,
|
|
"ParentID": "",
|
|
"Payload": null,
|
|
"Periodic": null,
|
|
"Priority": 50,
|
|
"Region": "global",
|
|
"Spreads": null,
|
|
"Stable": true,
|
|
"Status": "running",
|
|
"StatusDescription": "",
|
|
"Stop": false,
|
|
"SubmitTime": 1755792931244089317,
|
|
"TaskGroups": [
|
|
{
|
|
"Affinities": null,
|
|
"Constraints": [
|
|
{
|
|
"LTarget": "${attr.consul.version}",
|
|
"Operand": "semver",
|
|
"RTarget": ">= 1.8.0"
|
|
}
|
|
],
|
|
"Consul": null,
|
|
"Count": 1,
|
|
"Disconnect": null,
|
|
"EphemeralDisk": {
|
|
"Migrate": false,
|
|
"SizeMB": 300,
|
|
"Sticky": false
|
|
},
|
|
"MaxClientDisconnect": null,
|
|
"Meta": null,
|
|
"Migrate": {
|
|
"HealthCheck": "checks",
|
|
"HealthyDeadline": 300000000000,
|
|
"MaxParallel": 1,
|
|
"MinHealthyTime": 10000000000
|
|
},
|
|
"Name": "web",
|
|
"Networks": [
|
|
{
|
|
"DynamicPorts": [
|
|
{
|
|
"HostNetwork": "default",
|
|
"Label": "http",
|
|
"To": 80
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"PreventRescheduleOnLost": false,
|
|
"ReschedulePolicy": {
|
|
"Attempts": 0,
|
|
"Delay": 30000000000,
|
|
"DelayFunction": "exponential",
|
|
"Interval": 0,
|
|
"MaxDelay": 3600000000000,
|
|
"Unlimited": true
|
|
},
|
|
"RestartPolicy": {
|
|
"Attempts": 3,
|
|
"Delay": 25000000000,
|
|
"Interval": 300000000000,
|
|
"Mode": "fail",
|
|
"RenderTemplates": false
|
|
},
|
|
"Scaling": null,
|
|
"Services": [
|
|
{
|
|
"Address": "",
|
|
"AddressMode": "auto",
|
|
"CanaryMeta": null,
|
|
"CanaryTags": null,
|
|
"Checks": [
|
|
{
|
|
"AddressMode": "",
|
|
"Args": null,
|
|
"Body": "",
|
|
"CheckRestart": null,
|
|
"Command": "",
|
|
"Expose": false,
|
|
"FailuresBeforeCritical": 0,
|
|
"FailuresBeforeWarning": 0,
|
|
"GRPCService": "",
|
|
"GRPCUseTLS": false,
|
|
"Header": null,
|
|
"InitialStatus": "",
|
|
"Interval": 10000000000,
|
|
"Method": "",
|
|
"Name": "service: \"calendar-proxy\" check",
|
|
"Notes": "",
|
|
"OnUpdate": "require_healthy",
|
|
"Path": "/health",
|
|
"PortLabel": "",
|
|
"Protocol": "",
|
|
"SuccessBeforePassing": 0,
|
|
"TLSServerName": "",
|
|
"TLSSkipVerify": false,
|
|
"TaskName": "",
|
|
"Timeout": 3000000000,
|
|
"Type": "http"
|
|
}
|
|
],
|
|
"Cluster": "default",
|
|
"Connect": null,
|
|
"EnableTagOverride": false,
|
|
"Identity": null,
|
|
"Meta": null,
|
|
"Name": "calendar-proxy",
|
|
"Namespace": "default",
|
|
"OnUpdate": "require_healthy",
|
|
"PortLabel": "http",
|
|
"Provider": "consul",
|
|
"TaggedAddresses": null,
|
|
"Tags": [
|
|
"traefik.enable=true",
|
|
"traefik.http.routers.calendar-proxy.rule=Host(`mail.fbleagh.duckdns.org`)",
|
|
"traefik.http.routers.calendar-proxy.entrypoints=web"
|
|
],
|
|
"TaskName": "",
|
|
"Weights": null
|
|
}
|
|
],
|
|
"ShutdownDelay": null,
|
|
"Spreads": null,
|
|
"StopAfterClientDisconnect": null,
|
|
"Tasks": [
|
|
{
|
|
"Actions": null,
|
|
"Affinities": null,
|
|
"Artifacts": null,
|
|
"CSIPluginConfig": null,
|
|
"Config": {
|
|
"volumes": [
|
|
"local/nginx.conf:/etc/nginx/nginx.conf",
|
|
"local/app:/var/www/html"
|
|
],
|
|
"image": "nginx:alpine",
|
|
"ports": [
|
|
"http"
|
|
]
|
|
},
|
|
"Constraints": null,
|
|
"Consul": null,
|
|
"DispatchPayload": null,
|
|
"Driver": "docker",
|
|
"Env": null,
|
|
"Identities": null,
|
|
"Identity": {
|
|
"Audience": [
|
|
"nomadproject.io"
|
|
],
|
|
"ChangeMode": "",
|
|
"ChangeSignal": "",
|
|
"Env": false,
|
|
"File": false,
|
|
"Filepath": "",
|
|
"Name": "default",
|
|
"ServiceName": "",
|
|
"TTL": 0
|
|
},
|
|
"KillSignal": "",
|
|
"KillTimeout": 5000000000,
|
|
"Kind": "",
|
|
"Leader": false,
|
|
"Lifecycle": {
|
|
"Hook": "prestart",
|
|
"Sidecar": true
|
|
},
|
|
"LogConfig": {
|
|
"Disabled": false,
|
|
"MaxFileSizeMB": 10,
|
|
"MaxFiles": 10
|
|
},
|
|
"Meta": null,
|
|
"Name": "nginx",
|
|
"Resources": {
|
|
"CPU": 100,
|
|
"Cores": 0,
|
|
"Devices": null,
|
|
"DiskMB": 0,
|
|
"IOPS": 0,
|
|
"MemoryMB": 128,
|
|
"MemoryMaxMB": 0,
|
|
"NUMA": null,
|
|
"Networks": null,
|
|
"SecretsMB": 0
|
|
},
|
|
"RestartPolicy": {
|
|
"Attempts": 3,
|
|
"Delay": 25000000000,
|
|
"Interval": 300000000000,
|
|
"Mode": "fail",
|
|
"RenderTemplates": false
|
|
},
|
|
"ScalingPolicies": null,
|
|
"Schedule": null,
|
|
"Services": null,
|
|
"ShutdownDelay": 0,
|
|
"Templates": [
|
|
{
|
|
"ChangeMode": "restart",
|
|
"ChangeScript": null,
|
|
"ChangeSignal": "",
|
|
"DestPath": "local/nginx.conf",
|
|
"EmbeddedTmpl": "events {\n worker_connections 1024;\n}\n\nhttp {\n include /etc/nginx/mime.types;\n default_type application/octet-stream;\n \n sendfile on;\n keepalive_timeout 65;\n \n upstream php-fpm {\n server 127.0.0.1:9000;\n }\n \n server {\n listen 80;\n server_name mail.fbleagh.duckdns.org;\n root /var/www/html;\n index ics.php;\n \n location /health {\n access_log off;\n return 200 \"healthy\\n\";\n add_header Content-Type text/plain;\n }\n \n location / {\n try_files $uri $uri/ /ics.php?$query_string;\n }\n \n location ~ \\.php$ {\n fastcgi_pass php-fpm;\n fastcgi_index index.php;\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n include fastcgi_params;\n }\n \n # Security headers\n add_header X-Frame-Options \"SAMEORIGIN\" always;\n add_header X-XSS-Protection \"1; mode=block\" always;\n add_header X-Content-Type-Options \"nosniff\" always;\n \n # Hide nginx version\n server_tokens off;\n }\n}\n",
|
|
"Envvars": false,
|
|
"ErrMissingKey": false,
|
|
"Gid": null,
|
|
"LeftDelim": "{{",
|
|
"Once": false,
|
|
"Perms": "0644",
|
|
"RightDelim": "}}",
|
|
"SourcePath": "",
|
|
"Splay": 5000000000,
|
|
"Uid": null,
|
|
"VaultGrace": 0,
|
|
"Wait": null
|
|
},
|
|
{
|
|
"ChangeMode": "restart",
|
|
"ChangeScript": null,
|
|
"ChangeSignal": "",
|
|
"DestPath": "local/app/ics.php",
|
|
"EmbeddedTmpl": "<?php\n$url = $_GET['url'];\n// Accept ICS calendar links only\n$url_arr = explode('/', $url);\nif ($url_arr[2] !== 'outlook.office365.com'\n || $url_arr[3] !== 'owa'\n || $url_arr[4] !== 'calendar'\n || end($url_arr) !== 'calendar.ics'\n ) {\n http_response_code(500);\n print \"Error\";\n exit;\n}\n$context = stream_context_create([\n \"http\" => [\n \"header\" => \"User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n ]\n]);\nif (($data = @file_get_contents($url, false, $context)) === false) {\n $error = error_get_last();\n http_response_code(500);\n print \"HTTP request failed: \" . $error['message'];\n exit;\n}\nheader('Content-Type: text/calendar; charset=utf-8');\nprint $data;\n?>\n",
|
|
"Envvars": false,
|
|
"ErrMissingKey": false,
|
|
"Gid": null,
|
|
"LeftDelim": "{{",
|
|
"Once": false,
|
|
"Perms": "0644",
|
|
"RightDelim": "}}",
|
|
"SourcePath": "",
|
|
"Splay": 5000000000,
|
|
"Uid": null,
|
|
"VaultGrace": 0,
|
|
"Wait": null
|
|
}
|
|
],
|
|
"User": "",
|
|
"Vault": null,
|
|
"VolumeMounts": null
|
|
},
|
|
{
|
|
"Actions": null,
|
|
"Affinities": null,
|
|
"Artifacts": null,
|
|
"CSIPluginConfig": null,
|
|
"Config": {
|
|
"network_mode": "container:nginx-${NOMAD_ALLOC_ID}",
|
|
"volumes": [
|
|
"local/app:/var/www/html",
|
|
"local/php-fpm.conf:/usr/local/etc/php-fpm.d/www.conf"
|
|
],
|
|
"image": "php:8.2-fpm-alpine"
|
|
},
|
|
"Constraints": null,
|
|
"Consul": null,
|
|
"DispatchPayload": null,
|
|
"Driver": "docker",
|
|
"Env": null,
|
|
"Identities": null,
|
|
"Identity": {
|
|
"Audience": [
|
|
"nomadproject.io"
|
|
],
|
|
"ChangeMode": "",
|
|
"ChangeSignal": "",
|
|
"Env": false,
|
|
"File": false,
|
|
"Filepath": "",
|
|
"Name": "default",
|
|
"ServiceName": "",
|
|
"TTL": 0
|
|
},
|
|
"KillSignal": "",
|
|
"KillTimeout": 5000000000,
|
|
"Kind": "",
|
|
"Leader": false,
|
|
"Lifecycle": null,
|
|
"LogConfig": {
|
|
"Disabled": false,
|
|
"MaxFileSizeMB": 10,
|
|
"MaxFiles": 10
|
|
},
|
|
"Meta": null,
|
|
"Name": "php-fpm",
|
|
"Resources": {
|
|
"CPU": 200,
|
|
"Cores": 0,
|
|
"Devices": null,
|
|
"DiskMB": 0,
|
|
"IOPS": 0,
|
|
"MemoryMB": 256,
|
|
"MemoryMaxMB": 0,
|
|
"NUMA": null,
|
|
"Networks": null,
|
|
"SecretsMB": 0
|
|
},
|
|
"RestartPolicy": {
|
|
"Attempts": 3,
|
|
"Delay": 25000000000,
|
|
"Interval": 300000000000,
|
|
"Mode": "fail",
|
|
"RenderTemplates": false
|
|
},
|
|
"ScalingPolicies": null,
|
|
"Schedule": null,
|
|
"Services": null,
|
|
"ShutdownDelay": 0,
|
|
"Templates": [
|
|
{
|
|
"ChangeMode": "restart",
|
|
"ChangeScript": null,
|
|
"ChangeSignal": "",
|
|
"DestPath": "local/php-fpm.conf",
|
|
"EmbeddedTmpl": "[www]\nuser = www-data\ngroup = www-data\nlisten = 127.0.0.1:9000\nlisten.owner = www-data\nlisten.group = www-data\npm = dynamic\npm.max_children = 5\npm.start_servers = 2\npm.min_spare_servers = 1\npm.max_spare_servers = 3\n",
|
|
"Envvars": false,
|
|
"ErrMissingKey": false,
|
|
"Gid": null,
|
|
"LeftDelim": "{{",
|
|
"Once": false,
|
|
"Perms": "0644",
|
|
"RightDelim": "}}",
|
|
"SourcePath": "",
|
|
"Splay": 5000000000,
|
|
"Uid": null,
|
|
"VaultGrace": 0,
|
|
"Wait": null
|
|
},
|
|
{
|
|
"ChangeMode": "restart",
|
|
"ChangeScript": null,
|
|
"ChangeSignal": "",
|
|
"DestPath": "local/app/ics.php",
|
|
"EmbeddedTmpl": "<?php\n$url = $_GET['url'];\n# // Accept ICS calendar links only\n# $url_arr = explode('/', $url);\n# if ($url_arr[2] !== 'outlook.office365.com'\n# || $url_arr[3] !== 'owa'\n# || $url_arr[4] !== 'calendar'\n# || end($url_arr) !== 'calendar.ics'\n# ) {\n# http_response_code(500);\n# print \"Error\";\n# exit;\n# }\n$context = stream_context_create([\n \"http\" => [\n \"header\" => \"User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n ]\n]);\nif (($data = @file_get_contents($url, false, $context)) === false) {\n $error = error_get_last();\n http_response_code(500);\n print \"HTTP request failed: \" . $error['message'];\n exit;\n}\nheader('Content-Type: text/calendar; charset=utf-8');\nprint $data;\n?>\n",
|
|
"Envvars": false,
|
|
"ErrMissingKey": false,
|
|
"Gid": null,
|
|
"LeftDelim": "{{",
|
|
"Once": false,
|
|
"Perms": "0644",
|
|
"RightDelim": "}}",
|
|
"SourcePath": "",
|
|
"Splay": 5000000000,
|
|
"Uid": null,
|
|
"VaultGrace": 0,
|
|
"Wait": null
|
|
}
|
|
],
|
|
"User": "",
|
|
"Vault": null,
|
|
"VolumeMounts": null
|
|
}
|
|
],
|
|
"Update": {
|
|
"AutoPromote": false,
|
|
"AutoRevert": true,
|
|
"Canary": 0,
|
|
"HealthCheck": "checks",
|
|
"HealthyDeadline": 180000000000,
|
|
"MaxParallel": 1,
|
|
"MinHealthyTime": 10000000000,
|
|
"ProgressDeadline": 600000000000,
|
|
"Stagger": 30000000000
|
|
},
|
|
"Volumes": null
|
|
}
|
|
],
|
|
"Type": "service",
|
|
"UI": null,
|
|
"Update": {
|
|
"AutoPromote": false,
|
|
"AutoRevert": false,
|
|
"Canary": 0,
|
|
"HealthCheck": "",
|
|
"HealthyDeadline": 0,
|
|
"MaxParallel": 1,
|
|
"MinHealthyTime": 0,
|
|
"ProgressDeadline": 0,
|
|
"Stagger": 30000000000
|
|
},
|
|
"VaultNamespace": "",
|
|
"Version": 7,
|
|
"VersionTag": null
|
|
} |