├── .gitignore ├── .nvim.lua.example ├── CODE_OF_CONDUCT.md ├── CONTRIBUTOR_LICENSE_AGREEMENT.md ├── LICENSE.md ├── NOTICE.md ├── README.md ├── app.ts ├── babel.config.js ├── config-instance.example.toml ├── config.ts ├── constants.ts ├── docker-compose.yml ├── docs └── img │ ├── how-tunnelmole-works.excalidraw │ └── how-tunnelmole-works.png ├── jest.config.ts ├── message-handlers.ts ├── package.json ├── security ├── banned-client-ids.ts ├── banned-hostnames.ts └── banned-ips.ts ├── src ├── authentication │ ├── apiKeys.json │ ├── authorize.ts │ └── reserved-domain.ts ├── connection.ts ├── express │ └── parse-json.ts ├── handlers │ ├── generic-async-handler-template.ts │ ├── handle-request.ts │ ├── log-telemetry.ts │ ├── tunnelmole-connections.ts │ └── unreserve-subdomain.ts ├── http │ └── status-codes.ts ├── logging │ ├── log-response.ts │ ├── log-telemetry-message.ts │ └── log.ts ├── message-handlers │ ├── generic-message-handler-template.ts │ └── initialise.ts ├── messages │ ├── client-disconnect.ts │ ├── client-message.ts │ ├── domain-already-reserved.ts │ ├── domain-reservation-error.ts │ ├── forwarded-request-message.ts │ ├── forwarded-response-message.ts │ ├── hostname-already-taken.ts │ ├── hostname-assigned-message.ts │ ├── initialise-message.ts │ ├── invalid-subscription-message.ts │ └── too-many-domains.ts ├── metrics │ └── add-client-log.ts ├── model │ └── reserved-domain.ts ├── mysql │ ├── connection.ts │ └── run-prepared-statement.ts ├── proxy.ts ├── repository │ └── reserved-subdomain-repository.ts ├── reserved-domain │ ├── reserved-domain.test.ts │ └── reserved-domain.ts ├── scripts │ ├── start-external-services.sh │ └── stop-external-services.sh ├── server │ └── setup-graceful-shutdown.ts ├── sql │ └── schema.sql ├── telemetry │ └── message.ts └── websocket │ ├── connection-info.ts │ ├── connection-timeout-loop.ts │ └── host-ip-websocket.ts ├── srv └── index.ts ├── tsconfig.json └── websocket.ts /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/.gitignore -------------------------------------------------------------------------------- /.nvim.lua.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/.nvim.lua.example -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/CODE_OF_CONDUCT.md -------------------------------------------------------------------------------- /CONTRIBUTOR_LICENSE_AGREEMENT.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/CONTRIBUTOR_LICENSE_AGREEMENT.md -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/LICENSE.md -------------------------------------------------------------------------------- /NOTICE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/NOTICE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/README.md -------------------------------------------------------------------------------- /app.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/app.ts -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/babel.config.js -------------------------------------------------------------------------------- /config-instance.example.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/config-instance.example.toml -------------------------------------------------------------------------------- /config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/config.ts -------------------------------------------------------------------------------- /constants.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/constants.ts -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/docker-compose.yml -------------------------------------------------------------------------------- /docs/img/how-tunnelmole-works.excalidraw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/docs/img/how-tunnelmole-works.excalidraw -------------------------------------------------------------------------------- /docs/img/how-tunnelmole-works.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/docs/img/how-tunnelmole-works.png -------------------------------------------------------------------------------- /jest.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/jest.config.ts -------------------------------------------------------------------------------- /message-handlers.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/message-handlers.ts -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/package.json -------------------------------------------------------------------------------- /security/banned-client-ids.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/security/banned-client-ids.ts -------------------------------------------------------------------------------- /security/banned-hostnames.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/security/banned-hostnames.ts -------------------------------------------------------------------------------- /security/banned-ips.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/security/banned-ips.ts -------------------------------------------------------------------------------- /src/authentication/apiKeys.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/authentication/apiKeys.json -------------------------------------------------------------------------------- /src/authentication/authorize.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/authentication/authorize.ts -------------------------------------------------------------------------------- /src/authentication/reserved-domain.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/authentication/reserved-domain.ts -------------------------------------------------------------------------------- /src/connection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/connection.ts -------------------------------------------------------------------------------- /src/express/parse-json.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/express/parse-json.ts -------------------------------------------------------------------------------- /src/handlers/generic-async-handler-template.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/handlers/generic-async-handler-template.ts -------------------------------------------------------------------------------- /src/handlers/handle-request.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/handlers/handle-request.ts -------------------------------------------------------------------------------- /src/handlers/log-telemetry.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/handlers/log-telemetry.ts -------------------------------------------------------------------------------- /src/handlers/tunnelmole-connections.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/handlers/tunnelmole-connections.ts -------------------------------------------------------------------------------- /src/handlers/unreserve-subdomain.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/handlers/unreserve-subdomain.ts -------------------------------------------------------------------------------- /src/http/status-codes.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/http/status-codes.ts -------------------------------------------------------------------------------- /src/logging/log-response.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/logging/log-response.ts -------------------------------------------------------------------------------- /src/logging/log-telemetry-message.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/logging/log-telemetry-message.ts -------------------------------------------------------------------------------- /src/logging/log.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/logging/log.ts -------------------------------------------------------------------------------- /src/message-handlers/generic-message-handler-template.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/message-handlers/generic-message-handler-template.ts -------------------------------------------------------------------------------- /src/message-handlers/initialise.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/message-handlers/initialise.ts -------------------------------------------------------------------------------- /src/messages/client-disconnect.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/messages/client-disconnect.ts -------------------------------------------------------------------------------- /src/messages/client-message.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/messages/client-message.ts -------------------------------------------------------------------------------- /src/messages/domain-already-reserved.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/messages/domain-already-reserved.ts -------------------------------------------------------------------------------- /src/messages/domain-reservation-error.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/messages/domain-reservation-error.ts -------------------------------------------------------------------------------- /src/messages/forwarded-request-message.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/messages/forwarded-request-message.ts -------------------------------------------------------------------------------- /src/messages/forwarded-response-message.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/messages/forwarded-response-message.ts -------------------------------------------------------------------------------- /src/messages/hostname-already-taken.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/messages/hostname-already-taken.ts -------------------------------------------------------------------------------- /src/messages/hostname-assigned-message.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/messages/hostname-assigned-message.ts -------------------------------------------------------------------------------- /src/messages/initialise-message.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/messages/initialise-message.ts -------------------------------------------------------------------------------- /src/messages/invalid-subscription-message.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/messages/invalid-subscription-message.ts -------------------------------------------------------------------------------- /src/messages/too-many-domains.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/messages/too-many-domains.ts -------------------------------------------------------------------------------- /src/metrics/add-client-log.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/metrics/add-client-log.ts -------------------------------------------------------------------------------- /src/model/reserved-domain.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/model/reserved-domain.ts -------------------------------------------------------------------------------- /src/mysql/connection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/mysql/connection.ts -------------------------------------------------------------------------------- /src/mysql/run-prepared-statement.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/mysql/run-prepared-statement.ts -------------------------------------------------------------------------------- /src/proxy.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/proxy.ts -------------------------------------------------------------------------------- /src/repository/reserved-subdomain-repository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/repository/reserved-subdomain-repository.ts -------------------------------------------------------------------------------- /src/reserved-domain/reserved-domain.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/reserved-domain/reserved-domain.test.ts -------------------------------------------------------------------------------- /src/reserved-domain/reserved-domain.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/reserved-domain/reserved-domain.ts -------------------------------------------------------------------------------- /src/scripts/start-external-services.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/scripts/start-external-services.sh -------------------------------------------------------------------------------- /src/scripts/stop-external-services.sh: -------------------------------------------------------------------------------- 1 | # MySQL 8 2 | docker stop tunnelmole_mysql -------------------------------------------------------------------------------- /src/server/setup-graceful-shutdown.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/server/setup-graceful-shutdown.ts -------------------------------------------------------------------------------- /src/sql/schema.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/sql/schema.sql -------------------------------------------------------------------------------- /src/telemetry/message.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/telemetry/message.ts -------------------------------------------------------------------------------- /src/websocket/connection-info.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/websocket/connection-info.ts -------------------------------------------------------------------------------- /src/websocket/connection-timeout-loop.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/websocket/connection-timeout-loop.ts -------------------------------------------------------------------------------- /src/websocket/host-ip-websocket.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/src/websocket/host-ip-websocket.ts -------------------------------------------------------------------------------- /srv/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/srv/index.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/tsconfig.json -------------------------------------------------------------------------------- /websocket.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbie-cahill/tunnelmole-service/HEAD/websocket.ts --------------------------------------------------------------------------------