tunli 0.0.27 → 0.2.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 +45 -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 +241 -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 +39 -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
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import net from 'net';
|
|
2
|
+
import { readFileSync, unlinkSync } from 'node:fs';
|
|
3
|
+
import { DAEMON_SOCKET_PATH, RESTART_DUMP_FILEPATH } from '#lib/defs';
|
|
4
|
+
import { AppEventEmitter } from '#cli-app/AppEventEmitter';
|
|
5
|
+
import { ApiClient } from '#api-client/ApiClient';
|
|
6
|
+
import { ParsedGlobalConfig } from '#config/ParsedGlobalConfig';
|
|
7
|
+
import { createProxy } from '#proxy/Proxy';
|
|
8
|
+
export class DaemonServer {
|
|
9
|
+
#logger;
|
|
10
|
+
#apiClient;
|
|
11
|
+
#tunnels = new Map();
|
|
12
|
+
#server;
|
|
13
|
+
constructor(globalConf, logger) {
|
|
14
|
+
this.#logger = logger;
|
|
15
|
+
this.#apiClient = new ApiClient(globalConf);
|
|
16
|
+
}
|
|
17
|
+
async listen() {
|
|
18
|
+
try {
|
|
19
|
+
unlinkSync(DAEMON_SOCKET_PATH);
|
|
20
|
+
}
|
|
21
|
+
catch { /* stale socket */
|
|
22
|
+
}
|
|
23
|
+
this.#server = net.createServer((socket) => {
|
|
24
|
+
let buffer = '';
|
|
25
|
+
socket.on('data', (chunk) => {
|
|
26
|
+
buffer += chunk.toString();
|
|
27
|
+
const nl = buffer.indexOf('\n');
|
|
28
|
+
if (nl === -1)
|
|
29
|
+
return;
|
|
30
|
+
const line = buffer.slice(0, nl);
|
|
31
|
+
buffer = buffer.slice(nl + 1);
|
|
32
|
+
try {
|
|
33
|
+
void this.#handle(JSON.parse(line), socket);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
this.#respond(socket, { type: 'error', message: 'Invalid request' });
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
await new Promise((resolve) => this.#server.listen(DAEMON_SOCKET_PATH, resolve));
|
|
41
|
+
this.#logger.info('Daemon listening');
|
|
42
|
+
await this.#restoreFromDump();
|
|
43
|
+
process.on('SIGTERM', () => this.#shutdown());
|
|
44
|
+
process.on('SIGINT', () => this.#shutdown());
|
|
45
|
+
}
|
|
46
|
+
async #handle(req, socket) {
|
|
47
|
+
switch (req.type) {
|
|
48
|
+
case 'start':
|
|
49
|
+
return this.#handleStart(req, socket);
|
|
50
|
+
case 'stop':
|
|
51
|
+
return this.#handleStop(req, socket);
|
|
52
|
+
case 'attach':
|
|
53
|
+
return this.#handleAttach(req, socket);
|
|
54
|
+
case 'list':
|
|
55
|
+
return this.#handleList(socket);
|
|
56
|
+
case 'dump':
|
|
57
|
+
return this.#handleDump(socket);
|
|
58
|
+
case 'shutdown':
|
|
59
|
+
this.#respond(socket, { type: 'ok' });
|
|
60
|
+
this.#shutdown();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async #handleStart(req, socket) {
|
|
65
|
+
if (this.#tunnels.has(req.profileName)) {
|
|
66
|
+
return this.#respond(socket, { type: 'error', message: `Tunnel "${req.profileName}" is already running` });
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
await this.#startTunnel(req);
|
|
70
|
+
this.#respond(socket, { type: 'started', profileName: req.profileName, proxyURL: req.proxyURL });
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
this.#respond(socket, { type: 'error', message: e instanceof Error ? e.message : String(e) });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async #startTunnel(req) {
|
|
77
|
+
const serverConfig = { url: req.serverUrl, authToken: req.authToken };
|
|
78
|
+
const apiClient = this.#apiClient.withServer(serverConfig);
|
|
79
|
+
const profileConfig = {
|
|
80
|
+
profileName: req.profileName,
|
|
81
|
+
proxy: { proxyIdent: req.proxyIdent, proxyURL: req.proxyURL },
|
|
82
|
+
target: req.target,
|
|
83
|
+
serverConfig,
|
|
84
|
+
apiClient,
|
|
85
|
+
filepath: req.filepath,
|
|
86
|
+
allowedCidr: req.allowedCidr,
|
|
87
|
+
deniedCidr: req.deniedCidr,
|
|
88
|
+
};
|
|
89
|
+
const info = {
|
|
90
|
+
profileName: req.profileName,
|
|
91
|
+
proxyURL: req.proxyURL,
|
|
92
|
+
target: `${req.target.host}:${req.target.port}`,
|
|
93
|
+
status: 'connecting',
|
|
94
|
+
};
|
|
95
|
+
const appEmitter = new AppEventEmitter();
|
|
96
|
+
const handle = { info, startRequest: req, appEmitter, disconnect: () => { }, requestCount: 0 };
|
|
97
|
+
appEmitter.on('connect', () => { info.status = 'connected'; });
|
|
98
|
+
appEmitter.on('disconnect', () => { info.status = 'disconnected'; });
|
|
99
|
+
appEmitter.on('connect_error', () => { info.status = 'error'; });
|
|
100
|
+
appEmitter.on('latency', (ms) => { handle.lastLatency = ms; });
|
|
101
|
+
appEmitter.on('response', () => { handle.requestCount++; });
|
|
102
|
+
const proxy = await createProxy(profileConfig, appEmitter);
|
|
103
|
+
handle.disconnect = proxy.disconnect;
|
|
104
|
+
this.#tunnels.set(req.profileName, handle);
|
|
105
|
+
this.#logger.info(`Tunnel started: ${req.profileName} → ${req.proxyURL}`);
|
|
106
|
+
}
|
|
107
|
+
async #restoreFromDump() {
|
|
108
|
+
let data;
|
|
109
|
+
try {
|
|
110
|
+
data = readFileSync(RESTART_DUMP_FILEPATH, 'utf-8');
|
|
111
|
+
unlinkSync(RESTART_DUMP_FILEPATH);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
const tunnels = JSON.parse(data);
|
|
118
|
+
for (const tunnel of tunnels) {
|
|
119
|
+
await this.#startTunnel(tunnel).catch(e => {
|
|
120
|
+
this.#logger.error(`Failed to restore tunnel "${tunnel.profileName}": ${e instanceof Error ? e.message : String(e)}`);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
this.#logger.info(`Restored ${tunnels.length} tunnel(s) from dump`);
|
|
124
|
+
}
|
|
125
|
+
catch (e) {
|
|
126
|
+
this.#logger.error(`Failed to parse restart dump: ${e instanceof Error ? e.message : String(e)}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
#handleAttach(req, socket) {
|
|
130
|
+
const handle = this.#tunnels.get(req.profileName);
|
|
131
|
+
if (!handle) {
|
|
132
|
+
return this.#respond(socket, { type: 'error', message: `No tunnel running for profile "${req.profileName}"` });
|
|
133
|
+
}
|
|
134
|
+
socket.write(JSON.stringify({
|
|
135
|
+
type: 'attach-ok',
|
|
136
|
+
profileName: req.profileName,
|
|
137
|
+
proxyURL: handle.info.proxyURL,
|
|
138
|
+
status: handle.info.status,
|
|
139
|
+
requestCount: handle.requestCount,
|
|
140
|
+
...(handle.lastLatency !== undefined && { lastLatency: handle.lastLatency }),
|
|
141
|
+
}) + '\n');
|
|
142
|
+
const send = (msg) => {
|
|
143
|
+
if (!socket.destroyed)
|
|
144
|
+
socket.write(JSON.stringify(msg) + '\n');
|
|
145
|
+
};
|
|
146
|
+
const { appEmitter } = handle;
|
|
147
|
+
const listeners = {
|
|
148
|
+
connect: () => send({ type: 'event', event: 'connect' }),
|
|
149
|
+
disconnect: (reason) => send({ type: 'event', event: 'disconnect', reason }),
|
|
150
|
+
connect_error: (e) => send({ type: 'event', event: 'connect_error', message: e.message }),
|
|
151
|
+
ready: (info) => send({ type: 'event', event: 'ready', ...info }),
|
|
152
|
+
request: (data) => send({ type: 'event', event: 'request', data }),
|
|
153
|
+
response: (req, res) => send({ type: 'event', event: 'response', req, res }),
|
|
154
|
+
'request-error': (e, meta) => send({ type: 'event', event: 'request-error', message: e.message, meta }),
|
|
155
|
+
'client-blocked': (ip) => send({ type: 'event', event: 'client-blocked', ip }),
|
|
156
|
+
latency: (ms) => send({ type: 'event', event: 'latency', ms }),
|
|
157
|
+
};
|
|
158
|
+
for (const [event, listener] of Object.entries(listeners)) {
|
|
159
|
+
appEmitter.on(event, listener);
|
|
160
|
+
}
|
|
161
|
+
socket.on('close', () => {
|
|
162
|
+
for (const [event, listener] of Object.entries(listeners)) {
|
|
163
|
+
appEmitter.off(event, listener);
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
#handleStop(req, socket) {
|
|
168
|
+
const handle = this.#tunnels.get(req.profileName);
|
|
169
|
+
if (!handle) {
|
|
170
|
+
return this.#respond(socket, { type: 'error', message: `No tunnel running for profile "${req.profileName}"` });
|
|
171
|
+
}
|
|
172
|
+
handle.disconnect();
|
|
173
|
+
this.#tunnels.delete(req.profileName);
|
|
174
|
+
this.#logger.info(`Tunnel stopped: ${req.profileName}`);
|
|
175
|
+
this.#respond(socket, { type: 'stopped', profileName: req.profileName });
|
|
176
|
+
}
|
|
177
|
+
#handleList(socket) {
|
|
178
|
+
const tunnels = [...this.#tunnels.values()].map(h => h.info);
|
|
179
|
+
this.#respond(socket, { type: 'list', tunnels });
|
|
180
|
+
}
|
|
181
|
+
#handleDump(socket) {
|
|
182
|
+
const tunnels = [...this.#tunnels.values()].map(h => h.startRequest);
|
|
183
|
+
this.#respond(socket, { type: 'dump', tunnels });
|
|
184
|
+
}
|
|
185
|
+
#respond(socket, response) {
|
|
186
|
+
socket.write(JSON.stringify(response) + '\n');
|
|
187
|
+
}
|
|
188
|
+
#shutdown() {
|
|
189
|
+
this.#logger.info('Daemon shutting down');
|
|
190
|
+
for (const handle of this.#tunnels.values())
|
|
191
|
+
handle.disconnect();
|
|
192
|
+
this.#server?.close();
|
|
193
|
+
try {
|
|
194
|
+
unlinkSync(DAEMON_SOCKET_PATH);
|
|
195
|
+
}
|
|
196
|
+
catch { /* already gone */
|
|
197
|
+
}
|
|
198
|
+
process.exit(0);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=DaemonServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DaemonServer.js","sourceRoot":"","sources":["../../src/daemon/DaemonServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { TargetConfig } from '#types/types';
|
|
2
|
+
import type { Req, Res, ReqMeta, ReqErrorMeta } from '#cli-app/AppEventEmitter';
|
|
3
|
+
export type TunnelInfo = {
|
|
4
|
+
profileName: string;
|
|
5
|
+
proxyURL: string;
|
|
6
|
+
target: string;
|
|
7
|
+
status: 'connecting' | 'connected' | 'disconnected' | 'error';
|
|
8
|
+
};
|
|
9
|
+
export type StartRequest = {
|
|
10
|
+
type: 'start';
|
|
11
|
+
profileName: string;
|
|
12
|
+
proxyIdent: string;
|
|
13
|
+
proxyURL: string;
|
|
14
|
+
serverUrl: string;
|
|
15
|
+
authToken: string;
|
|
16
|
+
target: TargetConfig;
|
|
17
|
+
filepath: string;
|
|
18
|
+
allowedCidr: string[];
|
|
19
|
+
deniedCidr: string[];
|
|
20
|
+
};
|
|
21
|
+
export type TunnelDump = Omit<StartRequest, 'type'>[];
|
|
22
|
+
export type DaemonRequest = StartRequest | {
|
|
23
|
+
type: 'stop';
|
|
24
|
+
profileName: string;
|
|
25
|
+
} | {
|
|
26
|
+
type: 'attach';
|
|
27
|
+
profileName: string;
|
|
28
|
+
} | {
|
|
29
|
+
type: 'list';
|
|
30
|
+
} | {
|
|
31
|
+
type: 'dump';
|
|
32
|
+
} | {
|
|
33
|
+
type: 'shutdown';
|
|
34
|
+
};
|
|
35
|
+
export type EventMessage = {
|
|
36
|
+
type: 'event';
|
|
37
|
+
event: 'connect';
|
|
38
|
+
} | {
|
|
39
|
+
type: 'event';
|
|
40
|
+
event: 'disconnect';
|
|
41
|
+
reason: string;
|
|
42
|
+
} | {
|
|
43
|
+
type: 'event';
|
|
44
|
+
event: 'connect_error';
|
|
45
|
+
message: string;
|
|
46
|
+
} | {
|
|
47
|
+
type: 'event';
|
|
48
|
+
event: 'ready';
|
|
49
|
+
proxyIdent: string;
|
|
50
|
+
proxyURL: string;
|
|
51
|
+
target: TargetConfig;
|
|
52
|
+
} | {
|
|
53
|
+
type: 'event';
|
|
54
|
+
event: 'request';
|
|
55
|
+
data: ReqMeta;
|
|
56
|
+
} | {
|
|
57
|
+
type: 'event';
|
|
58
|
+
event: 'response';
|
|
59
|
+
req: Req;
|
|
60
|
+
res: Res;
|
|
61
|
+
} | {
|
|
62
|
+
type: 'event';
|
|
63
|
+
event: 'request-error';
|
|
64
|
+
message: string;
|
|
65
|
+
meta: ReqErrorMeta;
|
|
66
|
+
} | {
|
|
67
|
+
type: 'event';
|
|
68
|
+
event: 'client-blocked';
|
|
69
|
+
ip: string;
|
|
70
|
+
} | {
|
|
71
|
+
type: 'event';
|
|
72
|
+
event: 'latency';
|
|
73
|
+
ms: number;
|
|
74
|
+
};
|
|
75
|
+
export type DaemonResponse = {
|
|
76
|
+
type: 'started';
|
|
77
|
+
profileName: string;
|
|
78
|
+
proxyURL: string;
|
|
79
|
+
} | {
|
|
80
|
+
type: 'stopped';
|
|
81
|
+
profileName: string;
|
|
82
|
+
} | {
|
|
83
|
+
type: 'list';
|
|
84
|
+
tunnels: TunnelInfo[];
|
|
85
|
+
} | {
|
|
86
|
+
type: 'dump';
|
|
87
|
+
tunnels: TunnelDump;
|
|
88
|
+
} | {
|
|
89
|
+
type: 'attach-ok';
|
|
90
|
+
profileName: string;
|
|
91
|
+
proxyURL: string;
|
|
92
|
+
status: TunnelInfo['status'];
|
|
93
|
+
lastLatency?: number;
|
|
94
|
+
requestCount: number;
|
|
95
|
+
} | EventMessage | {
|
|
96
|
+
type: 'error';
|
|
97
|
+
message: string;
|
|
98
|
+
} | {
|
|
99
|
+
type: 'ok';
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/daemon/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/daemon/protocol.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-main.d.ts","sourceRoot":"","sources":["../src/daemon-main.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { readJsonFile } from '#core/FS/utils';
|
|
2
|
+
import { GLOBAL_CONFIG_FILEPATH } from '#lib/defs';
|
|
3
|
+
import { ParsedGlobalConfig } from '#config/ParsedGlobalConfig';
|
|
4
|
+
import { DaemonServer } from '#daemon/DaemonServer';
|
|
5
|
+
import { logInfo, logError, logWarning } from '#logger/logger';
|
|
6
|
+
const globalConf = new ParsedGlobalConfig(readJsonFile(GLOBAL_CONFIG_FILEPATH), GLOBAL_CONFIG_FILEPATH);
|
|
7
|
+
const server = new DaemonServer(globalConf, {
|
|
8
|
+
info: logInfo,
|
|
9
|
+
error: logError,
|
|
10
|
+
warn: logWarning,
|
|
11
|
+
});
|
|
12
|
+
await server.listen();
|
|
13
|
+
//# sourceMappingURL=daemon-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-main.js","sourceRoot":"","sources":["../src/daemon-main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,WAAW,CAAA;AAChD,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAA;AAE5D,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC,CAAA;AAEvG,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE;IAC1C,IAAI,EAAG,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,IAAI,EAAG,UAAU;CAClB,CAAC,CAAA;AAEF,MAAM,MAAM,CAAC,MAAM,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launcher-main.d.ts","sourceRoot":"","sources":["../src/launcher-main.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { chmodSync, existsSync, mkdirSync, renameSync } from 'node:fs';
|
|
2
|
+
import { proxyChildProcess, setCursorVisibility } from './utils/cliFunctions.js';
|
|
3
|
+
import { applyUpdate } from './lib/Flow/applyUpdate.js';
|
|
4
|
+
import { TUNLI_BIN_DIR, TUNLI_BIN_NEW_PATH, TUNLI_BIN_PATH } from './lib/defs.js';
|
|
5
|
+
import { downloadBinaryUpdate } from "./lib/Flow/downloadBinaryUpdate.js";
|
|
6
|
+
import { logDebug } from "./logger/logger.js";
|
|
7
|
+
// On first run: install main binary from launcher binary itself
|
|
8
|
+
if (!existsSync(TUNLI_BIN_PATH)) {
|
|
9
|
+
process.stdout.write('prepare first usage...\n');
|
|
10
|
+
logDebug(`Initial setup: Creating binary directory at ${TUNLI_BIN_DIR}`);
|
|
11
|
+
mkdirSync(TUNLI_BIN_DIR, { recursive: true });
|
|
12
|
+
const downloadSuccess = await downloadBinaryUpdate((res) => {
|
|
13
|
+
switch (res.status) {
|
|
14
|
+
case 'progress':
|
|
15
|
+
process.stdout.write(`\rSetup: ${res.message}`);
|
|
16
|
+
break;
|
|
17
|
+
case 'success':
|
|
18
|
+
process.stdout.write('\nSetup: Download completed successfully.\n');
|
|
19
|
+
logDebug('Setup: Binary transfer finished.');
|
|
20
|
+
break;
|
|
21
|
+
case 'failed':
|
|
22
|
+
process.stderr.write(`\nSetup: Installation failed. Reason: ${res.reason}\n`);
|
|
23
|
+
logDebug(`Setup: Failure during download: ${res.reason}`);
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
if (downloadSuccess) {
|
|
28
|
+
logDebug('Initial setup: Binary downloaded. Moving to destination...');
|
|
29
|
+
renameSync(TUNLI_BIN_NEW_PATH, TUNLI_BIN_PATH);
|
|
30
|
+
chmodSync(TUNLI_BIN_PATH, 0o755);
|
|
31
|
+
logDebug('Initial setup: Binary installed and permissions set.');
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const errorMsg = 'Initial setup: Binary download failed.';
|
|
35
|
+
logDebug(errorMsg);
|
|
36
|
+
console.error(errorMsg);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const onBeforeRestart = async () => {
|
|
41
|
+
logDebug('Lifecycle: Preparing for restart...');
|
|
42
|
+
if (existsSync(TUNLI_BIN_NEW_PATH)) {
|
|
43
|
+
logDebug('Lifecycle: New update detected. Applying update before restart.');
|
|
44
|
+
await applyUpdate();
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
logDebug('Lifecycle: No pending updates found. Performing clean restart.');
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
logDebug(`Lifecycle: Launching child process: ${TUNLI_BIN_PATH}`);
|
|
51
|
+
const exitCode = await proxyChildProcess(TUNLI_BIN_PATH, process.argv.slice(2), {
|
|
52
|
+
sea: true,
|
|
53
|
+
onBeforeRestart,
|
|
54
|
+
});
|
|
55
|
+
setCursorVisibility(true);
|
|
56
|
+
process.exit(exitCode ?? 0);
|
|
57
|
+
//# sourceMappingURL=launcher-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launcher-main.js","sourceRoot":"","sources":["../src/launcher-main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,SAAS,CAAA;AACpE,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAC,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAC,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAE5C,gEAAgE;AAChE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;IAEhC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAChD,QAAQ,CAAC,+CAA+C,aAAa,EAAE,CAAC,CAAA;IACxE,SAAS,CAAC,aAAa,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;IAE3C,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAAC,CAAC,GAAG,EAAE,EAAE;QACzD,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,UAAU;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,SAAS;gBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACpE,QAAQ,CAAC,kCAAkC,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,QAAQ;gBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;gBAC9E,QAAQ,CAAC,mCAAmC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1D,MAAM;QACV,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,eAAe,EAAE,CAAC;QACpB,QAAQ,CAAC,4DAA4D,CAAC,CAAA;QACtE,UAAU,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAA;QAC9C,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;QAChC,QAAQ,CAAC,sDAAsD,CAAC,CAAA;IAClE,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,wCAAwC,CAAA;QACzD,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;IACjC,QAAQ,CAAC,qCAAqC,CAAC,CAAA;IAE/C,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnC,QAAQ,CAAC,iEAAiE,CAAC,CAAA;QAC3E,MAAM,WAAW,EAAE,CAAA;IACrB,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,gEAAgE,CAAC,CAAA;IAC5E,CAAC;AACH,CAAC,CAAA;AAED,QAAQ,CAAC,uCAAuC,cAAc,EAAE,CAAC,CAAC;AAClE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IAC9E,GAAG,EAAE,IAAI;IACT,eAAe;CAChB,CAAC,CAAA;AAEF,mBAAmB,CAAC,IAAI,CAAC,CAAA;AACzB,OAAO,CAAC,IAAI,CAAE,QAA0B,IAAI,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applyUpdate.d.ts","sourceRoot":"","sources":["../../../src/lib/Flow/applyUpdate.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,IAAI,CAgBtD,CAAA;AAED,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAYhD,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { renameSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { RESTART_DUMP_FILEPATH, TUNLI_BIN_NEW_PATH, TUNLI_BIN_PATH } from '#lib/defs';
|
|
3
|
+
import { DaemonClient } from '#daemon/DaemonClient';
|
|
4
|
+
import { logDebug } from "#logger/logger";
|
|
5
|
+
export const dumpAndStopDaemon = async () => {
|
|
6
|
+
if (!await DaemonClient.isRunning())
|
|
7
|
+
return;
|
|
8
|
+
logDebug('Daemon is active. Requesting tunnel dump...');
|
|
9
|
+
const response = await new DaemonClient().send({ type: 'dump' });
|
|
10
|
+
if (response.type === 'dump' && response.tunnels.length > 0) {
|
|
11
|
+
logDebug(`Dump received. Saving ${response.tunnels.length} tunnels to cache.`);
|
|
12
|
+
writeFileSync(RESTART_DUMP_FILEPATH, JSON.stringify(response.tunnels));
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
logDebug('Dump received, but no active tunnels found.');
|
|
16
|
+
}
|
|
17
|
+
logDebug('Stopping daemon...');
|
|
18
|
+
await DaemonClient.stop();
|
|
19
|
+
logDebug('Daemon stopped successfully.');
|
|
20
|
+
};
|
|
21
|
+
export const applyUpdate = async () => {
|
|
22
|
+
logDebug('Update process: Checking daemon status...');
|
|
23
|
+
await dumpAndStopDaemon();
|
|
24
|
+
logDebug(`Replacing binary: ${TUNLI_BIN_NEW_PATH} -> ${TUNLI_BIN_PATH}`);
|
|
25
|
+
try {
|
|
26
|
+
renameSync(TUNLI_BIN_NEW_PATH, TUNLI_BIN_PATH);
|
|
27
|
+
logDebug('Update applied: Binary swapped successfully.');
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
logDebug(`Update failed during rename: ${error?.message ? error.message : String(error)}`);
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=applyUpdate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applyUpdate.js","sourceRoot":"","sources":["../../../src/lib/Flow/applyUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AACjD,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAE,cAAc,EAAC,MAAM,WAAW,CAAA;AACnF,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,IAAmB,EAAE;IACzD,IAAI,CAAC,MAAM,YAAY,CAAC,SAAS,EAAE;QAAE,OAAM;IAE3C,QAAQ,CAAC,6CAA6C,CAAC,CAAA;IACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,YAAY,EAAE,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAA;IAE9D,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,QAAQ,CAAC,yBAAyB,QAAQ,CAAC,OAAO,CAAC,MAAM,oBAAoB,CAAC,CAAA;QAC9E,aAAa,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;IACxE,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,6CAA6C,CAAC,CAAA;IACzD,CAAC;IAED,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAC9B,MAAM,YAAY,CAAC,IAAI,EAAE,CAAA;IACzB,QAAQ,CAAC,8BAA8B,CAAC,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;IACnD,QAAQ,CAAC,2CAA2C,CAAC,CAAA;IACrD,MAAM,iBAAiB,EAAE,CAAA;IAEzB,QAAQ,CAAC,qBAAqB,kBAAkB,OAAO,cAAc,EAAE,CAAC,CAAA;IACxE,IAAI,CAAC;QACH,UAAU,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAA;QAC9C,QAAQ,CAAC,8CAA8C,CAAC,CAAA;IAC1D,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAQ,CAAC,gCAAgC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC1F,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"downloadBinaryUpdate.d.ts","sourceRoot":"","sources":["../../../src/lib/Flow/downloadBinaryUpdate.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAOjD,eAAO,MAAM,oBAAoB,GAAU,YAAY,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,KAAG,OAAO,CAAC,OAAO,CA2CtG,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { exec } from 'node:child_process';
|
|
2
|
+
import { createWriteStream, mkdirSync } from 'node:fs';
|
|
3
|
+
import { chmod, copyFile, unlink } from 'node:fs/promises';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { pipeline } from 'node:stream/promises';
|
|
7
|
+
import { Readable } from 'node:stream';
|
|
8
|
+
import { RELEASE_DOWNLOAD_BASE_URL, TUNLI_BIN_DIR, TUNLI_BIN_NEW_PATH } from '#lib/defs';
|
|
9
|
+
const PLATFORM_ASSET = {
|
|
10
|
+
linux: 'tunli-main-linux.tar.gz',
|
|
11
|
+
darwin: 'tunli-main-macos.tar.gz',
|
|
12
|
+
};
|
|
13
|
+
export const downloadBinaryUpdate = async (onComplete) => {
|
|
14
|
+
const asset = PLATFORM_ASSET[process.platform];
|
|
15
|
+
if (!asset) {
|
|
16
|
+
onComplete({ status: 'failed', reason: `Unsupported platform: ${process.platform}` });
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
const url = `${RELEASE_DOWNLOAD_BASE_URL}/${asset}`;
|
|
20
|
+
const tmpTar = join(tmpdir(), asset);
|
|
21
|
+
const tmpBin = join(tmpdir(), 'tunli-main');
|
|
22
|
+
const cleanup = async () => {
|
|
23
|
+
await unlink(tmpTar).catch(() => undefined);
|
|
24
|
+
await unlink(tmpBin).catch(() => undefined);
|
|
25
|
+
};
|
|
26
|
+
try {
|
|
27
|
+
onComplete({ status: 'progress', message: 'Downloading...' });
|
|
28
|
+
const response = await fetch(url);
|
|
29
|
+
if (!response.ok || !response.body)
|
|
30
|
+
throw new Error(`Download failed: ${response.status}`);
|
|
31
|
+
await pipeline(Readable.fromWeb(response.body), createWriteStream(tmpTar));
|
|
32
|
+
onComplete({ status: 'progress', message: 'Extracting...' });
|
|
33
|
+
await new Promise((resolve, reject) => {
|
|
34
|
+
exec(`tar -xzf "${tmpTar}" -C "${tmpdir()}"`, err => err ? reject(err) : resolve());
|
|
35
|
+
});
|
|
36
|
+
onComplete({ status: 'progress', message: 'Preparing...' });
|
|
37
|
+
await chmod(tmpBin, 0o755).catch((e) => {
|
|
38
|
+
if (e.code === 'ENOENT')
|
|
39
|
+
throw new Error('Extracted binary not found — the release archive may be corrupted');
|
|
40
|
+
throw e;
|
|
41
|
+
});
|
|
42
|
+
mkdirSync(TUNLI_BIN_DIR, { recursive: true });
|
|
43
|
+
await copyFile(tmpBin, TUNLI_BIN_NEW_PATH);
|
|
44
|
+
await cleanup();
|
|
45
|
+
onComplete({ status: 'success' });
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
await cleanup();
|
|
50
|
+
onComplete({ status: 'failed', reason: e instanceof Error ? e.message : String(e) });
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=downloadBinaryUpdate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"downloadBinaryUpdate.js","sourceRoot":"","sources":["../../../src/lib/Flow/downloadBinaryUpdate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLatestVersion.d.ts","sourceRoot":"","sources":["../../../src/lib/Flow/getLatestVersion.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,MAAM,GAAG,KAAK,CAS/D,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const getLatestVersion = async () => {
|
|
2
|
+
try {
|
|
3
|
+
const response = await fetch('https://registry.npmjs.org/-/package/tunli/dist-tags');
|
|
4
|
+
if (!response.ok)
|
|
5
|
+
return false;
|
|
6
|
+
const data = await response.json();
|
|
7
|
+
return data.latest ?? false;
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=getLatestVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLatestVersion.js","sourceRoot":"","sources":["../../../src/lib/Flow/getLatestVersion.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAA6B,EAAE;IAClE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,sDAAsD,CAAC,CAAA;QACpF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,KAAK,CAAA;QAC9B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAiB,CAAA;QACjD,OAAO,IAAI,CAAC,MAAM,IAAI,KAAK,CAAA;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const PING_INTERVAL = 5000;
|
|
2
|
+
export declare const CHECK_FOR_UPDATES = true;
|
|
3
|
+
export declare const DEFAULT_API_SERVER_URL = "https://api.tunli.app";
|
|
4
|
+
export declare const RELEASE_DOWNLOAD_BASE_URL = "https://github.com/tunlijs/tunli-client/releases/latest/download";
|
|
5
|
+
export declare const CONFIG_DIR_NAME = ".tunli";
|
|
6
|
+
export declare const GLOBAL_CONFIG_DIR: string;
|
|
7
|
+
export declare const GLOBAL_CONFIG_FILEPATH: string;
|
|
8
|
+
export declare const LOCAL_CONFIG_FILEPATH: string;
|
|
9
|
+
export declare const DEFAULT_SERVER_NAME = "tunli.app";
|
|
10
|
+
export declare const DEFAULT_PROFILE_NAME = "default";
|
|
11
|
+
export declare const LOCAL_CONFIG_LOOKUP_FILES: string[];
|
|
12
|
+
export declare const FOUND_LOCAL_CONFIG_FILEPATH: string | undefined;
|
|
13
|
+
export declare const DAEMON_SOCKET_PATH: string;
|
|
14
|
+
export declare const TUNLI_BIN_DIR: string;
|
|
15
|
+
export declare const TUNLI_BIN_PATH: string;
|
|
16
|
+
export declare const TUNLI_BIN_NEW_PATH: string;
|
|
17
|
+
export declare const RESTART_DUMP_FILEPATH: string;
|
|
18
|
+
//# sourceMappingURL=defs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../src/lib/defs.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,OAAO,CAAA;AAEjC,eAAO,MAAM,iBAAiB,OAAO,CAAA;AAErC,eAAO,MAAM,sBAAsB,0BAA0B,CAAA;AAE7D,eAAO,MAAM,yBAAyB,qEAAqE,CAAA;AAE3G,eAAO,MAAM,eAAe,WAAW,CAAA;AAEvC,eAAO,MAAM,iBAAiB,QAAsC,CAAC;AAErE,eAAO,MAAM,sBAAsB,QAA4C,CAAA;AAE/E,eAAO,MAAM,qBAAqB,QAAyD,CAAA;AAE3F,eAAO,MAAM,mBAAmB,cAAc,CAAA;AAC9C,eAAO,MAAM,oBAAoB,YAAY,CAAA;AAE7C,eAAO,MAAM,yBAAyB,UAalC,CAAC;AAEL,eAAO,MAAM,2BAA2B,oBAA2D,CAAA;AAEnG,eAAO,MAAM,kBAAkB,QAA4C,CAAA;AAE3E,eAAO,MAAM,aAAa,QAAoC,CAAA;AAC9D,eAAO,MAAM,cAAc,QAAuC,CAAA;AAClE,eAAO,MAAM,kBAAkB,QAA8C,CAAA;AAC7E,eAAO,MAAM,qBAAqB,QAA0C,CAAA"}
|
package/dist/lib/defs.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { relative, resolve } from "path";
|
|
2
|
+
import { homedir } from "os";
|
|
3
|
+
import { existsSync } from "fs";
|
|
4
|
+
export const PING_INTERVAL = 5000;
|
|
5
|
+
export const CHECK_FOR_UPDATES = true;
|
|
6
|
+
export const DEFAULT_API_SERVER_URL = 'https://api.tunli.app';
|
|
7
|
+
export const RELEASE_DOWNLOAD_BASE_URL = 'https://github.com/tunlijs/tunli-client/releases/latest/download';
|
|
8
|
+
export const CONFIG_DIR_NAME = '.tunli';
|
|
9
|
+
export const GLOBAL_CONFIG_DIR = resolve(homedir(), CONFIG_DIR_NAME);
|
|
10
|
+
export const GLOBAL_CONFIG_FILEPATH = resolve(GLOBAL_CONFIG_DIR, `config.json`);
|
|
11
|
+
export const LOCAL_CONFIG_FILEPATH = resolve(process.cwd(), CONFIG_DIR_NAME, `config.json`);
|
|
12
|
+
export const DEFAULT_SERVER_NAME = 'tunli.app';
|
|
13
|
+
export const DEFAULT_PROFILE_NAME = 'default';
|
|
14
|
+
export const LOCAL_CONFIG_LOOKUP_FILES = (() => {
|
|
15
|
+
const localLookups = [];
|
|
16
|
+
const localLookupDirParts = process.cwd().split('/');
|
|
17
|
+
const home = homedir();
|
|
18
|
+
do {
|
|
19
|
+
const lookupDir = resolve(localLookupDirParts.length === 1 ? '/' : localLookupDirParts.join('/'));
|
|
20
|
+
const rel = relative(home, lookupDir);
|
|
21
|
+
if (rel.startsWith('..') || !rel)
|
|
22
|
+
break;
|
|
23
|
+
localLookups.push(resolve(lookupDir, CONFIG_DIR_NAME, `config.json`));
|
|
24
|
+
} while (localLookupDirParts.pop() !== undefined && localLookupDirParts.length);
|
|
25
|
+
return localLookups;
|
|
26
|
+
})();
|
|
27
|
+
export const FOUND_LOCAL_CONFIG_FILEPATH = LOCAL_CONFIG_LOOKUP_FILES.find(file => existsSync(file));
|
|
28
|
+
export const DAEMON_SOCKET_PATH = resolve(GLOBAL_CONFIG_DIR, 'daemon.sock');
|
|
29
|
+
export const TUNLI_BIN_DIR = resolve(GLOBAL_CONFIG_DIR, 'bin');
|
|
30
|
+
export const TUNLI_BIN_PATH = resolve(TUNLI_BIN_DIR, 'tunli-main');
|
|
31
|
+
export const TUNLI_BIN_NEW_PATH = resolve(TUNLI_BIN_DIR, 'tunli-main.update');
|
|
32
|
+
export const RESTART_DUMP_FILEPATH = resolve(GLOBAL_CONFIG_DIR, 'dump.json');
|
|
33
|
+
//# sourceMappingURL=defs.js.map
|