Files
NomadBackup/nomad_backup/20251115_141532/calendar-proxy.json
2025-11-21 13:07:40 -08:00

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
}