UNPKG

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
{ "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" ] } ] }