{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "title": "go-proxy config file", "properties": { "autocert": { "title": "Autocert configuration", "type": "object", "properties": { "email": { "title": "ACME Email", "type": "string", "pattern": "^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$", "patternErrorMessage": "Invalid email" }, "domains": { "title": "Cert Domains", "type": "array", "items": { "type": "string" }, "minItems": 1 }, "cert_path": { "title": "path of cert file to load/store", "description": "default: certs/cert.crt", "type": "string" }, "key_path": { "title": "path of key file to load/store", "description": "default: certs/priv.key", "type": "string" }, "provider": { "title": "DNS Challenge Provider", "type": "string", "enum": [ "local", "cloudflare", "clouddns", "duckdns" ] }, "options": { "title": "Provider specific options", "type": "object" } }, "allOf": [ { "if": { "properties": { "provider": { "not": true, "const": "local" } } }, "then": { "required": [ "email", "domains", "provider", "options" ] } }, { "if": { "properties": { "provider": { "const": "cloudflare" } } }, "then": { "properties": { "options": { "required": [ "auth_token" ], "additionalProperties": false, "properties": { "auth_token": { "description": "Cloudflare API Token with Zone Scope", "type": "string" } } } } } }, { "if": { "properties": { "provider": { "const": "clouddns" } } }, "then": { "properties": { "options": { "required": [ "client_id", "email", "password" ], "additionalProperties": false, "properties": { "client_id": { "description": "CloudDNS Client ID", "type": "string" }, "email": { "description": "CloudDNS Email", "type": "string" }, "password": { "description": "CloudDNS Password", "type": "string" } } } } } }, { "if": { "properties": { "provider": { "const": "duckdns" } } }, "then": { "properties": { "options": { "required": [ "token" ], "additionalProperties": false, "properties": { "token": { "description": "DuckDNS Token", "type": "string" } } } } } } ] }, "providers": { "title": "Proxy providers configuration", "type": "object", "patternProperties": { "^[a-zA-Z0-9_-]+$": { "description": "Proxy provider", "type": "object", "properties": { "kind": { "description": "Proxy provider kind", "type": "string", "enum": [ "docker", "file" ] }, "value": { "type": "string" } }, "required": [ "kind", "value" ], "allOf": [ { "if": { "properties": { "kind": { "const": "docker" } } }, "then": { "if": { "properties": { "value": { "const": "FROM_ENV" } } }, "then": { "properties": { "value": { "description": "use docker client from environment" } } }, "else": { "properties": { "value": { "description": "docker client URL", "examples": [ "unix:///var/run/docker.sock", "tcp://127.0.0.1:2375", "ssh://user@host:port" ] } } } }, "else": { "properties": { "value": { "description": "file path" } } } } ] } } }, "timeout_shutdown": { "title": "Shutdown timeout (in seconds)", "type": "integer", "minimum": 0 }, "redirect_to_https": { "title": "Redirect to HTTPS", "type": "boolean" } }, "additionalProperties": false, "required": [ "providers" ] }