tunli 0.0.27 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/README.md +158 -67
- package/bin/tunli +4 -5
- package/dist/api-client/ApiClient.d.ts +18 -0
- package/dist/api-client/ApiClient.d.ts.map +1 -0
- package/dist/api-client/ApiClient.js +100 -0
- package/dist/api-client/ApiClient.js.map +1 -0
- package/dist/api-client/types.d.ts +26 -0
- package/dist/api-client/types.d.ts.map +1 -0
- package/dist/api-client/types.js +2 -0
- package/dist/api-client/types.js.map +1 -0
- package/dist/api-client/utils.d.ts +4 -0
- package/dist/api-client/utils.d.ts.map +1 -0
- package/dist/api-client/utils.js +13 -0
- package/dist/api-client/utils.js.map +1 -0
- package/dist/cli-app/AppEventEmitter.d.ts +57 -0
- package/dist/cli-app/AppEventEmitter.d.ts.map +1 -0
- package/dist/cli-app/AppEventEmitter.js +11 -0
- package/dist/cli-app/AppEventEmitter.js.map +1 -0
- package/dist/cli-app/Dashboard.d.ts +4 -0
- package/dist/cli-app/Dashboard.d.ts.map +1 -0
- package/dist/cli-app/Dashboard.js +149 -0
- package/dist/cli-app/Dashboard.js.map +1 -0
- package/dist/cli-app/LiveLog.d.ts +4 -0
- package/dist/cli-app/LiveLog.d.ts.map +1 -0
- package/dist/cli-app/LiveLog.js +28 -0
- package/dist/cli-app/LiveLog.js.map +1 -0
- package/dist/cli-app/types.d.ts +10 -0
- package/dist/cli-app/types.d.ts.map +1 -0
- package/dist/cli-app/types.js +2 -0
- package/dist/cli-app/types.js.map +1 -0
- package/dist/cli-app/versionCheck.d.ts +4 -0
- package/dist/cli-app/versionCheck.d.ts.map +1 -0
- package/dist/cli-app/versionCheck.js +46 -0
- package/dist/cli-app/versionCheck.js.map +1 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +75 -0
- package/dist/client.js.map +1 -0
- package/dist/commander/Argument.d.ts +19 -0
- package/dist/commander/Argument.d.ts.map +1 -0
- package/dist/commander/Argument.js +25 -0
- package/dist/commander/Argument.js.map +1 -0
- package/dist/commander/Command.d.ts +23 -0
- package/dist/commander/Command.d.ts.map +1 -0
- package/dist/commander/Command.js +159 -0
- package/dist/commander/Command.js.map +1 -0
- package/dist/commander/InvalidArgumentError.d.ts +5 -0
- package/dist/commander/InvalidArgumentError.d.ts.map +1 -0
- package/dist/commander/InvalidArgumentError.js +8 -0
- package/dist/commander/InvalidArgumentError.js.map +1 -0
- package/dist/commander/Option.d.ts +15 -0
- package/dist/commander/Option.d.ts.map +1 -0
- package/dist/commander/Option.js +43 -0
- package/dist/commander/Option.js.map +1 -0
- package/dist/commander/index.d.ts +7 -0
- package/dist/commander/index.d.ts.map +1 -0
- package/dist/commander/index.js +5 -0
- package/dist/commander/index.js.map +1 -0
- package/dist/commander/types.d.ts +2 -0
- package/dist/commander/types.d.ts.map +1 -0
- package/dist/commander/types.js +2 -0
- package/dist/commander/types.js.map +1 -0
- package/dist/commands/CommandAuth/CommandAuth.d.ts +4 -0
- package/dist/commands/CommandAuth/CommandAuth.d.ts.map +1 -0
- package/dist/commands/CommandAuth/CommandAuth.js +24 -0
- package/dist/commands/CommandAuth/CommandAuth.js.map +1 -0
- package/dist/commands/CommandConfig/CommandConfig.d.ts +4 -0
- package/dist/commands/CommandConfig/CommandConfig.d.ts.map +1 -0
- package/dist/commands/CommandConfig/CommandConfig.js +37 -0
- package/dist/commands/CommandConfig/CommandConfig.js.map +1 -0
- package/dist/commands/CommandConfig/sub-commands/configDeleteCommand.d.ts +4 -0
- package/dist/commands/CommandConfig/sub-commands/configDeleteCommand.d.ts.map +1 -0
- package/dist/commands/CommandConfig/sub-commands/configDeleteCommand.js +20 -0
- package/dist/commands/CommandConfig/sub-commands/configDeleteCommand.js.map +1 -0
- package/dist/commands/CommandConfig/sub-commands/configGetCommand.d.ts +5 -0
- package/dist/commands/CommandConfig/sub-commands/configGetCommand.d.ts.map +1 -0
- package/dist/commands/CommandConfig/sub-commands/configGetCommand.js +23 -0
- package/dist/commands/CommandConfig/sub-commands/configGetCommand.js.map +1 -0
- package/dist/commands/CommandConfig/sub-commands/configSetCommand.d.ts +4 -0
- package/dist/commands/CommandConfig/sub-commands/configSetCommand.d.ts.map +1 -0
- package/dist/commands/CommandConfig/sub-commands/configSetCommand.js +69 -0
- package/dist/commands/CommandConfig/sub-commands/configSetCommand.js.map +1 -0
- package/dist/commands/CommandConfig/types.d.ts +6 -0
- package/dist/commands/CommandConfig/types.d.ts.map +1 -0
- package/dist/commands/CommandConfig/types.js +2 -0
- package/dist/commands/CommandConfig/types.js.map +1 -0
- package/dist/commands/CommandConfig/utils/preparePrimaryOptions.d.ts +3 -0
- package/dist/commands/CommandConfig/utils/preparePrimaryOptions.d.ts.map +1 -0
- package/dist/commands/CommandConfig/utils/preparePrimaryOptions.js +8 -0
- package/dist/commands/CommandConfig/utils/preparePrimaryOptions.js.map +1 -0
- package/dist/commands/CommandConfig/utils/resolveConfig.d.ts +8 -0
- package/dist/commands/CommandConfig/utils/resolveConfig.d.ts.map +1 -0
- package/dist/commands/CommandConfig/utils/resolveConfig.js +33 -0
- package/dist/commands/CommandConfig/utils/resolveConfig.js.map +1 -0
- package/dist/commands/CommandConfig/utils/sharedOptions.d.ts +3 -0
- package/dist/commands/CommandConfig/utils/sharedOptions.d.ts.map +1 -0
- package/dist/commands/CommandConfig/utils/sharedOptions.js +14 -0
- package/dist/commands/CommandConfig/utils/sharedOptions.js.map +1 -0
- package/dist/commands/CommandDaemon/CommandDaemon.d.ts +4 -0
- package/dist/commands/CommandDaemon/CommandDaemon.d.ts.map +1 -0
- package/dist/commands/CommandDaemon/CommandDaemon.js +57 -0
- package/dist/commands/CommandDaemon/CommandDaemon.js.map +1 -0
- package/dist/commands/CommandDashboard/CommandDashboard.d.ts +4 -0
- package/dist/commands/CommandDashboard/CommandDashboard.d.ts.map +1 -0
- package/dist/commands/CommandDashboard/CommandDashboard.js +54 -0
- package/dist/commands/CommandDashboard/CommandDashboard.js.map +1 -0
- package/dist/commands/CommandHTTP/CommandHttp.d.ts +4 -0
- package/dist/commands/CommandHTTP/CommandHttp.d.ts.map +1 -0
- package/dist/commands/CommandHTTP/CommandHttp.js +50 -0
- package/dist/commands/CommandHTTP/CommandHttp.js.map +1 -0
- package/dist/commands/CommandInit/CommandInit.d.ts +4 -0
- package/dist/commands/CommandInit/CommandInit.d.ts.map +1 -0
- package/dist/commands/CommandInit/CommandInit.js +36 -0
- package/dist/commands/CommandInit/CommandInit.js.map +1 -0
- package/dist/commands/CommandList/CommandList.d.ts +4 -0
- package/dist/commands/CommandList/CommandList.d.ts.map +1 -0
- package/dist/commands/CommandList/CommandList.js +54 -0
- package/dist/commands/CommandList/CommandList.js.map +1 -0
- package/dist/commands/CommandLogs/CommandLogs.d.ts +4 -0
- package/dist/commands/CommandLogs/CommandLogs.d.ts.map +1 -0
- package/dist/commands/CommandLogs/CommandLogs.js +33 -0
- package/dist/commands/CommandLogs/CommandLogs.js.map +1 -0
- package/dist/commands/CommandProfile/CommandProfile.d.ts +5 -0
- package/dist/commands/CommandProfile/CommandProfile.d.ts.map +1 -0
- package/dist/commands/CommandProfile/CommandProfile.js +64 -0
- package/dist/commands/CommandProfile/CommandProfile.js.map +1 -0
- package/dist/commands/CommandRegister/CommandRegister.d.ts +4 -0
- package/dist/commands/CommandRegister/CommandRegister.d.ts.map +1 -0
- package/dist/commands/CommandRegister/CommandRegister.js +43 -0
- package/dist/commands/CommandRegister/CommandRegister.js.map +1 -0
- package/dist/commands/CommandRestart/CommandRestart.d.ts +4 -0
- package/dist/commands/CommandRestart/CommandRestart.d.ts.map +1 -0
- package/dist/commands/CommandRestart/CommandRestart.js +62 -0
- package/dist/commands/CommandRestart/CommandRestart.js.map +1 -0
- package/dist/commands/CommandServer/CommandServer.d.ts +4 -0
- package/dist/commands/CommandServer/CommandServer.d.ts.map +1 -0
- package/dist/commands/CommandServer/CommandServer.js +24 -0
- package/dist/commands/CommandServer/CommandServer.js.map +1 -0
- package/dist/commands/CommandStop/CommandStop.d.ts +4 -0
- package/dist/commands/CommandStop/CommandStop.d.ts.map +1 -0
- package/dist/commands/CommandStop/CommandStop.js +25 -0
- package/dist/commands/CommandStop/CommandStop.js.map +1 -0
- package/dist/commands/CommandUpdate/CommandUpdate.d.ts +4 -0
- package/dist/commands/CommandUpdate/CommandUpdate.d.ts.map +1 -0
- package/dist/commands/CommandUpdate/CommandUpdate.js +38 -0
- package/dist/commands/CommandUpdate/CommandUpdate.js.map +1 -0
- package/dist/commands/CommandUseProfile/CommandUseProfile.d.ts +4 -0
- package/dist/commands/CommandUseProfile/CommandUseProfile.d.ts.map +1 -0
- package/dist/commands/CommandUseProfile/CommandUseProfile.js +63 -0
- package/dist/commands/CommandUseProfile/CommandUseProfile.js.map +1 -0
- package/dist/commands/helper/Help.d.ts +4 -0
- package/dist/commands/helper/Help.d.ts.map +1 -0
- package/dist/commands/helper/Help.js +134 -0
- package/dist/commands/helper/Help.js.map +1 -0
- package/dist/commands/helper/Parser.d.ts +55 -0
- package/dist/commands/helper/Parser.d.ts.map +1 -0
- package/dist/commands/helper/Parser.js +280 -0
- package/dist/commands/helper/Parser.js.map +1 -0
- package/dist/commands/shared/allowDenyCidrCommand.d.ts +3 -0
- package/dist/commands/shared/allowDenyCidrCommand.d.ts.map +1 -0
- package/dist/commands/shared/allowDenyCidrCommand.js +10 -0
- package/dist/commands/shared/allowDenyCidrCommand.js.map +1 -0
- package/dist/commands/shared/configServersCommand.d.ts +4 -0
- package/dist/commands/shared/configServersCommand.d.ts.map +1 -0
- package/dist/commands/shared/configServersCommand.js +19 -0
- package/dist/commands/shared/configServersCommand.js.map +1 -0
- package/dist/commands/utils.d.ts +3 -0
- package/dist/commands/utils.d.ts.map +1 -0
- package/dist/commands/utils.js +17 -0
- package/dist/commands/utils.js.map +1 -0
- package/dist/config/ParsedConfig.d.ts +31 -0
- package/dist/config/ParsedConfig.d.ts.map +1 -0
- package/dist/config/ParsedConfig.js +116 -0
- package/dist/config/ParsedConfig.js.map +1 -0
- package/dist/config/ParsedGlobalConfig.d.ts +5 -0
- package/dist/config/ParsedGlobalConfig.d.ts.map +1 -0
- package/dist/config/ParsedGlobalConfig.js +7 -0
- package/dist/config/ParsedGlobalConfig.js.map +1 -0
- package/dist/config/ParsedLocalConfig.d.ts +5 -0
- package/dist/config/ParsedLocalConfig.d.ts.map +1 -0
- package/dist/config/ParsedLocalConfig.js +7 -0
- package/dist/config/ParsedLocalConfig.js.map +1 -0
- package/dist/config/ParsedProfileConfig.d.ts +46 -0
- package/dist/config/ParsedProfileConfig.d.ts.map +1 -0
- package/dist/config/ParsedProfileConfig.js +120 -0
- package/dist/config/ParsedProfileConfig.js.map +1 -0
- package/dist/config/ParsedServerConfig.d.ts +20 -0
- package/dist/config/ParsedServerConfig.d.ts.map +1 -0
- package/dist/config/ParsedServerConfig.js +55 -0
- package/dist/config/ParsedServerConfig.js.map +1 -0
- package/dist/config/TempProfileConfig.d.ts +8 -0
- package/dist/config/TempProfileConfig.d.ts.map +1 -0
- package/dist/config/TempProfileConfig.js +13 -0
- package/dist/config/TempProfileConfig.js.map +1 -0
- package/dist/config/utils.d.ts +2 -0
- package/dist/config/utils.d.ts.map +1 -0
- package/dist/config/utils.js +8 -0
- package/dist/config/utils.js.map +1 -0
- package/dist/config/validations/validateProfileConfig.d.ts +4 -0
- package/dist/config/validations/validateProfileConfig.d.ts.map +1 -0
- package/dist/config/validations/validateProfileConfig.js +76 -0
- package/dist/config/validations/validateProfileConfig.js.map +1 -0
- package/dist/core/FS/utils.d.ts +12 -0
- package/dist/core/FS/utils.d.ts.map +1 -0
- package/dist/core/FS/utils.js +55 -0
- package/dist/core/FS/utils.js.map +1 -0
- package/dist/daemon/DaemonClient.d.ts +16 -0
- package/dist/daemon/DaemonClient.d.ts.map +1 -0
- package/dist/daemon/DaemonClient.js +158 -0
- package/dist/daemon/DaemonClient.js.map +1 -0
- package/dist/daemon/DaemonServer.d.ts +8 -0
- package/dist/daemon/DaemonServer.d.ts.map +1 -0
- package/dist/daemon/DaemonServer.js +201 -0
- package/dist/daemon/DaemonServer.js.map +1 -0
- package/dist/daemon/protocol.d.ts +101 -0
- package/dist/daemon/protocol.d.ts.map +1 -0
- package/dist/daemon/protocol.js +2 -0
- package/dist/daemon/protocol.js.map +1 -0
- package/dist/daemon-main.d.ts +2 -0
- package/dist/daemon-main.d.ts.map +1 -0
- package/dist/daemon-main.js +13 -0
- package/dist/daemon-main.js.map +1 -0
- package/dist/launcher-main.d.ts +2 -0
- package/dist/launcher-main.d.ts.map +1 -0
- package/dist/launcher-main.js +57 -0
- package/dist/launcher-main.js.map +1 -0
- package/dist/lib/Flow/applyUpdate.d.ts +3 -0
- package/dist/lib/Flow/applyUpdate.d.ts.map +1 -0
- package/dist/lib/Flow/applyUpdate.js +34 -0
- package/dist/lib/Flow/applyUpdate.js.map +1 -0
- package/dist/lib/Flow/downloadBinaryUpdate.d.ts +3 -0
- package/dist/lib/Flow/downloadBinaryUpdate.d.ts.map +1 -0
- package/dist/lib/Flow/downloadBinaryUpdate.js +54 -0
- package/dist/lib/Flow/downloadBinaryUpdate.js.map +1 -0
- package/dist/lib/Flow/getLatestVersion.d.ts +2 -0
- package/dist/lib/Flow/getLatestVersion.d.ts.map +1 -0
- package/dist/lib/Flow/getLatestVersion.js +13 -0
- package/dist/lib/Flow/getLatestVersion.js.map +1 -0
- package/dist/lib/defs.d.ts +18 -0
- package/dist/lib/defs.d.ts.map +1 -0
- package/dist/lib/defs.js +33 -0
- package/dist/lib/defs.js.map +1 -0
- package/dist/logger/logger.d.ts +6 -0
- package/dist/logger/logger.d.ts.map +1 -0
- package/dist/logger/logger.js +34 -0
- package/dist/logger/logger.js.map +1 -0
- package/dist/output-formats/colors.d.ts +7 -0
- package/dist/output-formats/colors.d.ts.map +1 -0
- package/dist/output-formats/colors.js +8 -0
- package/dist/output-formats/colors.js.map +1 -0
- package/dist/output-formats/formatConfig.d.ts +3 -0
- package/dist/output-formats/formatConfig.d.ts.map +1 -0
- package/dist/output-formats/formatConfig.js +59 -0
- package/dist/output-formats/formatConfig.js.map +1 -0
- package/dist/output-formats/formatConfigPath.d.ts +4 -0
- package/dist/output-formats/formatConfigPath.d.ts.map +1 -0
- package/dist/output-formats/formatConfigPath.js +7 -0
- package/dist/output-formats/formatConfigPath.js.map +1 -0
- package/dist/output-formats/formatPath.d.ts +2 -0
- package/dist/output-formats/formatPath.d.ts.map +1 -0
- package/dist/output-formats/formatPath.js +6 -0
- package/dist/output-formats/formatPath.js.map +1 -0
- package/dist/output-formats/formatProfile.d.ts +3 -0
- package/dist/output-formats/formatProfile.d.ts.map +1 -0
- package/dist/output-formats/formatProfile.js +35 -0
- package/dist/output-formats/formatProfile.js.map +1 -0
- package/dist/output-formats/formatProfilesShort.d.ts +3 -0
- package/dist/output-formats/formatProfilesShort.d.ts.map +1 -0
- package/dist/output-formats/formatProfilesShort.js +19 -0
- package/dist/output-formats/formatProfilesShort.js.map +1 -0
- package/dist/output-formats/formatSaveResult.d.ts +4 -0
- package/dist/output-formats/formatSaveResult.d.ts.map +1 -0
- package/dist/output-formats/formatSaveResult.js +7 -0
- package/dist/output-formats/formatSaveResult.js.map +1 -0
- package/dist/output-formats/table.d.ts +8 -0
- package/dist/output-formats/table.d.ts.map +1 -0
- package/dist/output-formats/table.js +15 -0
- package/dist/output-formats/table.js.map +1 -0
- package/dist/package-json/packageJson.d.ts +6 -0
- package/dist/package-json/packageJson.d.ts.map +1 -0
- package/dist/package-json/packageJson.js +12 -0
- package/dist/package-json/packageJson.js.map +1 -0
- package/dist/proxy/Proxy.d.ts +6 -0
- package/dist/proxy/Proxy.d.ts.map +1 -0
- package/dist/proxy/Proxy.js +203 -0
- package/dist/proxy/Proxy.js.map +1 -0
- package/dist/sea-main.d.ts +2 -0
- package/dist/sea-main.d.ts.map +1 -0
- package/dist/sea-main.js +20 -0
- package/dist/sea-main.js.map +1 -0
- package/dist/types/types.d.ts +55 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +2 -0
- package/dist/types/types.js.map +1 -0
- package/dist/utils/arrayFunctions.d.ts +24 -0
- package/dist/utils/arrayFunctions.d.ts.map +1 -0
- package/dist/utils/arrayFunctions.js +43 -0
- package/dist/utils/arrayFunctions.js.map +1 -0
- package/dist/utils/assertFunctions.d.ts +7 -0
- package/dist/utils/assertFunctions.d.ts.map +1 -0
- package/dist/utils/assertFunctions.js +20 -0
- package/dist/utils/assertFunctions.js.map +1 -0
- package/dist/utils/checkFunctions.d.ts +34 -0
- package/dist/utils/checkFunctions.d.ts.map +1 -0
- package/dist/utils/checkFunctions.js +87 -0
- package/dist/utils/checkFunctions.js.map +1 -0
- package/dist/utils/cliFunctions.d.ts +10 -0
- package/dist/utils/cliFunctions.d.ts.map +1 -0
- package/dist/utils/cliFunctions.js +68 -0
- package/dist/utils/cliFunctions.js.map +1 -0
- package/dist/utils/hashFunctions.d.ts +10 -0
- package/dist/utils/hashFunctions.d.ts.map +1 -0
- package/dist/utils/hashFunctions.js +11 -0
- package/dist/utils/hashFunctions.js.map +1 -0
- package/dist/utils/npmFunctions.d.ts +3 -0
- package/dist/utils/npmFunctions.d.ts.map +1 -0
- package/dist/utils/npmFunctions.js +28 -0
- package/dist/utils/npmFunctions.js.map +1 -0
- package/dist/utils/stringFunctions.d.ts +12 -0
- package/dist/utils/stringFunctions.d.ts.map +1 -0
- package/dist/utils/stringFunctions.js +37 -0
- package/dist/utils/stringFunctions.js.map +1 -0
- package/package.json +38 -16
- package/client.js +0 -33
- package/src/cli-app/Dashboard.js +0 -220
- package/src/cli-app/Screen/FullScreenModal.js +0 -63
- package/src/cli-app/Screen.js +0 -140
- package/src/cli-app/elements/ElementNode.js +0 -97
- package/src/cli-app/elements/Line.js +0 -21
- package/src/cli-app/elements/List/List.js +0 -227
- package/src/cli-app/elements/List/ListCell.js +0 -83
- package/src/cli-app/elements/List/ListColumn.js +0 -52
- package/src/cli-app/elements/List/ListRow.js +0 -118
- package/src/cli-app/elements/Row.js +0 -38
- package/src/cli-app/helper/utils.js +0 -42
- package/src/commands/Action/addDelValuesAction.js +0 -56
- package/src/commands/CommandAuth.js +0 -32
- package/src/commands/CommandClearAll.js +0 -27
- package/src/commands/CommandConfig.js +0 -59
- package/src/commands/CommandHTTP.js +0 -192
- package/src/commands/CommandInvite.js +0 -38
- package/src/commands/CommandRefresh.js +0 -35
- package/src/commands/CommandRegister.js +0 -48
- package/src/commands/Option/DeleteOption.js +0 -6
- package/src/commands/Option/ProfileListOption.js +0 -65
- package/src/commands/Option/SelectConfigOption.js +0 -52
- package/src/commands/SubCommand/AllowDenyCidrCommand.js +0 -28
- package/src/commands/SubCommand/HostCommand.js +0 -22
- package/src/commands/SubCommand/PortCommand.js +0 -20
- package/src/commands/SubCommand/ProtocolCommand.js +0 -21
- package/src/commands/helper/AliasResolver.js +0 -13
- package/src/commands/helper/BindArgs.js +0 -53
- package/src/commands/helper/SharedArg.js +0 -32
- package/src/commands/utils.js +0 -96
- package/src/config/ConfigAbstract.js +0 -353
- package/src/config/ConfigManager.js +0 -70
- package/src/config/GlobalConfig.js +0 -14
- package/src/config/GlobalLocalShardConfigAbstract.js +0 -98
- package/src/config/LocalConfig.js +0 -7
- package/src/config/PropertyConfig.js +0 -122
- package/src/config/SystemConfig.js +0 -31
- package/src/core/FS/utils.js +0 -60
- package/src/core/Ref.js +0 -70
- package/src/lib/Flow/getCurrentIp.js +0 -18
- package/src/lib/Flow/getLatestVersion.js +0 -13
- package/src/lib/Flow/proxyUrl.js +0 -35
- package/src/lib/Flow/validateAuthToken.js +0 -19
- package/src/lib/HttpClient.js +0 -61
- package/src/lib/Proxy.js +0 -42
- package/src/lib/defs.js +0 -13
- package/src/net/IPV4.js +0 -139
- package/src/net/http/IncomingMessage.js +0 -92
- package/src/net/http/ServerResponse.js +0 -126
- package/src/net/http/TunliRequest.js +0 -1
- package/src/net/http/TunliResponse.js +0 -1
- package/src/net/http/TunnelRequest.js +0 -229
- package/src/net/http/TunnelResponse.js +0 -119
- package/src/tunnel-client/TunnelClient.js +0 -144
- package/src/utils/arrayFunctions.js +0 -45
- package/src/utils/checkFunctions.js +0 -182
- package/src/utils/cliFunctions.js +0 -63
- package/src/utils/createRequest.js +0 -12
- package/src/utils/hashFunctions.js +0 -9
- package/src/utils/httpFunction.js +0 -23
- package/src/utils/npmFunctions.js +0 -27
- package/src/utils/stringFunctions.js +0 -59
- package/types/index.d.ts +0 -119
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.1.0] - 2026-03-23
|
|
4
|
+
|
|
5
|
+
Initial release after full rewrite.
|
|
6
|
+
|
|
7
|
+
### Core
|
|
8
|
+
- Daemon-based tunnel management via Unix socket
|
|
9
|
+
- HTTP & WebSocket tunneling
|
|
10
|
+
- Profiles & environments
|
|
11
|
+
- Global and local (per-project) configuration
|
|
12
|
+
- CIDR allow/deny access control
|
|
13
|
+
- Self-hosted relay server support
|
|
14
|
+
- React + Ink TUI dashboard
|
|
15
|
+
|
|
16
|
+
### Distribution
|
|
17
|
+
- Two-binary SEA distribution: stable launcher (`tunli`) + auto-updated main binary (`tunli-main`)
|
|
18
|
+
- Launcher auto-downloads `tunli-main` from GitHub Releases on first run
|
|
19
|
+
- Separate `build-main.sh` / `build-launcher.sh` scripts; matrix release workflow for Linux and macOS
|
|
20
|
+
|
|
21
|
+
### Updates
|
|
22
|
+
- `tunli update` — download and apply the latest binary release
|
|
23
|
+
- Dashboard Ctrl+U triggers in-place update with live progress output
|
|
24
|
+
- `UpdateResult` type replaces boolean callbacks: `progress` / `success` / `failed`
|
|
25
|
+
|
|
26
|
+
### Daemon lifecycle
|
|
27
|
+
- `tunli daemon reload` — dump active tunnels, restart daemon, restore tunnels
|
|
28
|
+
- Tunnel dump & restore: active tunnels serialized to `~/.tunli/dump.json` before daemon stops; new daemon instance reads and restores them on startup
|
|
29
|
+
- After an update-triggered restart `tunli-main` auto-starts the daemon if a dump file is present
|
|
30
|
+
|
|
31
|
+
### Dashboard
|
|
32
|
+
- Restart feedback: "Restarting…" shown immediately when Ctrl+R is pressed
|
|
33
|
+
|
|
34
|
+
### Proxy
|
|
35
|
+
- Connection pool size negotiated with server via `connectInfo` response
|
package/README.md
CHANGED
|
@@ -1,137 +1,228 @@
|
|
|
1
1
|
# Tunli
|
|
2
2
|
|
|
3
|
-
Tunli is a
|
|
4
|
-
This is particularly useful for developing and testing applications that need to be reachable from anywhere.
|
|
3
|
+
Tunli is a developer-first tunneling tool that gives you full control — use the official server at [tunli.app](https://tunli.app) or run your own with [tunli-server](https://github.com/tunlijs/tunli-server).
|
|
5
4
|
|
|
6
5
|
## Installation
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
**Binary (no Node.js required):**
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Linux
|
|
11
|
+
curl -L https://github.com/tunlijs/tunli-client/releases/latest/download/tunli-linux.tar.gz | tar -xz -C /usr/local/bin
|
|
12
|
+
|
|
13
|
+
# macOS
|
|
14
|
+
curl -L https://github.com/tunlijs/tunli-client/releases/latest/download/tunli-macos.tar.gz | tar -xz -C /usr/local/bin
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Or download manually from the [releases page](https://github.com/tunlijs/tunli-client/releases).
|
|
18
|
+
|
|
19
|
+
**via npm:**
|
|
9
20
|
|
|
10
21
|
```bash
|
|
11
22
|
npm install -g tunli
|
|
12
23
|
```
|
|
13
24
|
|
|
14
|
-
|
|
25
|
+
Requires Node.js >= 22.
|
|
15
26
|
|
|
16
|
-
|
|
27
|
+
> **Note:** The CLI command interface is not yet final. Some commands and flags may be renamed or restructured in v0.2.0 for consistency. See the [Roadmap](ROADMAP.md) for planned changes.
|
|
17
28
|
|
|
18
|
-
|
|
29
|
+
## Features
|
|
30
|
+
|
|
31
|
+
- Stable public URLs per profile
|
|
32
|
+
- HTTP & WebSocket tunneling via a background daemon
|
|
33
|
+
- Multiple simultaneous tunnels
|
|
34
|
+
- Profiles & environments
|
|
35
|
+
- Self-hosted relay servers
|
|
36
|
+
- CIDR allow/deny access control
|
|
37
|
+
|
|
38
|
+
## Quick Start
|
|
39
|
+
|
|
40
|
+
By default the client connects to the official server — no server setup required.
|
|
19
41
|
|
|
20
42
|
```bash
|
|
21
|
-
|
|
43
|
+
# 1. Register (once)
|
|
44
|
+
tunli register
|
|
45
|
+
|
|
46
|
+
# 2. Start a tunnel to your local port
|
|
47
|
+
tunli http 3000
|
|
48
|
+
|
|
49
|
+
# 3. Watch live output
|
|
50
|
+
tunli logs
|
|
22
51
|
```
|
|
23
52
|
|
|
24
|
-
|
|
53
|
+
`tunli http` hands the tunnel off to the background daemon and exits immediately. Use `tunli logs` or `tunli dashboard` to observe traffic.
|
|
54
|
+
|
|
55
|
+
## Commands
|
|
56
|
+
|
|
57
|
+
### `tunli http <port> [host]`
|
|
58
|
+
|
|
59
|
+
Start a tunnel to a local HTTP service. The daemon is started automatically if it isn't running yet.
|
|
25
60
|
|
|
26
61
|
```bash
|
|
27
|
-
tunli
|
|
28
|
-
tunli
|
|
29
|
-
tunli
|
|
62
|
+
tunli http 3000
|
|
63
|
+
tunli http 3000 127.0.0.1
|
|
64
|
+
tunli http 3000 --save myapp # save as a named profile for later reuse
|
|
30
65
|
```
|
|
31
66
|
|
|
32
|
-
|
|
67
|
+
Use `--save <name>` to persist the configuration as a profile. You can then start it again with `tunli use <profile>` or `tunli @<profile>`.
|
|
68
|
+
|
|
69
|
+
### `tunli use <profile>`
|
|
70
|
+
|
|
71
|
+
Start a tunnel using a saved profile. Profiles are created via `tunli http --save` or managed with `tunli profile`.
|
|
33
72
|
|
|
34
73
|
```bash
|
|
35
|
-
tunli
|
|
74
|
+
tunli use myapp
|
|
75
|
+
tunli @myapp # shorthand
|
|
36
76
|
```
|
|
37
77
|
|
|
38
|
-
|
|
78
|
+
### `tunli list`
|
|
79
|
+
|
|
80
|
+
Show all active tunnels managed by the daemon.
|
|
39
81
|
|
|
40
82
|
```bash
|
|
41
|
-
tunli
|
|
83
|
+
tunli list
|
|
42
84
|
```
|
|
43
85
|
|
|
44
|
-
###
|
|
86
|
+
### `tunli dashboard [profile]`
|
|
45
87
|
|
|
46
|
-
|
|
88
|
+
Attach to a running tunnel and show the live TUI dashboard. Defaults to the first active tunnel.
|
|
47
89
|
|
|
48
|
-
|
|
90
|
+
```bash
|
|
91
|
+
tunli dashboard
|
|
92
|
+
tunli dashboard myapp
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### `tunli logs [profile]`
|
|
96
|
+
|
|
97
|
+
Attach to a running tunnel and stream live log output to stdout. Defaults to the first active tunnel.
|
|
49
98
|
|
|
50
99
|
```bash
|
|
51
|
-
tunli
|
|
100
|
+
tunli logs
|
|
101
|
+
tunli logs myapp
|
|
52
102
|
```
|
|
53
103
|
|
|
54
|
-
|
|
104
|
+
### `tunli stop [profile]`
|
|
105
|
+
|
|
106
|
+
Stop a running tunnel without stopping the daemon. Omit the profile name to stop the first active tunnel.
|
|
55
107
|
|
|
56
108
|
```bash
|
|
57
|
-
tunli
|
|
109
|
+
tunli stop myapp
|
|
110
|
+
tunli stop
|
|
58
111
|
```
|
|
59
112
|
|
|
60
|
-
###
|
|
113
|
+
### `tunli daemon`
|
|
61
114
|
|
|
62
|
-
|
|
115
|
+
Manage the background daemon process. The daemon is also started automatically when needed.
|
|
63
116
|
|
|
64
117
|
```bash
|
|
65
|
-
tunli
|
|
118
|
+
tunli daemon start
|
|
119
|
+
tunli daemon stop
|
|
120
|
+
tunli daemon restart
|
|
121
|
+
tunli daemon reload # dump active tunnels, restart daemon, restore them
|
|
122
|
+
tunli daemon status
|
|
66
123
|
```
|
|
67
124
|
|
|
68
|
-
|
|
125
|
+
### `tunli register`
|
|
69
126
|
|
|
70
|
-
|
|
127
|
+
Register a new account and store the auth token.
|
|
71
128
|
|
|
72
|
-
|
|
129
|
+
```bash
|
|
130
|
+
tunli register
|
|
131
|
+
tunli register --force # renew existing token
|
|
132
|
+
tunli register --server https://api.myserver.com --name self # self-hosted server
|
|
133
|
+
```
|
|
73
134
|
|
|
74
|
-
|
|
75
|
-
tunli config host localhost
|
|
76
|
-
```
|
|
135
|
+
### `tunli auth <token>`
|
|
77
136
|
|
|
78
|
-
|
|
137
|
+
Manually store an auth token (e.g. received via invitation).
|
|
79
138
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
139
|
+
```bash
|
|
140
|
+
tunli auth <token>
|
|
141
|
+
```
|
|
83
142
|
|
|
84
|
-
|
|
143
|
+
### `tunli init`
|
|
85
144
|
|
|
86
|
-
|
|
87
|
-
tunli config
|
|
88
|
-
```
|
|
145
|
+
Initialize a local config file in the current directory. Local configs override the global config and are useful for per-project settings.
|
|
89
146
|
|
|
90
|
-
|
|
147
|
+
```bash
|
|
148
|
+
tunli init
|
|
149
|
+
tunli init --force # overwrite existing local config
|
|
150
|
+
```
|
|
91
151
|
|
|
92
|
-
|
|
93
|
-
tunli config --global
|
|
94
|
-
```
|
|
152
|
+
### `tunli config`
|
|
95
153
|
|
|
96
|
-
|
|
154
|
+
Show or modify the active configuration.
|
|
97
155
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
156
|
+
```bash
|
|
157
|
+
tunli config # show active config
|
|
158
|
+
tunli config get host # read a single value
|
|
159
|
+
tunli config set host 127.0.0.2 # set a value
|
|
160
|
+
tunli config set port 3001 -p staging # set in a named profile
|
|
161
|
+
tunli config delete # remove the active config file
|
|
162
|
+
tunli config delete -p staging # remove a specific profile
|
|
163
|
+
tunli config dump # dump global + local config
|
|
164
|
+
tunli config relays # list registered relay servers
|
|
165
|
+
```
|
|
101
166
|
|
|
102
|
-
|
|
167
|
+
Scope flags (available on most config commands):
|
|
103
168
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
169
|
+
```
|
|
170
|
+
--global / -g use the global config (~/.tunli/config.json)
|
|
171
|
+
--local / -l use the local config (./.tunli/config.json)
|
|
172
|
+
--profile / -p target a specific profile
|
|
173
|
+
```
|
|
107
174
|
|
|
108
|
-
|
|
175
|
+
### `tunli profile`
|
|
109
176
|
|
|
110
|
-
|
|
111
|
-
tunli auth <TOKEN>
|
|
112
|
-
```
|
|
177
|
+
Manage tunnel profiles.
|
|
113
178
|
|
|
114
|
-
|
|
179
|
+
```bash
|
|
180
|
+
tunli profile list
|
|
181
|
+
tunli profile use staging # set staging as the default profile
|
|
182
|
+
tunli profile delete staging # remove a profile
|
|
183
|
+
```
|
|
115
184
|
|
|
116
|
-
|
|
185
|
+
### `tunli update`
|
|
117
186
|
|
|
118
|
-
|
|
119
|
-
- `blessed`: ^0.1.81
|
|
120
|
-
- `chalk`: ^5.3.0
|
|
121
|
-
- `commander`: ^12.1.0
|
|
122
|
-
- `https-proxy-agent`: ^7.0.4
|
|
123
|
-
- `socket.io-client`: ^4.7.5
|
|
187
|
+
Download and apply the latest binary release.
|
|
124
188
|
|
|
125
|
-
|
|
189
|
+
```bash
|
|
190
|
+
tunli update
|
|
191
|
+
```
|
|
126
192
|
|
|
127
|
-
|
|
193
|
+
### `tunli relay`
|
|
128
194
|
|
|
129
|
-
|
|
195
|
+
Manage relay servers.
|
|
130
196
|
|
|
131
197
|
```bash
|
|
132
|
-
|
|
198
|
+
tunli relay list
|
|
199
|
+
tunli relay use myserver # switch the active relay server
|
|
133
200
|
```
|
|
134
201
|
|
|
202
|
+
## Architecture & internals
|
|
203
|
+
|
|
204
|
+
For a deeper look at the two-binary model, daemon protocol, update flow and build system see [docs/architecture.md](docs/architecture.md).
|
|
205
|
+
|
|
206
|
+
## Architecture
|
|
207
|
+
|
|
208
|
+
Tunli runs a background daemon (`~/.tunli/daemon.sock`) that manages all active tunnels. The CLI communicates with it via a Unix socket using newline-delimited JSON.
|
|
209
|
+
|
|
210
|
+
- `tunli http` / `tunli use` — validate config, hand off to daemon, exit
|
|
211
|
+
- `tunli daemon` — explicit daemon lifecycle management
|
|
212
|
+
- `tunli list` — query active tunnels from the daemon
|
|
213
|
+
- `tunli dashboard` / `tunli logs` — attach to the daemon event stream
|
|
214
|
+
|
|
215
|
+
## Configuration
|
|
216
|
+
|
|
217
|
+
Tunli stores its config in JSON files:
|
|
218
|
+
|
|
219
|
+
| Scope | Location |
|
|
220
|
+
|--------|--------------------------------------------------------|
|
|
221
|
+
| Global | `~/.tunli/config.json` |
|
|
222
|
+
| Local | `./.tunli/config.json` (per-project, takes precedence) |
|
|
223
|
+
|
|
224
|
+
A profile holds the target `host`, `port`, `protocol`, saved `proxyURL`, and optional CIDR allow/deny lists.
|
|
225
|
+
|
|
135
226
|
## License
|
|
136
227
|
|
|
137
|
-
|
|
228
|
+
GPL-3.0
|
package/bin/tunli
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
#!/bin/sh
|
|
2
2
|
":" //# comment; exec /usr/bin/env node --harmony "$0" "$@"
|
|
3
|
-
import {proxyChildProcess, setCursorVisibility} from '#
|
|
3
|
+
import {proxyChildProcess, setCursorVisibility} from '#utils/cliFunctions'
|
|
4
4
|
import {exit} from 'node:process'
|
|
5
5
|
import {resolve} from "path";
|
|
6
|
-
import {dirnameFromMeta} from "#
|
|
6
|
+
import {dirnameFromMeta} from "#core/FS/utils";
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (process.env.TUNLI_DASHBOARD !== 'off') setCursorVisibility(true)
|
|
8
|
+
const exitCode = await proxyChildProcess(resolve(dirnameFromMeta(import.meta), '../dist/client.js'))
|
|
9
|
+
setCursorVisibility(true)
|
|
11
10
|
exit(exitCode)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ParsedGlobalConfig } from "#config/ParsedGlobalConfig";
|
|
2
|
+
import type { ParsedLocalConfig } from "#config/ParsedLocalConfig";
|
|
3
|
+
import type { ApiResult } from "#api-client/types";
|
|
4
|
+
import type { ProxyConfig, ServerConfig, TargetConfig } from "#types/types";
|
|
5
|
+
export declare class ApiClient {
|
|
6
|
+
#private;
|
|
7
|
+
constructor(globalConfig: ParsedGlobalConfig, localConfig?: ParsedLocalConfig);
|
|
8
|
+
withServer(serverConf: ServerConfig): ApiClient;
|
|
9
|
+
register(server: string): Promise<ApiResult<string>>;
|
|
10
|
+
registerProxy(target: TargetConfig, profileName: string): Promise<ApiResult<ProxyConfig>>;
|
|
11
|
+
renewProxy(target: TargetConfig, profileName: string, proxyURL: string): Promise<ApiResult<boolean>>;
|
|
12
|
+
connectInfo(): Promise<ApiResult<{
|
|
13
|
+
socketUrl: string;
|
|
14
|
+
capturePath: string;
|
|
15
|
+
connectionPoolSize: number;
|
|
16
|
+
}>>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=ApiClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiClient.d.ts","sourceRoot":"","sources":["../../src/api-client/ApiClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAc,SAAS,EAAiB,MAAM,mBAAmB,CAAC;AAG9E,OAAO,KAAK,EAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAC,MAAM,cAAc,CAAC;AAM1E,qBAAa,SAAS;;gBAMR,YAAY,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,iBAAiB;IAK7E,UAAU,CAAC,UAAU,EAAE,YAAY;IA6D7B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAWpD,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IASzF,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IASpG,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAShH"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { errorResponse, successResponse } from "#api-client/utils";
|
|
2
|
+
import { DEFAULT_API_SERVER_URL, DEFAULT_PROFILE_NAME } from "#lib/defs";
|
|
3
|
+
import { sha256 } from "../utils/hashFunctions.js";
|
|
4
|
+
import dns from 'node:dns';
|
|
5
|
+
dns.setDefaultResultOrder('ipv4first');
|
|
6
|
+
export class ApiClient {
|
|
7
|
+
#globalConfig;
|
|
8
|
+
#localConfig;
|
|
9
|
+
#serverConf;
|
|
10
|
+
constructor(globalConfig, localConfig) {
|
|
11
|
+
this.#globalConfig = globalConfig;
|
|
12
|
+
this.#localConfig = localConfig;
|
|
13
|
+
}
|
|
14
|
+
withServer(serverConf) {
|
|
15
|
+
const self = new ApiClient(this.#globalConfig, this.#localConfig);
|
|
16
|
+
self.#serverConf = serverConf;
|
|
17
|
+
return self;
|
|
18
|
+
}
|
|
19
|
+
async #request(method, path, body, options) {
|
|
20
|
+
const serverUrl = new URL(options?.override?.server
|
|
21
|
+
?? this.#serverConf?.url
|
|
22
|
+
?? DEFAULT_API_SERVER_URL);
|
|
23
|
+
serverUrl.pathname = `/api/v2${path}`;
|
|
24
|
+
const authToken = this.#serverConf?.authToken ?? '';
|
|
25
|
+
let response;
|
|
26
|
+
try {
|
|
27
|
+
response = await fetch(String(serverUrl), {
|
|
28
|
+
method,
|
|
29
|
+
headers: {
|
|
30
|
+
'User-Agent': 'tunli/1.0',
|
|
31
|
+
'Content-Type': 'application/json',
|
|
32
|
+
'Authorization': `Bearer ${authToken}`,
|
|
33
|
+
},
|
|
34
|
+
...(body !== undefined ? { body: JSON.stringify(body) } : {}),
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
const code = (e instanceof Error && e.cause?.code) || null;
|
|
39
|
+
const message = code === 'ECONNREFUSED' ? `Connection refused — is the server running at ${serverUrl.host}?` :
|
|
40
|
+
code === 'ENOTFOUND' ? `Host not found: ${serverUrl.host}` :
|
|
41
|
+
code === 'ETIMEDOUT' ? `Connection timed out: ${serverUrl.host}` :
|
|
42
|
+
e instanceof Error ? e.message :
|
|
43
|
+
String(e);
|
|
44
|
+
return { isError: true, data: undefined, error: new Error(message), status: 0 };
|
|
45
|
+
}
|
|
46
|
+
if (!response.ok) {
|
|
47
|
+
return {
|
|
48
|
+
isError: true,
|
|
49
|
+
data: undefined,
|
|
50
|
+
error: new Error(`HTTP ${response.status}: ${response.statusText}`),
|
|
51
|
+
status: response.status
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const data = await response.json().catch(() => ({}));
|
|
55
|
+
return { isError: false, data, error: undefined, status: response.status };
|
|
56
|
+
}
|
|
57
|
+
async #doGet(path, options) {
|
|
58
|
+
return this.#request('GET', path, undefined, options);
|
|
59
|
+
}
|
|
60
|
+
async #doPost(path, body) {
|
|
61
|
+
return this.#request('POST', path, body);
|
|
62
|
+
}
|
|
63
|
+
async register(server) {
|
|
64
|
+
const response = await this.#doGet('/register', {
|
|
65
|
+
override: {
|
|
66
|
+
server
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
if (response.isError)
|
|
70
|
+
return errorResponse(response);
|
|
71
|
+
return successResponse(response, response.data.authToken);
|
|
72
|
+
}
|
|
73
|
+
async registerProxy(target, profileName) {
|
|
74
|
+
const targetHash = sha256(`${target.protocol}://${target.host}:${target.port}`);
|
|
75
|
+
const profileHash = profileName === DEFAULT_PROFILE_NAME ? undefined : sha256(profileName);
|
|
76
|
+
const response = await this.#doPost('/create-proxy', { targetHash, profileHash });
|
|
77
|
+
if (response.isError)
|
|
78
|
+
return errorResponse(response);
|
|
79
|
+
return successResponse(response, response.data);
|
|
80
|
+
}
|
|
81
|
+
async renewProxy(target, profileName, proxyURL) {
|
|
82
|
+
const targetHash = sha256(`${target.protocol}://${target.host}:${target.port}`);
|
|
83
|
+
const profileHash = profileName === DEFAULT_PROFILE_NAME ? undefined : sha256(profileName);
|
|
84
|
+
const response = await this.#doPost(`/renew-proxy/${proxyURL}`, { targetHash, profileHash });
|
|
85
|
+
if (response.isError)
|
|
86
|
+
return errorResponse(response);
|
|
87
|
+
return successResponse(response, response.data.success);
|
|
88
|
+
}
|
|
89
|
+
async connectInfo() {
|
|
90
|
+
const response = await this.#doGet('/connect-info');
|
|
91
|
+
if (response.isError)
|
|
92
|
+
return errorResponse(response);
|
|
93
|
+
return successResponse(response, {
|
|
94
|
+
socketUrl: response.data.socketUrl,
|
|
95
|
+
capturePath: response.data.capturePath,
|
|
96
|
+
connectionPoolSize: response.data.connectionPoolSize ?? 1,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=ApiClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiClient.js","sourceRoot":"","sources":["../../src/api-client/ApiClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type ApiResponse = {
|
|
2
|
+
isError: true;
|
|
3
|
+
data: undefined;
|
|
4
|
+
error: Error;
|
|
5
|
+
status: number;
|
|
6
|
+
} | {
|
|
7
|
+
isError: false;
|
|
8
|
+
data: Record<string, unknown>;
|
|
9
|
+
error: undefined;
|
|
10
|
+
status: number;
|
|
11
|
+
};
|
|
12
|
+
export type ApiResult<T> = {
|
|
13
|
+
data: T;
|
|
14
|
+
error?: undefined;
|
|
15
|
+
response: ApiResponse;
|
|
16
|
+
} | {
|
|
17
|
+
data?: undefined;
|
|
18
|
+
error: Error;
|
|
19
|
+
response: ApiResponse;
|
|
20
|
+
};
|
|
21
|
+
export type RequestOptions = {
|
|
22
|
+
override?: {
|
|
23
|
+
server?: string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api-client/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACnB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvF,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IACzB,IAAI,EAAE,CAAC,CAAA;IACP,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,QAAQ,EAAE,WAAW,CAAA;CACtB,GAAG;IACF,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,KAAK,CAAA;IACZ,QAAQ,EAAE,WAAW,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api-client/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ApiResponse, ApiResult } from "#api-client/types";
|
|
2
|
+
export declare const errorResponse: <T>(response: ApiResponse) => ApiResult<T>;
|
|
3
|
+
export declare const successResponse: <T>(response: ApiResponse, data: T) => ApiResult<T>;
|
|
4
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/api-client/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE9D,eAAO,MAAM,aAAa,GAAG,CAAC,EAAE,UAAU,WAAW,KAAG,SAAS,CAAC,CAAC,CAKlE,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,UAAU,WAAW,EAAE,MAAM,CAAC,KAAG,SAAS,CAAC,CAAC,CAK9E,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/api-client/utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAE,CAAI,QAAqB,EAAgB,EAAE;IACrE,OAAO;QACL,QAAQ;QACR,KAAK,EAAE,QAAQ,CAAC,KAAc;KAC/B,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAI,QAAqB,EAAE,IAAO,EAAgB,EAAE;IACjF,OAAO;QACL,QAAQ;QACR,IAAI;KACL,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import EventEmitter from "node:events";
|
|
2
|
+
import type { Socket } from "socket.io-client";
|
|
3
|
+
import type { IncomingHttpHeaders } from "http";
|
|
4
|
+
import type { ProxyConfig, TargetConfig } from "#types/types";
|
|
5
|
+
export type Req = {
|
|
6
|
+
host: string;
|
|
7
|
+
port: number;
|
|
8
|
+
method: string;
|
|
9
|
+
path: string;
|
|
10
|
+
headers: IncomingHttpHeaders;
|
|
11
|
+
requestId: string;
|
|
12
|
+
};
|
|
13
|
+
export type Res = {
|
|
14
|
+
statusMessage: string;
|
|
15
|
+
statusCode: number;
|
|
16
|
+
httpVersion: string;
|
|
17
|
+
headers: IncomingHttpHeaders;
|
|
18
|
+
};
|
|
19
|
+
export type ReqMeta = {
|
|
20
|
+
method: string;
|
|
21
|
+
headers: IncomingHttpHeaders;
|
|
22
|
+
path: string;
|
|
23
|
+
requestId: string;
|
|
24
|
+
isUpgrade: boolean;
|
|
25
|
+
};
|
|
26
|
+
export type ReqErrorMeta = {
|
|
27
|
+
requestId: string;
|
|
28
|
+
isUpgrade: boolean;
|
|
29
|
+
};
|
|
30
|
+
export type ReadyInfo = ProxyConfig & {
|
|
31
|
+
target: TargetConfig;
|
|
32
|
+
};
|
|
33
|
+
type AppEvents = "connect" | "disconnect" | "connect_error" | "ready" | "response" | "client-blocked" | "request" | "request-error" | "latency" | "request-count";
|
|
34
|
+
export declare class AppEventEmitter extends EventEmitter {
|
|
35
|
+
on(eventName: 'ready', listener: (info: ReadyInfo) => void): this;
|
|
36
|
+
on(eventName: 'request', listener: (req: ReqMeta) => void): this;
|
|
37
|
+
on(eventName: 'client-blocked', listener: (ip: string) => void): this;
|
|
38
|
+
on(eventName: 'disconnect', listener: (reason: Socket.DisconnectReason) => void): this;
|
|
39
|
+
on(eventName: 'response', listener: (req: Req, res: Res) => void): this;
|
|
40
|
+
on(eventName: 'request-error', listener: (e: Error, meta: ReqErrorMeta) => void): this;
|
|
41
|
+
on(eventName: 'connect_error', listener: (e: Error) => void): this;
|
|
42
|
+
on(eventName: 'latency', listener: (ms: number) => void): this;
|
|
43
|
+
on(eventName: 'request-count', listener: (count: number) => void): this;
|
|
44
|
+
on(eventName: AppEvents, listener: (...args: any[]) => unknown): this;
|
|
45
|
+
emit(eventName: 'ready', info: ReadyInfo): boolean;
|
|
46
|
+
emit(eventName: 'response', req: Req, res: Res): boolean;
|
|
47
|
+
emit(eventName: 'request', req: ReqMeta): boolean;
|
|
48
|
+
emit(eventName: 'connect_error', e: Error): boolean;
|
|
49
|
+
emit(eventName: 'connect'): boolean;
|
|
50
|
+
emit(eventName: 'client-blocked', ip: string): boolean;
|
|
51
|
+
emit(eventName: 'request-error', e: Error, meta: ReqErrorMeta): boolean;
|
|
52
|
+
emit(eventName: 'disconnect', reason: Socket.DisconnectReason): boolean;
|
|
53
|
+
emit(eventName: 'latency', ms: number): boolean;
|
|
54
|
+
emit(eventName: 'request-count', count: number): boolean;
|
|
55
|
+
}
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=AppEventEmitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppEventEmitter.d.ts","sourceRoot":"","sources":["../../src/cli-app/AppEventEmitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import EventEmitter from "node:events";
|
|
2
|
+
export class AppEventEmitter extends EventEmitter {
|
|
3
|
+
on(eventName, listener) {
|
|
4
|
+
super.on(eventName, listener);
|
|
5
|
+
return this;
|
|
6
|
+
}
|
|
7
|
+
emit(eventName, ...args) {
|
|
8
|
+
return super.emit(eventName, ...args);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=AppEventEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppEventEmitter.js","sourceRoot":"","sources":["../../src/cli-app/AppEventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAC;AA+CvC,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAY/C,EAAE,CAAC,SAAoB,EAAE,QAAqC;QAC5D,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;IAYD,IAAI,CAAC,SAAoB,EAAE,GAAG,IAAW;QACvC,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAA;IACvC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../src/cli-app/Dashboard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAA;AAiN7D,eAAO,MAAM,aAAa,GAAI,QAAQ,aAAa,EAAE,iBAAiB,eAAe,SAYpF,CAAA"}
|