odd-box 0.1.10

a dead simple reverse proxy server and web server
{
  "$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"
        }
      }
    }
  }
}