homebridge-cloudflared-tunnel
Version:
The Cloudflared Tunnel plugin allows you to run a Cloudflare-Tunnel for exposing your homebridge instance for remote access.
223 lines • 6.94 kB
JSON
{
"pluginAlias": "CloudflaredTunnel",
"pluginType": "platform",
"singular": true,
"customUi": true,
"customUiPath": "./dist/homebridge-ui",
"headerDisplay": "<p align='center'><img width='250px' src='https://raw.githubusercontent.com/homebridge-plugins/homebridge-cloudflared-tunnel/latest/branding/Homebridge_x_CloudflaredTunnel.svg'></p>\n\n<p>The Homebridge Cloudflared Tunnel plugin allows you to run a Cloudflare-Tunnel for exposing your Homebridge instance for remote access.",
"footerDisplay": "Your CloudflaredTunnel has been created. Please raise any issues on our [project page](https://github.com/homebridge-plugins/homebridge-cloudflared-tunnel/issues).\n\nIf you would like to have other features, fill out [Feature Request Form](https://github.com/homebridge-plugins/homebridge-cloudflared-tunnel/issues/new?assignees=&labels=&template=feature_request.md).",
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"default": "CloudflaredTunnel",
"required": true
},
"domain": {
"type": "string",
"title": "Domain",
"description": "The domain of the self specified tunnel.",
"required": false
},
"token": {
"type": "string",
"title": "Token",
"description": "The token to use for the self specified tunnel.",
"required": false,
"condition": {
"functionBody": "return (!model.url || (!model.protocol && !model.hostname && !model.port));"
}
},
"acceptCloudflareNotice": {
"type": "boolean",
"title": "Auto Start Tunnel Install",
"required": true,
"description": "Automatically start the Cloudflared Tunnel install process.",
"condition": {
"functionBody": "return (!model.token && !model.domain);"
}
},
"url": {
"type": "string",
"title": "URL",
"placeholder": "http://localhost:8581",
"pattern": "^https?://",
"required": false,
"condition": {
"functionBody": "return ((!model.port && !model.hostname && !model.protocol) || (!model.domain && !model.token));"
},
"description": "The URL to tunnel to. If you are using a URL, you do not need to specify the protocol, hostname, or port.",
"default": "",
"format": "uri",
"patternErrorMessage": "URL must start with http:// or https://",
"validationMessage": "URL must start with http:// or https://",
"validationKeywords": [
"pattern"
],
"validation": {
"pattern": "^https?://"
}
},
"protocol": {
"type": "string",
"title": "Protocol",
"required": false,
"default": "",
"oneOf": [
{
"title": "HTTP",
"enum": [
"http"
]
},
{
"title": "HTTPS",
"enum": [
"https"
]
}
],
"description": "The protocol to use for the tunnel. If you are using a URL, you do not need to specify the protocol, hostname, or port.",
"condition": {
"functionBody": "return (!model.url || (!model.domain && !model.token));"
}
},
"hostname": {
"type": "string",
"title": "hostname",
"placeholder": "homebridge.local",
"required": false,
"description": "The hostname to tunnel to. If you are using a URL, you do not need to specify the protocol, hostname, or port.",
"validation": {
"pattern": "^(?!\\s*$).+",
"functionBody": "return (!model.url);"
},
"validationMessage": "Hostname must be specified if not using a URL",
"pattern": "^(?!\\s*$).+",
"patternErrorMessage": "Hostname must be specified if not using a URL",
"validationKeywords": [
"pattern"
],
"condition": {
"functionBody": "return (!model.url || (!model.domain && !model.token));"
}
},
"port": {
"type": "number",
"title": "Port",
"placeholder": "8581",
"required": false,
"description": "The port to tunnel to. If you are using a URL, you do not need to specify the protocol, hostname, or port.",
"minimum": 1,
"maximum": 65535,
"validationMessage": "Port must be between 1 and 65535",
"validationKeywords": [
"minimum",
"maximum"
],
"validation": {
"minimum": 1,
"maximum": 65535,
"functionBody": "return (!model.url || (!model.domain && !model.token));"
},
"condition": {
"functionBody": "return (!model.url || (!model.domain && !model.token));"
}
},
"verifyTLS": {
"type": "boolean",
"title": "Verify TLS",
"required": false,
"default": false,
"description": "Verify the TLS certificate of the origin server.",
"condition": {
"functionBody": "return ((!model.url || (!model.protocol && !model.hostname && !model.port)) || (!model.domain && !model.token));"
},
"validation": {
"functionBody": "return ((!model.url || (!model.protocol && !model.hostname && !model.port)) || (!model.domain && !model.token));"
}
},
"logging": {
"title": "Plugin Logging Setting",
"type": "string",
"required": true,
"default": "",
"oneOf": [
{
"title": "Default Logging",
"enum": [
""
]
},
{
"title": "Standard Logging",
"enum": [
"standard"
]
},
{
"title": "No Logging",
"enum": [
"none"
]
},
{
"title": "Debug Logging",
"enum": [
"debug"
]
}
]
}
},
"dependentRequired": {
"domain": [
"token"
],
"token": [
"domain"
],
"protocol": [
"hostname",
"port"
],
"hostname": [
"protocol",
"port"
],
"port": [
"protocol",
"hostname"
]
}
},
"layout": [
{
"type": "fieldset",
"title": "Cloudflared Tunnel Settings",
"expandable": true,
"expanded": false,
"items": [
"domain",
"token",
"acceptCloudflareNotice",
"url",
"protocol",
"hostname",
"port",
"verifyTLS"
]
},
{
"type": "fieldset",
"title": "Advanced Settings",
"expandable": true,
"expanded": false,
"items": [
"logging"
]
}
]
}