{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "OddBoxV2Config",
"type": "object",
"required": [
"env_vars",
"port_range_start",
"version"
],
"properties": {
"admin_api_port": {
"type": [
"integer",
"null"
],
"format": "uint16",
"minimum": 0.0
},
"alpn": {
"description": "Defaults to true. Lets you enable/disable h2/http11 tls alpn algs during initial connection phase.",
"default": true,
"type": [
"boolean",
"null"
]
},
"auto_start": {
"default": true,
"type": [
"boolean",
"null"
]
},
"default_log_format": {
"default": "standard",
"allOf": [
{
"$ref": "#/definitions/LogFormat"
}
]
},
"env_vars": {
"type": "array",
"items": {
"$ref": "#/definitions/EnvVar"
}
},
"hosted_process": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/InProcessSiteConfig"
}
},
"http_port": {
"default": 8080,
"type": [
"integer",
"null"
],
"format": "uint16",
"minimum": 0.0
},
"ip": {
"type": [
"string",
"null"
],
"format": "ip"
},
"lets_encrypt_account_email": {
"type": [
"string",
"null"
]
},
"log_level": {
"default": "Info",
"anyOf": [
{
"$ref": "#/definitions/LogLevel"
},
{
"type": "null"
}
]
},
"path": {
"type": [
"string",
"null"
]
},
"port_range_start": {
"type": "integer",
"format": "uint16",
"minimum": 0.0
},
"remote_target": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/RemoteSiteConfig"
}
},
"root_dir": {
"type": [
"string",
"null"
]
},
"tls_port": {
"default": 4343,
"type": [
"integer",
"null"
],
"format": "uint16",
"minimum": 0.0
},
"version": {
"$ref": "#/definitions/OddBoxConfigVersion"
}
},
"definitions": {
"Backend": {
"type": "object",
"required": [
"address",
"port"
],
"properties": {
"address": {
"type": "string"
},
"hints": {
"description": "H2C,H2,H2CPK - used to signal use of prior knowledge http2 or http2 over clear text.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Hint"
}
},
"https": {
"type": [
"boolean",
"null"
]
},
"port": {
"description": "This can be zero in case the backend is a hosted process, in which case we will need to resolve the current active_port",
"type": "integer",
"format": "uint16",
"minimum": 0.0
}
}
},
"EnvVar": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"Hint": {
"oneOf": [
{
"type": "string",
"enum": [
"NOH2"
]
},
{
"description": "Server supports http2 over tls",
"type": "string",
"enum": [
"H2"
]
},
{
"description": "Server supports http2 via clear text by using an upgrade header",
"type": "string",
"enum": [
"H2C"
]
},
{
"description": "Server supports http2 via clear text by using prior knowledge",
"type": "string",
"enum": [
"H2CPK"
]
}
]
},
"InProcessSiteConfig": {
"type": "object",
"required": [
"bin",
"host_name"
],
"properties": {
"args": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"auto_start": {
"description": "Set this to false if you do not want this site to start automatically when odd-box starts. This also means that the site is excluded from the start_all command.",
"type": [
"boolean",
"null"
]
},
"bin": {
"type": "string"
},
"capture_subdomains": {
"description": "If you wish to use wildcard routing for any subdomain under the 'host_name'",
"type": [
"boolean",
"null"
]
},
"dir": {
"type": [
"string",
"null"
]
},
"disable_tcp_tunnel_mode": {
"description": "This is mostly useful in case the target uses SNI sniffing/routing",
"type": [
"boolean",
"null"
]
},
"enable_lets_encrypt": {
"description": "If you want to use lets-encrypt for generating certificates automatically for this site. Defaults to false. This feature will disable tcp tunnel mode.",
"type": [
"boolean",
"null"
]
},
"env_vars": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/EnvVar"
}
},
"exclude_from_start_all": {
"description": "If you wish to exclude this site from the start_all command. This setting was previously called \"disable\" but has been renamed for clarity",
"type": [
"boolean",
"null"
]
},
"forward_subdomains": {
"description": "If you wish to use the subdomain from the request in forwarded requests: test.example.com -> internal.site vs test.example.com -> test.internal.site",
"type": [
"boolean",
"null"
]
},
"hints": {
"description": "H2C or H2 - used to signal use of prior knowledge http2 or http2 over clear text.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/Hint"
}
},
"host_name": {
"type": "string"
},
"https": {
"type": [
"boolean",
"null"
]
},
"log_format": {
"anyOf": [
{
"$ref": "#/definitions/LogFormat"
},
{
"type": "null"
}
]
},
"port": {
"description": "If this is set to None, the next available port will be used. Starting from the global port_range_start",
"type": [
"integer",
"null"
],
"format": "uint16",
"minimum": 0.0
}
}
},
"LogFormat": {
"type": "string",
"enum": [
"standard",
"dotnet"
]
},
"LogLevel": {
"type": "string",
"enum": [
"Trace",
"Debug",
"Info",
"Warn",
"Error"
]
},
"OddBoxConfigVersion": {
"type": "string",
"enum": [
"Unmarked",
"V1",
"V2"
]
},
"RemoteSiteConfig": {
"type": "object",
"required": [
"backends",
"host_name"
],
"properties": {
"backends": {
"type": "array",
"items": {
"$ref": "#/definitions/Backend"
}
},
"capture_subdomains": {
"description": "If you wish to use wildcard routing for any subdomain under the 'host_name'",
"type": [
"boolean",
"null"
]
},
"disable_tcp_tunnel_mode": {
"description": "This is mostly useful in case the target uses SNI sniffing/routing",
"type": [
"boolean",
"null"
]
},
"enable_lets_encrypt": {
"description": "If you want to use lets-encrypt for generating certificates automatically for this site. Defaults to false. This feature will disable tcp tunnel mode.",
"type": [
"boolean",
"null"
]
},
"forward_subdomains": {
"description": "If you wish to use the subdomain from the request in forwarded requests: test.example.com -> internal.site vs test.example.com -> test.internal.site",
"type": [
"boolean",
"null"
]
},
"host_name": {
"type": "string"
}
}
}
}
}