From 53e0a2e5e24dedc657a6e8ed0917de89f7c1bf68 Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Tue, 30 Oct 2018 15:11:16 +0100 Subject: [PATCH] Add support for SOCKS5 proxy protocol --- src/Cedar/CM.c | 10 + src/Cedar/Cedar.h | 3 +- src/Cedar/Command.c | 162 +++++++++++++- src/Cedar/Command.h | 2 + src/Cedar/Protocol.c | 379 +++++++++++++++++++++++++++++--- src/Cedar/Protocol.h | 1 + src/Cedar/SM.c | 6 + src/Cedar/Wpc.c | 9 + src/PenCore/PenCore.rc | 49 +++-- src/PenCore/resource.h | 1 + src/bin/hamcore/strtable_cn.stb | 52 +++-- src/bin/hamcore/strtable_en.stb | 54 +++-- src/bin/hamcore/strtable_ja.stb | 54 +++-- src/bin/hamcore/strtable_ko.stb | 50 +++-- src/bin/hamcore/strtable_ru.stb | 54 +++-- src/bin/hamcore/strtable_tw.stb | 52 +++-- 16 files changed, 791 insertions(+), 147 deletions(-) diff --git a/src/Cedar/CM.c b/src/Cedar/CM.c index 0afc23e3..634238ec 100644 --- a/src/Cedar/CM.c +++ b/src/Cedar/CM.c @@ -222,6 +222,7 @@ void CmProxyDlgSet(HWND hWnd, CLIENT_OPTION *o, CM_INTERNET_SETTING *setting) Check(hWnd, R_DIRECT_TCP, setting->ProxyType == PROXY_DIRECT); Check(hWnd, R_HTTPS, setting->ProxyType == PROXY_HTTP); Check(hWnd, R_SOCKS, setting->ProxyType == PROXY_SOCKS); + Check(hWnd, R_SOCKS5, setting->ProxyType == PROXY_SOCKS5); // Proxy Settings if(setting->ProxyType != PROXY_DIRECT) @@ -6906,6 +6907,10 @@ void CmEditAccountDlgUpdate(HWND hWnd, CM_ACCOUNT *a) { a->ClientOption->ProxyType = PROXY_SOCKS; } + if (IsChecked(hWnd, R_SOCKS5)) + { + a->ClientOption->ProxyType = PROXY_SOCKS5; + } // To validate the server certificate a->CheckServerCert = IsChecked(hWnd, R_CHECK_CERT); @@ -7344,6 +7349,7 @@ void CmEditAccountDlgInit(HWND hWnd, CM_ACCOUNT *a) Check(hWnd, R_DIRECT_TCP, a->ClientOption->ProxyType == PROXY_DIRECT); Check(hWnd, R_HTTPS, a->ClientOption->ProxyType == PROXY_HTTP); Check(hWnd, R_SOCKS, a->ClientOption->ProxyType == PROXY_SOCKS); + Check(hWnd, R_SOCKS5, a->ClientOption->ProxyType == PROXY_SOCKS5); // Verify the server certificate Check(hWnd, R_CHECK_CERT, a->CheckServerCert); @@ -8620,6 +8626,10 @@ void CmEditAccountDlgStartEnumHub(HWND hWnd, CM_ACCOUNT *a) { a->ClientOption->ProxyType = PROXY_SOCKS; } + if (IsChecked(hWnd, R_SOCKS5)) + { + a->ClientOption->ProxyType = PROXY_SOCKS5; + } CmEnumHubStart(hWnd, a->ClientOption); diff --git a/src/Cedar/Cedar.h b/src/Cedar/Cedar.h index afd2882c..cd8a206c 100644 --- a/src/Cedar/Cedar.h +++ b/src/Cedar/Cedar.h @@ -391,7 +391,8 @@ // Type of proxy #define PROXY_DIRECT 0 // Direct TCP connection #define PROXY_HTTP 1 // Connection via HTTP proxy server -#define PROXY_SOCKS 2 // Connection via SOCKS proxy server +#define PROXY_SOCKS 2 // Connection via SOCKS4 proxy server +#define PROXY_SOCKS5 3 // Connection via SOCKS5 proxy server // Direction of data flow #define TCP_BOTH 0 // Bi-directional diff --git a/src/Cedar/Command.c b/src/Cedar/Command.c index 4be5e311..37feafa1 100644 --- a/src/Cedar/Command.c +++ b/src/Cedar/Command.c @@ -3057,6 +3057,7 @@ void PcMain(PC *pc) {"AccountProxyNone", PcAccountProxyNone}, {"AccountProxyHttp", PcAccountProxyHttp}, {"AccountProxySocks", PcAccountProxySocks}, + {"AccountProxySocks5", PcAccountProxySocks5}, {"AccountServerCertEnable", PcAccountServerCertEnable}, {"AccountServerCertDisable", PcAccountServerCertDisable}, {"AccountRetryOnServerCertEnable", PcAccountRetryOnServerCertEnable}, @@ -4075,6 +4076,8 @@ wchar_t *GetProtocolName(UINT n) return _UU("PROTO_HTTP_PROXY"); case PROXY_SOCKS: return _UU("PROTO_SOCKS_PROXY"); + case PROXY_SOCKS5: + return _UU("PROTO_SOCKS5_PROXY"); } return _UU("PROTO_UNKNOWN"); @@ -5239,7 +5242,7 @@ UINT PcAccountProxyHttp(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) return ret; } -// Set the connection method of the connection settings to the SOCKS proxy server connection +// Set the connection method of the connection settings to the SOCKS4 proxy server connection UINT PcAccountProxySocks(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) { LIST *o; @@ -5276,7 +5279,7 @@ UINT PcAccountProxySocks(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) UINT port; // Data change - if (ParseHostPort(GetParamStr(o, "SERVER"), &host, &port, 8080)) + if (ParseHostPort(GetParamStr(o, "SERVER"), &host, &port, 1080)) { t.ClientOption->ProxyType = PROXY_SOCKS; StrCpy(t.ClientOption->ProxyName, sizeof(t.ClientOption->ProxyName), host); @@ -5311,6 +5314,78 @@ UINT PcAccountProxySocks(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) return ret; } +// Set the connection method of the connection settings to the SOCKS5 proxy server connection +UINT PcAccountProxySocks5(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) +{ + LIST *o; + PC *pc = (PC *)param; + UINT ret = ERR_NO_ERROR; + RPC_CLIENT_GET_ACCOUNT t; + // Parameter list that can be specified + PARAM args[] = + { + {"[name]", CmdPrompt, _UU("CMD_AccountCreate_Prompt_Name"), CmdEvalNotEmpty, NULL}, + {"SERVER", CmdPrompt, _UU("CMD_AccountProxyHttp_Prompt_Server"), CmdEvalHostAndPort, NULL}, + {"USERNAME", CmdPrompt, NULL, NULL, NULL}, + {"PASSWORD", CmdPrompt, NULL, NULL, NULL}, + }; + + // Get the parameter list + o = ParseCommandList(c, cmd_name, str, args, sizeof(args) / sizeof(args[0])); + if (o == NULL) + { + return ERR_INVALID_PARAMETER; + } + + // RPC call + Zero(&t, sizeof(t)); + + UniStrCpy(t.AccountName, sizeof(t.AccountName), GetParamUniStr(o, "[name]")); + + ret = CcGetAccount(pc->RemoteClient, &t); + + if (ret == ERR_NO_ERROR) + { + RPC_CLIENT_CREATE_ACCOUNT z; + char *host; + UINT port; + + // Data change + if (ParseHostPort(GetParamStr(o, "SERVER"), &host, &port, 1080)) + { + t.ClientOption->ProxyType = PROXY_SOCKS5; + StrCpy(t.ClientOption->ProxyName, sizeof(t.ClientOption->ProxyName), host); + t.ClientOption->ProxyPort = port; + StrCpy(t.ClientOption->ProxyUsername, sizeof(t.ClientOption->ProxyName), GetParamStr(o, "USERNAME")); + StrCpy(t.ClientOption->ProxyPassword, sizeof(t.ClientOption->ProxyName), GetParamStr(o, "PASSWORD")); + Free(host); + } + + Zero(&z, sizeof(z)); + z.CheckServerCert = t.CheckServerCert; + z.RetryOnServerCert = t.RetryOnServerCert; + z.ClientAuth = t.ClientAuth; + z.ClientOption = t.ClientOption; + z.ServerCert = t.ServerCert; + z.StartupAccount = t.StartupAccount; + + ret = CcSetAccount(pc->RemoteClient, &z); + } + + if (ret != ERR_NO_ERROR) + { + // Error has occurred + CmdPrintError(c, ret); + } + + CiFreeClientGetAccount(&t); + + // Release of the parameter list + FreeParamValueList(o); + + return ret; +} + // Enable validation option for server certificate of connection settings UINT PcAccountServerCertEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) { @@ -7403,6 +7478,7 @@ void PsMain(PS *ps) {"CascadeProxyNone", PsCascadeProxyNone}, {"CascadeProxyHttp", PsCascadeProxyHttp}, {"CascadeProxySocks", PsCascadeProxySocks}, + {"CascadeProxySocks5", PsCascadeProxySocks5}, {"CascadeServerCertEnable", PsCascadeServerCertEnable}, {"CascadeServerCertDisable", PsCascadeServerCertDisable}, {"CascadeServerCertSet", PsCascadeServerCertSet}, @@ -13644,7 +13720,7 @@ UINT PsCascadeProxyHttp(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) return 0; } -// Set the cascade connection method as the mode via SOCKS proxy server +// Set the cascade connection method as the mode via SOCKS4 proxy server UINT PsCascadeProxySocks(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) { LIST *o; @@ -13695,7 +13771,7 @@ UINT PsCascadeProxySocks(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) UINT port; // Data change - if (ParseHostPort(GetParamStr(o, "SERVER"), &host, &port, 8080)) + if (ParseHostPort(GetParamStr(o, "SERVER"), &host, &port, 1080)) { t.ClientOption->ProxyType = PROXY_SOCKS; StrCpy(t.ClientOption->ProxyName, sizeof(t.ClientOption->ProxyName), host); @@ -13722,6 +13798,84 @@ UINT PsCascadeProxySocks(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) return 0; } +// Set the cascade connection method as the mode via SOCKS5 proxy server +UINT PsCascadeProxySocks5(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) +{ + LIST *o; + PS *ps = (PS *)param; + UINT ret = 0; + RPC_CREATE_LINK t; + // Parameter list that can be specified + PARAM args[] = + { + // "name", prompt_proc, prompt_param, eval_proc, eval_param + {"[name]", CmdPrompt, _UU("CMD_CascadeCreate_Prompt_Name"), CmdEvalNotEmpty, NULL}, + {"SERVER", CmdPrompt, _UU("CMD_CascadeProxyHttp_Prompt_Server"), CmdEvalHostAndPort, NULL}, + {"USERNAME", NULL, NULL, NULL, NULL}, + {"PASSWORD", NULL, NULL, NULL, NULL}, + }; + + // If virtual HUB is not selected, it's an error + if (ps->HubName == NULL) + { + c->Write(c, _UU("CMD_Hub_Not_Selected")); + return ERR_INVALID_PARAMETER; + } + + o = ParseCommandList(c, cmd_name, str, args, sizeof(args) / sizeof(args[0])); + if (o == NULL) + { + return ERR_INVALID_PARAMETER; + } + + Zero(&t, sizeof(t)); + StrCpy(t.HubName, sizeof(t.HubName), ps->HubName); + t.ClientOption = ZeroMalloc(sizeof(CLIENT_OPTION)); + UniStrCpy(t.ClientOption->AccountName, sizeof(t.ClientOption->AccountName), GetParamUniStr(o, "[name]")); + + // RPC call + ret = ScGetLink(ps->Rpc, &t); + + if (ret != ERR_NO_ERROR) + { + // An error has occured + CmdPrintError(c, ret); + FreeParamValueList(o); + return ret; + } + else + { + char *host; + UINT port; + + // Data change + if (ParseHostPort(GetParamStr(o, "SERVER"), &host, &port, 1080)) + { + t.ClientOption->ProxyType = PROXY_SOCKS5; + StrCpy(t.ClientOption->ProxyName, sizeof(t.ClientOption->ProxyName), host); + t.ClientOption->ProxyPort = port; + StrCpy(t.ClientOption->ProxyUsername, sizeof(t.ClientOption->ProxyName), GetParamStr(o, "USERNAME")); + StrCpy(t.ClientOption->ProxyPassword, sizeof(t.ClientOption->ProxyName), GetParamStr(o, "PASSWORD")); + Free(host); + } + + ret = ScSetLink(ps->Rpc, &t); + if (ret != ERR_NO_ERROR) + { + // An error has occured + CmdPrintError(c, ret); + FreeParamValueList(o); + return ret; + } + + FreeRpcCreateLink(&t); + } + + FreeParamValueList(o); + + return 0; +} + // Enable the validation options for the server certificate of cascade connection UINT PsCascadeServerCertEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) { diff --git a/src/Cedar/Command.h b/src/Cedar/Command.h index 6ead4ed5..8358f8be 100644 --- a/src/Cedar/Command.h +++ b/src/Cedar/Command.h @@ -456,6 +456,7 @@ UINT PcAccountCompressDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *pa UINT PcAccountProxyNone(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); UINT PcAccountProxyHttp(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); UINT PcAccountProxySocks(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); +UINT PcAccountProxySocks5(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); UINT PcAccountServerCertEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); UINT PcAccountServerCertDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); UINT PcAccountRetryOnServerCertEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); @@ -593,6 +594,7 @@ UINT PsCascadeCompressDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *pa UINT PsCascadeProxyNone(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); UINT PsCascadeProxyHttp(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); UINT PsCascadeProxySocks(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); +UINT PsCascadeProxySocks5(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); UINT PsCascadeServerCertEnable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); UINT PsCascadeServerCertDisable(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); UINT PsCascadeServerCertSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param); diff --git a/src/Cedar/Protocol.c b/src/Cedar/Protocol.c index c73acdbb..5d2e9df7 100644 --- a/src/Cedar/Protocol.c +++ b/src/Cedar/Protocol.c @@ -6271,8 +6271,7 @@ SOCK *ClientConnectGetSocket(CONNECTION *c, bool additional_connect) { SOCK *s = NULL; CLIENT_OPTION *o; - char *host_for_direct_connection; - UINT port_for_direct_connection; + WPC_CONNECT w; wchar_t tmp[MAX_SIZE]; SESSION *sess; volatile bool *cancel_flag = NULL; @@ -6288,6 +6287,7 @@ SOCK *ClientConnectGetSocket(CONNECTION *c, bool additional_connect) } Zero(&ret_ip, sizeof(IP)); + Zero(&w, sizeof(w)); sess = c->Session; @@ -6323,21 +6323,26 @@ SOCK *ClientConnectGetSocket(CONNECTION *c, bool additional_connect) c->ServerPort = o->Port; } - host_for_direct_connection = c->ServerName; - port_for_direct_connection = c->ServerPort; + StrCpy(w.HostName, sizeof(w.HostName), c->ServerName); + w.Port = c->ServerPort; + StrCpy(w.ProxyHostName, sizeof(w.ProxyHostName), o->ProxyName); + w.ProxyPort = o->ProxyPort; + StrCpy(w.ProxyUsername, sizeof(w.ProxyUsername), o->ProxyUsername); + StrCpy(w.ProxyPassword, sizeof(w.ProxyPassword), o->ProxyPassword); switch (o->ProxyType) { case PROXY_DIRECT: // TCP/IP - UniFormat(tmp, sizeof(tmp), _UU("STATUS_4"), c->ServerName); + UniFormat(tmp, sizeof(tmp), _UU("STATUS_4"), w.HostName); PrintStatus(sess, tmp); + // Production job if (o->PortUDP == 0) { { // If additional_connect == false, enable trying to NAT-T connection // If additional_connect == true, follow the IsRUDPSession setting in this session - s = TcpIpConnectEx(host_for_direct_connection, port_for_direct_connection, + s = TcpIpConnectEx(w.HostName, w.Port, (bool *)cancel_flag, hWnd, &nat_t_err, (additional_connect ? (!is_additional_rudp_session) : false), true, &ret_ip); } @@ -6376,16 +6381,12 @@ SOCK *ClientConnectGetSocket(CONNECTION *c, bool additional_connect) break; case PROXY_HTTP: // HTTP Proxy - host_for_direct_connection = o->ProxyName; - port_for_direct_connection = o->ProxyPort; - - UniFormat(tmp, sizeof(tmp), _UU("STATUS_2"), c->ServerName, o->ProxyName); + UniFormat(tmp, sizeof(tmp), _UU("STATUS_2"), w.HostName, w.ProxyHostName); PrintStatus(sess, tmp); - // Proxy connection - s = ProxyConnectEx(c, host_for_direct_connection, port_for_direct_connection, - c->ServerName, c->ServerPort, o->ProxyUsername, o->ProxyPassword, + s = ProxyConnectEx(c, w.ProxyHostName, w.ProxyPort, + w.HostName, w.Port, w.ProxyUsername, w.ProxyPassword, additional_connect, (bool *)cancel_flag, hWnd); if (s == NULL) { @@ -6394,19 +6395,27 @@ SOCK *ClientConnectGetSocket(CONNECTION *c, bool additional_connect) } break; - case PROXY_SOCKS: // SOCKS Proxy - host_for_direct_connection = o->ProxyName; - - port_for_direct_connection = o->ProxyPort; - - UniFormat(tmp, sizeof(tmp), _UU("STATUS_2"), c->ServerName, o->ProxyName); + case PROXY_SOCKS: // SOCKS4 Proxy + UniFormat(tmp, sizeof(tmp), _UU("STATUS_2"), w.HostName, w.ProxyHostName); PrintStatus(sess, tmp); + // SOCKS4 connection + s = SocksConnectEx2(c, w.ProxyHostName, w.ProxyPort, + w.HostName, w.Port, w.ProxyUsername, additional_connect, (bool *)cancel_flag, + hWnd, 0, &ret_ip); + if (s == NULL) + { + // Connection failure + return NULL; + } + break; - // SOCKS connection - s = SocksConnectEx2(c, host_for_direct_connection, port_for_direct_connection, - c->ServerName, c->ServerPort, o->ProxyUsername, - additional_connect, (bool *)cancel_flag, hWnd, 0, &ret_ip); + case PROXY_SOCKS5: // SOCKS5 Proxy + UniFormat(tmp, sizeof(tmp), _UU("STATUS_2"), w.HostName, w.ProxyHostName); + PrintStatus(sess, tmp); + + // SOCKS5 connection + s = Socks5Connect(c, &w, additional_connect, (bool *)cancel_flag, hWnd, 0, &ret_ip); if (s == NULL) { // Connection failure @@ -6426,7 +6435,8 @@ SOCK *ClientConnectGetSocket(CONNECTION *c, bool additional_connect) // Keep a note of the IP address if (additional_connect == false || IsZeroIP(&s->RemoteIP)) { - if (((s->IsRUDPSocket || s->IPv6) && IsZeroIP(&s->RemoteIP) == false && o->ProxyType == PROXY_DIRECT) || GetIP(&c->Session->ServerIP, host_for_direct_connection) == false) + char *hostname = o->ProxyType == PROXY_DIRECT ? w.HostName : w.ProxyHostName; + if (((s->IsRUDPSocket || s->IPv6) && IsZeroIP(&s->RemoteIP) == false && o->ProxyType == PROXY_DIRECT) || GetIP(&c->Session->ServerIP, hostname) == false) { Copy(&c->Session->ServerIP, &s->RemoteIP, sizeof(IP)); } @@ -6449,7 +6459,7 @@ SOCK *ClientConnectGetSocket(CONNECTION *c, bool additional_connect) return s; } -// Connect via SOCKS +// Connect via SOCKS4 SOCK *SocksConnect(CONNECTION *c, char *proxy_host_name, UINT proxy_port, char *server_host_name, UINT server_port, char *username, bool additional_connect) @@ -6547,7 +6557,7 @@ SOCK *SocksConnectEx2(CONNECTION *c, char *proxy_host_name, UINT proxy_port, return s; } -// Receive a SOCKS response packet +// Receive a SOCKS4 response packet bool SocksRecvResponsePacket(CONNECTION *c, SOCK *s) { BUF *b; @@ -6599,7 +6609,7 @@ bool SocksRecvResponsePacket(CONNECTION *c, SOCK *s) } } -// Send a SOCKS request packet +// Send a SOCKS4 request packet bool SocksSendRequestPacket(CONNECTION *c, SOCK *s, UINT dest_port, IP *dest_ip, char *userid) { BUF *b; @@ -6639,6 +6649,321 @@ bool SocksSendRequestPacket(CONNECTION *c, SOCK *s, UINT dest_port, IP *dest_ip, return ret; } +// Connect via SOCKS5 (RFC1928) +SOCK *Socks5Connect(CONNECTION *c, WPC_CONNECT *w, bool additional_connect, bool *cancel_flag, void *hWnd, UINT timeout, IP *ret_ip) +{ + UCHAR tmp, recv_buf[2], *recv_buf_final; + USHORT port; + bool ret; + SOCK *s; + BUF *b; + IP ip; + // Validate arguments + if (c == NULL || w == NULL || w->Port == 0 || w->ProxyPort == 0 || IsEmptyStr(w->HostName) || IsEmptyStr(w->ProxyHostName)) + { + if (c != NULL) + { + c->Err = ERR_PROXY_CONNECT_FAILED; + } + return NULL; + } + + if (c->Halt) + { + // Stop + c->Err = ERR_USER_CANCEL; + return NULL; + } + + // Open TCP connection to the proxy server + s = TcpConnectEx3(w->ProxyHostName, w->ProxyPort, timeout, cancel_flag, hWnd, true, NULL, false, ret_ip); + if (s == NULL) + { + // Failure + c->Err = ERR_PROXY_CONNECT_FAILED; + return NULL; + } + + // Set the timeout setting + SetTimeout(s, MIN(CONNECTING_TIMEOUT_PROXY, (timeout == 0 ? INFINITE : timeout))); + + if (additional_connect == false) + { + c->FirstSock = s; + } + + // +----+----------+----------+ + // |VER | NMETHODS | METHODS | + // +----+----------+----------+ + // | 1 | 1 | 1 to 255 | + // +----+----------+----------+ + // + // X'00' NO AUTHENTICATION REQUIRED + // X'01' GSSAPI + // X'02' USERNAME/PASSWORD + // X'03' to X'7F' IANA ASSIGNED + // X'80' to X'FE' RESERVED FOR PRIVATE METHODS + // X'FF' NO ACCEPTABLE METHOD + + b = NewBuf(); + tmp = 5; + WriteBuf(b, &tmp, sizeof(tmp)); // SOCKS version + tmp = 2; + WriteBuf(b, &tmp, sizeof(tmp)); // Number of supported methods + tmp = 0; + WriteBuf(b, &tmp, sizeof(tmp)); // No authentication + tmp = 2; + WriteBuf(b, &tmp, sizeof(tmp)); // Username/password + + ret = SendAll(s, b->Buf, b->Size, false); + FreeBuf(b); + + if (ret == false) + { + Debug("Socks5Connect(): [Phase 1] Failed to send initial data to the server.\n"); + c->Err = ERR_DISCONNECTED; + goto failure; + } + + // +----+--------+ + // |VER | METHOD | + // +----+--------+ + // | 1 | 1 | + // +----+--------+ + + if (RecvAll(s, recv_buf, sizeof(recv_buf), false) == false) + { + Debug("Socks5Connect(): [Phase 1] Failed to receive initial data response from the server.\n"); + c->Err = ERR_DISCONNECTED; + goto failure; + } + + if (recv_buf[0] != 5) + { + Debug("Socks5Connect(): [Phase 1] Unmatching version: %u.\n", recv_buf[0]); + c->Err = ERR_PROXY_ERROR; + goto failure; + } + + // Username/password authentication (RFC1929) + if (recv_buf[1] == 2) + { + // +----+------+----------+------+----------+ + // |VER | ULEN | UNAME | PLEN | PASSWD | + // +----+------+----------+------+----------+ + // | 1 | 1 | 1 to 255 | 1 | 1 to 255 | + // +----+------+----------+------+----------+ + + b = NewBuf(); + tmp = 1; + WriteBuf(b, &tmp, sizeof(tmp)); // Authentication protocol version + tmp = StrLen(w->ProxyUsername); + WriteBuf(b, &tmp, sizeof(tmp)); // Username length + WriteBuf(b, w->ProxyUsername, tmp); // Username + tmp = StrLen(w->ProxyPassword); + WriteBuf(b, &tmp, sizeof(tmp)); // Password length + WriteBuf(b, w->ProxyPassword, tmp); // Password + + ret = SendAll(s, b->Buf, b->Size, false); + FreeBuf(b); + + if (ret == false) + { + Debug("Socks5Connect(): [Phase 1] Failed to send authentication data to the server.\n"); + c->Err = ERR_DISCONNECTED; + goto failure; + } + + // +----+--------+ + // |VER | STATUS | + // +----+--------+ + // | 1 | 1 | + // +----+--------+ + + if (RecvAll(s, recv_buf, sizeof(recv_buf), false) == false) + { + Debug("Socks5Connect(): [Phase 1] Failed to receive authentication data response from the server.\n"); + c->Err = ERR_DISCONNECTED; + goto failure; + } + + if (recv_buf[1] != 0) + { + Debug("Socks5Connect(): [Phase 1] Authentication failure error code sent by the server: %u.\n", recv_buf[1]); + c->Err = ERR_PROXY_AUTH_FAILED; + goto failure; + } + } + + // +----+-----+-------+------+----------+----------+ + // |VER | CMD | RSV | ATYP | DST.ADDR | DST.PORT | + // +----+-----+-------+------+----------+----------+ + // | 1 | 1 | X'00' | 1 | Variable | 2 | + // +----+-----+-------+------+----------+----------+ + // + // VER protocol version: X'05' + // CMD + // CONNECT X'01' + // BIND X'02' + // UDP ASSOCIATE X'03' + // RSV RESERVED + // ATYP address type of following address + // IP V4 address X'01' + // DOMAINNAME X'03' + // IP V6 address X'04' + // DST.ADDR desired destination address + // DST.PORT desired destination port in network octet order + + // Prepare data to send + b = NewBuf(); + tmp = 5; + WriteBuf(b, &tmp, sizeof(tmp)); // SOCKS version + tmp = 1; + WriteBuf(b, &tmp, sizeof(tmp)); // Command + tmp = 0; + WriteBuf(b, &tmp, sizeof(tmp)); // Reserved byte + + // Convert the hostname to an IP structure (if it's an IP address) + StrToIP(&ip, w->HostName); + + // If the IP structure doesn't contain an IP address, it means that the string is an hostname + if (IsZeroIp(&ip)) + { + UCHAR dest_length = StrLen(w->HostName); + tmp = 3; + WriteBuf(b, &tmp, sizeof(tmp)); // Destination type (hostname) + WriteBuf(b, &dest_length, sizeof(dest_length)); // Destination hostname length + WriteBuf(b, w->HostName, dest_length); // Destination hostname + } + else + { + if (IsIP6(&ip)) + { + tmp = 4; + WriteBuf(b, &tmp, sizeof(tmp)); // Destination type (IPv6) + WriteBuf(b, ip.ipv6_addr, sizeof(ip.ipv6_addr)); // Destination IPv6 address + } + else + { + tmp = 1; + WriteBuf(b, &tmp, sizeof(tmp)); // Destination type (IPv4) + WriteBuf(b, ip.addr, sizeof(ip.addr)); // Destination IPv4 address + } + } + + // Convert the port in network octet order + port = Endian16((USHORT)w->Port); + WriteBuf(b, &port, sizeof(port)); // Destination port + + // Send data + ret = SendAll(s, b->Buf, b->Size, false); + FreeBuf(b); + + if (ret == false) + { + Debug("Socks5Connect(): [Phase 2] Failed to send data to the server.\n"); + c->Err = ERR_DISCONNECTED; + goto failure; + } + + // +----+-----+-------+------+----------+----------+ + // |VER | REP | RSV | ATYP | BND.ADDR | BND.PORT | + // +----+-----+-------+------+----------+----------+ + // | 1 | 1 | X’00’ | 1 | Variable | 2 | + // +----+-----+-------+------+----------+----------+ + // + // VER protocol version: X’05’ + // REP Reply field: + // X’00’ succeeded + // X’01’ general SOCKS server failure + // X’02’ connection not allowed by ruleset + // X’03’ Network unreachable + // X’04’ Host unreachable + // X’05’ Connection refused + // X’06’ TTL expired + // X’07’ Command not supported + // X’08’ Address type not supported + // X’09’ to X’FF’ unassigned + + // The packet sent by the server should always have the same size as the one we sent to it. + // However, there are some implementations which send fixed values (aside from the first 2 bytes). + // In order to support such implementations, we read the first 4 bytes in order to know the address type before trying to read the rest of the packet. + recv_buf_final = Malloc(4); + + if (RecvAll(s, recv_buf_final, 4, false) == false) + { + Free(recv_buf_final); + Debug("Socks5Connect(): [Phase 2] Failed to receive response from the server.\n"); + c->Err = ERR_DISCONNECTED; + goto failure; + } + + // We only need the first two bytes (version and response code), but we have to read the entire packet from the socket + recv_buf[0] = recv_buf_final[0]; + recv_buf[1] = recv_buf_final[1]; + + // We receive the rest of the packet by knowing the size according to the address type + switch (recv_buf_final[3]) + { + case 1: + // IPv4 + recv_buf_final = ReAlloc(recv_buf_final, 6); // 4 bytes (IPv4) + 2 bytes (port) + ret = RecvAll(s, recv_buf_final, 6, false); + break; + case 4: + // IPv6 + recv_buf_final = ReAlloc(recv_buf_final, 18); // 4 bytes (IPv4) + 2 bytes (port) + ret = RecvAll(s, recv_buf_final, 18, false); + break; + case 3: + // Hostname + ret = RecvAll(s, &tmp, 1, false); + if (ret == true) + { + recv_buf_final = ReAlloc(recv_buf_final, tmp + 2); // Hostname length + 2 bytes (port) + ret = RecvAll(s, recv_buf_final, tmp + 2, false); + } + } + + Free(recv_buf_final); + + if (ret == false) + { + Debug("Socks5Connect(): [Phase 2] Malformed response received from the server.\n"); + c->Err = ERR_DISCONNECTED; + goto failure; + } + + if (recv_buf[0] != 5) + { + Debug("Socks5Connect(): [Phase 2] Unmatching version: %u.\n", recv_buf_final[0]); + c->Err = ERR_PROXY_ERROR; + goto failure; + } + + if (recv_buf[1] == 0) + { + // Success + SetTimeout(s, INFINITE); + return s; + } + else + { + Debug("Socks5Connect(): [Phase 2] Connection failed with error: %u\n", recv_buf[1]); + c->Err = ERR_PROXY_ERROR; + } + +failure: + if (additional_connect == false) + { + c->FirstSock = NULL; + } + + Disconnect(s); + ReleaseSock(s); + return NULL; +} + // Connect through a proxy SOCK *ProxyConnect(CONNECTION *c, char *proxy_host_name, UINT proxy_port, char *server_host_name, UINT server_port, diff --git a/src/Cedar/Protocol.h b/src/Cedar/Protocol.h index 2fd47973..bf586ede 100644 --- a/src/Cedar/Protocol.h +++ b/src/Cedar/Protocol.h @@ -283,6 +283,7 @@ SOCK *SocksConnectEx2(CONNECTION *c, char *proxy_host_name, UINT proxy_port, bool *cancel_flag, void *hWnd, UINT timeout, IP *ret_ip); bool SocksSendRequestPacket(CONNECTION *c, SOCK *s, UINT dest_port, IP *dest_ip, char *userid); bool SocksRecvResponsePacket(CONNECTION *c, SOCK *s); +SOCK *Socks5Connect(CONNECTION *c, WPC_CONNECT *w, bool additional_connect, bool *cancel_flag, void *hWnd, UINT timeout, IP *ret_ip); void CreateNodeInfo(NODE_INFO *info, CONNECTION *c); UINT SecureSign(SECURE_SIGN *sign, UINT device_id, char *pin); void ClientUploadNoop(CONNECTION *c); diff --git a/src/Cedar/SM.c b/src/Cedar/SM.c index 7e7fafe6..274c7af1 100644 --- a/src/Cedar/SM.c +++ b/src/Cedar/SM.c @@ -160,6 +160,7 @@ void SmProxyDlgInit(HWND hWnd, INTERNET_SETTING *t) Check(hWnd, R_DIRECT_TCP, t->ProxyType == PROXY_DIRECT); Check(hWnd, R_HTTPS, t->ProxyType == PROXY_HTTP); Check(hWnd, R_SOCKS, t->ProxyType == PROXY_SOCKS); + Check(hWnd, R_SOCKS5, t->ProxyType == PROXY_SOCKS5); SmProxyDlgUpdate(hWnd, t); } @@ -226,6 +227,10 @@ UINT SmProxyDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param) { t->ProxyType = PROXY_SOCKS; } + else if (IsChecked(hWnd, R_SOCKS5)) + { + t->ProxyType = PROXY_SOCKS5; + } else { t->ProxyType = PROXY_DIRECT; @@ -19434,6 +19439,7 @@ void SmEditSettingDlgInit(HWND hWnd, SM_EDIT_SETTING *p) Check(hWnd, R_DIRECT_TCP, s->ClientOption.ProxyType == PROXY_DIRECT); Check(hWnd, R_HTTPS, s->ClientOption.ProxyType == PROXY_HTTP); Check(hWnd, R_SOCKS, s->ClientOption.ProxyType == PROXY_SOCKS); + Check(hWnd, R_SOCKS5, s->ClientOption.ProxyType == PROXY_SOCKS5); // Management mode setting Check(hWnd, R_SERVER_ADMIN, s->ServerAdminMode); diff --git a/src/Cedar/Wpc.c b/src/Cedar/Wpc.c index 9ae5f8e5..b48c70c1 100644 --- a/src/Cedar/Wpc.c +++ b/src/Cedar/Wpc.c @@ -641,6 +641,7 @@ SOCK *WpcSockConnectEx(WPC_CONNECT *param, UINT *error_code, UINT timeout, bool break; case PROXY_SOCKS: + // SOCKS4 connection sock = SocksConnectEx2(&c, param->ProxyHostName, param->ProxyPort, param->HostName, param->Port, param->ProxyUsername, false, cancel, NULL, timeout, NULL); @@ -649,6 +650,14 @@ SOCK *WpcSockConnectEx(WPC_CONNECT *param, UINT *error_code, UINT timeout, bool err = c.Err; } break; + + case PROXY_SOCKS5: + // SOCKS5 connection + sock = Socks5Connect(&c, param, false, cancel, NULL, timeout, NULL); + if (sock == NULL) + { + err = c.Err; + } } if (error_code != NULL) diff --git a/src/PenCore/PenCore.rc b/src/PenCore/PenCore.rc index 4d1912f7..3389b9a0 100644 --- a/src/PenCore/PenCore.rc +++ b/src/PenCore/PenCore.rc @@ -1497,7 +1497,7 @@ BEGIN EDITTEXT S_DESCRIPTION,7,191,289,45,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | ES_WANTRETURN | WS_VSCROLL END -D_CM_ACCOUNT DIALOGEX 0, 0, 451, 323 +D_CM_ACCOUNT DIALOGEX 0, 0, 451, 333 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "@D_CM_ACCOUNT" FONT 9, "MS Shell Dlg", 400, 0, 0x80 @@ -1517,7 +1517,7 @@ BEGIN LTEXT "@STATIC6",S_STATIC66,172,136,46,10,NOT WS_VISIBLE RTEXT "@STATIC7",S_STATIC7,14,117,54,9 COMBOBOX C_HUBNAME,72,113,126,62,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP - GROUPBOX "@STATIC8",IDC_STATIC,7,137,206,93 + GROUPBOX "@STATIC8",IDC_STATIC,7,137,206,103 ICON ICO_TOWER,IDC_STATIC,14,149,20,18 LTEXT "@STATIC9",IDC_STATIC,40,149,163,17 PUSHBUTTON "@B_IE",B_IE,74,158,114,15 @@ -1525,15 +1525,16 @@ BEGIN CONTROL "@R_DIRECT_TCP",R_DIRECT_TCP,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,72,173,135,10 CONTROL "@R_HTTPS",R_HTTPS,"Button",BS_AUTORADIOBUTTON,72,184,135,10 CONTROL "@R_SOCKS",R_SOCKS,"Button",BS_AUTORADIOBUTTON,72,194,135,10 - PUSHBUTTON "@B_PROXY_CONFIG",B_PROXY_CONFIG,74,208,114,15 - GROUPBOX "@STATIC11",S_STATIC11,7,235,206,69 - ICON ICO_CERT,IDC_STATIC,14,245,20,18 - CONTROL "@R_CHECK_CERT",R_CHECK_CERT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,41,249,133,9 - PUSHBUTTON "@B_TRUST",B_TRUST,41,263,157,15 - PUSHBUTTON "@B_SERVER_CERT",B_SERVER_CERT,41,281,77,15 - PUSHBUTTON "@B_VIEW_SERVER_CERT",B_VIEW_SERVER_CERT,123,281,75,15 - CONTROL "@R_HIDE",R_HIDE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,308,148,9 - CONTROL "@R_HIDE2",R_HIDE2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,308,132,9 + CONTROL "@R_SOCKS5",R_SOCKS5,"Button",BS_AUTORADIOBUTTON,72,204,135,10 + PUSHBUTTON "@B_PROXY_CONFIG",B_PROXY_CONFIG,74,218,114,15 + GROUPBOX "@STATIC11",S_STATIC11,7,245,206,69 + ICON ICO_CERT,IDC_STATIC,14,255,20,18 + CONTROL "@R_CHECK_CERT",R_CHECK_CERT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,41,259,133,9 + PUSHBUTTON "@B_TRUST",B_TRUST,41,273,157,15 + PUSHBUTTON "@B_SERVER_CERT",B_SERVER_CERT,41,291,77,15 + PUSHBUTTON "@B_VIEW_SERVER_CERT",B_VIEW_SERVER_CERT,123,291,75,15 + CONTROL "@R_HIDE",R_HIDE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,318,148,9 + CONTROL "@R_HIDE2",R_HIDE2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,318,132,9 CONTROL "",L_VLAN,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,233,17,200,66 GROUPBOX "@S_VLAN_GROUP",S_VLAN_GROUP,224,5,220,88 LTEXT "@S_POLICY_1",S_POLICY_1,258,17,163,24,NOT WS_VISIBLE @@ -1565,8 +1566,8 @@ BEGIN LTEXT "@S_RETRY_SPAN_2",S_RETRY_SPAN_2,364,252,72,9 CONTROL "@R_INFINITE",R_INFINITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,266,265,171,9 PUSHBUTTON "@B_DETAIL",B_DETAIL,344,277,87,15 - DEFPUSHBUTTON "@IDOK",IDOK,308,300,64,17 - PUSHBUTTON "@IDCANCEL",IDCANCEL,380,300,64,17 + DEFPUSHBUTTON "@IDOK",IDOK,308,310,64,17 + PUSHBUTTON "@IDCANCEL",IDCANCEL,380,310,64,17 CONTROL 178,S_ROUTER_LOGO,"Static",SS_BITMAP | NOT WS_VISIBLE,358,5,86,89 END @@ -1824,7 +1825,7 @@ BEGIN PUSHBUTTON "@IDCANCEL",IDCANCEL,98,288,159,14 END -D_SM_EDIT_SETTING DIALOGEX 0, 0, 435, 263 +D_SM_EDIT_SETTING DIALOGEX 0, 0, 435, 273 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "@D_SM_EDIT_SETTING" FONT 9, "MS Shell Dlg", 400, 0, 0x80 @@ -1842,14 +1843,15 @@ BEGIN RTEXT "@STATIC6",IDC_STATIC,14,113,54,11 COMBOBOX C_PORT,72,110,81,42,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP LTEXT "@STATIC7",IDC_STATIC,159,113,46,10 - GROUPBOX "@STATIC8",IDC_STATIC,7,144,206,93 + GROUPBOX "@STATIC8",IDC_STATIC,7,144,206,103 ICON ICO_TOWER,IDC_STATIC,14,156,20,18 LTEXT "@STATIC9",IDC_STATIC,40,156,163,17 RTEXT "@STATIC10",IDC_STATIC,14,182,54,10 CONTROL "@R_DIRECT_TCP",R_DIRECT_TCP,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,72,180,135,10 CONTROL "@R_HTTPS",R_HTTPS,"Button",BS_AUTORADIOBUTTON,72,191,135,10 CONTROL "@R_SOCKS",R_SOCKS,"Button",BS_AUTORADIOBUTTON,72,201,135,10 - PUSHBUTTON "@B_PROXY_CONFIG",B_PROXY_CONFIG,74,215,114,15 + CONTROL "@R_SOCKS5",R_SOCKS5,"Button",BS_AUTORADIOBUTTON,72,211,135,10 + PUSHBUTTON "@B_PROXY_CONFIG",B_PROXY_CONFIG,74,225,114,15 GROUPBOX "@STATIC11",IDC_STATIC,222,43,206,193 ICON ICO_USER_ADMIN,IDC_STATIC,229,55,20,18 LTEXT "@STATIC12",IDC_STATIC,255,55,165,81 @@ -1862,8 +1864,8 @@ BEGIN RTEXT "@S_PASSWORD",S_PASSWORD,227,208,60,9 EDITTEXT E_PASSWORD,289,206,126,11,ES_PASSWORD | ES_AUTOHSCROLL CONTROL "@R_NO_SAVE",R_NO_SAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,290,223,127,9 - DEFPUSHBUTTON "@IDOK",IDOK,291,240,64,17 - PUSHBUTTON "@IDCANCEL",IDCANCEL,364,240,64,17 + DEFPUSHBUTTON "@IDOK",IDOK,291,250,64,17 + PUSHBUTTON "@IDCANCEL",IDCANCEL,364,250,64,17 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,233,179,183,1 END @@ -4485,7 +4487,7 @@ BEGIN CONTROL 232,S_BMP_CN,"Static",SS_BITMAP,7,0,397,173 END -D_SM_PROXY DIALOGEX 0, 0, 227, 143 +D_SM_PROXY DIALOGEX 0, 0, 227, 153 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "@D_SM_PROXY" FONT 9, "MS Shell Dlg", 400, 0, 0x80 @@ -4494,11 +4496,12 @@ BEGIN LTEXT "@STATIC9",IDC_STATIC,33,5,187,17 RTEXT "@STATIC10",IDC_STATIC,7,39,54,10 CONTROL "@R_DIRECT_TCP",R_DIRECT_TCP,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,65,37,135,10 - CONTROL "@R_HTTPS",R_HTTPS,"Button",BS_AUTORADIOBUTTON,65,47,135,10 + CONTROL "@R_HTTPS",R_HTTPS,"Button",BS_AUTORADIOBUTTON,65,48,135,10 CONTROL "@R_SOCKS",R_SOCKS,"Button",BS_AUTORADIOBUTTON,65,58,135,10 - PUSHBUTTON "@B_PROXY_CONFIG",B_PROXY_CONFIG,67,78,114,15 - DEFPUSHBUTTON "@IDOK",IDOK,87,122,64,15 - PUSHBUTTON "@IDCANCEL",IDCANCEL,156,122,64,15 + CONTROL "@R_SOCKS5",R_SOCKS5,"Button",BS_AUTORADIOBUTTON,65,68,135,10 + PUSHBUTTON "@B_PROXY_CONFIG",B_PROXY_CONFIG,67,88,114,15 + DEFPUSHBUTTON "@IDOK",IDOK,87,132,64,15 + PUSHBUTTON "@IDCANCEL",IDCANCEL,156,132,64,15 END D_VGC_LIST DIALOGEX 0, 0, 446, 303 diff --git a/src/PenCore/resource.h b/src/PenCore/resource.h index bdb0666b..36f63eb8 100644 --- a/src/PenCore/resource.h +++ b/src/PenCore/resource.h @@ -317,6 +317,7 @@ #define R_DIRECT_TCP 1057 #define R_HTTPS 1059 #define R_SOCKS 1060 +#define R_SOCKS5 1061 #define S_USERNAME 1062 #define E_RETRY_SPAN 1065 #define C_HUBNAME 1066 diff --git a/src/bin/hamcore/strtable_cn.stb b/src/bin/hamcore/strtable_cn.stb index 5b5c397d..c89bc5bb 100644 --- a/src/bin/hamcore/strtable_cn.stb +++ b/src/bin/hamcore/strtable_cn.stb @@ -581,7 +581,8 @@ ERRDLG_DEVICE_ERROR 与 VPN Server 的连接被中断,因为虚拟网络适 # 关于协议 PROTO_DIRECT_TCP 直接的 TCP/IP 连接 PROTO_HTTP_PROXY 通过 HTTP 代理服务器连接 -PROTO_SOCKS_PROXY 通过 SOCKS 代理服务器连接 +PROTO_SOCKS_PROXY 通过 SOCKS4 代理服务器连接 +PROTO_SOCKS5_PROXY 通过 SOCKS5 代理服务器连接 PROTO_SSH 通过 SSH 服务器连接 PROTO_UNKNOWN 未知协议 @@ -2311,7 +2312,8 @@ STATIC9 您可以通过代理服务器连接到 VPN Server。 STATIC10 代理类型(&T): R_DIRECT_TCP 直接 TCP/IP 连接(无代理)(&D) R_HTTPS 通过 HTTP 代理服务器连接(&T) -R_SOCKS 通过 SOCKS 代理服务器连接(&S) +R_SOCKS 通过 SOCKS4 代理服务器连接(&S) +R_SOCKS5 通过 SOCKS5 代理服务器连接(&S) B_PROXY_CONFIG 代理服务器设置(&R) STATIC11 服务端证书验证选项(&F): R_CHECK_CERT 总是验证服务端证书(&C) @@ -2526,7 +2528,8 @@ STATIC9 您可以通过代理服务器连接到 VPN Server。 STATIC10 代理类型(&T): R_DIRECT_TCP 直接 TCP/IP 连接 (无代理) (&D) R_HTTPS 通过 HTTP 代理服务器连接(&T) -R_SOCKS 通过 SOCKS 代理服务器连接(&O) +R_SOCKS 通过 SOCKS4 代理服务器连接(&O) +R_SOCKS5 通过 SOCKS4 代理服务器连接(&O) B_PROXY_CONFIG 代理服务器设置(&R) STATIC11 选择管理模式并输入密码(&M) STATIC12 您可以使用服务端管理模式或虚拟 HUB 管理模式连接到 VPN Server。\r\n\r\n服务器管理模式允许您管理整个 VPN Server 和所有虚拟 HUB 。\r\n\r\n虚拟 HUB 管理模式允许您只能管理您拥有权限的一个虚拟 HUB 。 @@ -4111,7 +4114,8 @@ STATIC9 您可以通过代理服务器连接 STATIC10 代表类型: R_DIRECT_TCP 直接 TCP/IP 连接(无代理)(&D) R_HTTPS 通过 HTTP 代理服务器连接(&T) -R_SOCKS 通过 SOCKS 代理服务器连接(&K) +R_SOCKS 通过 SOCKS4 代理服务器连接(&K) +R_SOCKS5 通过 SOCKS5 代理服务器连接(&K) B_PROXY_CONFIG 代理服务器设置(&R) IDOK 确定(&O) IDCANCEL 取消 @@ -5343,15 +5347,24 @@ CMD_CascadeProxyHttp_PASSWORD 如果连接到 HTTP 代理服务器时需要用 CMD_CascadeProxyHttp_Prompt_Server 代理服务器主机名和端口号: - # CascadeProxySocks 命令 -CMD_CascadeProxySocks 将级联连接方法设定为通过 SOCKS 代理服务器 -CMD_CascadeProxySocks_Help 指定已经在当前虚拟 HUB 注册的级联连接,当此连接和 VPN Server 之间通信时,设置连接方法为 [通过 SOCKS 代理服务器],设置 SOCKS8 代理服务器的主机名和端口号,用户名和密码 (如果需要)。\nSOCKS 服务器,需与 SOCKS 第 4 版想匹配。\n此命令在集群虚拟 HUB 中不能运行。 +CMD_CascadeProxySocks 将级联连接方法设定为通过 SOCKS4 代理服务器 +CMD_CascadeProxySocks_Help 指定已经在当前虚拟 HUB 注册的级联连接,当此连接和 VPN Server 之间通信时,设置连接方法为 [通过 SOCKS4 代理服务器],设置 SOCKS4 代理服务器的主机名和端口号,用户名和密码 (如果需要)。\n此命令在集群虚拟 HUB 中不能运行。 CMD_CascadeProxySocks_Args CascadeProxySocks [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] CMD_CascadeProxySocks_[name] 指定级联名称来改变设置。 CMD_CascadeProxySocks_SERVER 按照 [主机名:端口号] 的格式,设定代理服务器主机名或 IP 地址和端口号。 -CMD_CascadeProxySocks_USERNAME 如果连接到 SOCKS 代理服务器时需要用户验证,则指定用户名。同时设定密码和参数。如果没有设定用户名和密码参数,则不需要设置用户身份验证。 -CMD_CascadeProxySocks_PASSWORD 如果连接到 SOCKS 代理服务器时需要用户验证,则指定密码。/USERNAME,参数等同时设定。 +CMD_CascadeProxySocks_USERNAME 如果连接到 SOCKS4 代理服务器时需要用户验证,则指定用户名。同时设定密码和参数。如果没有设定用户名和密码参数,则不需要设置用户身份验证。 +CMD_CascadeProxySocks_PASSWORD 如果连接到 SOCKS4 代理服务器时需要用户验证,则指定密码。/USERNAME,参数等同时设定。 + + +# CascadeProxySocks5 命令 +CMD_CascadeProxySocks5 将级联连接方法设定为通过 SOCKS5 代理服务器 +CMD_CascadeProxySocks5_Help 指定已经在当前虚拟 HUB 注册的级联连接,当此连接和 VPN Server 之间通信时,设置连接方法为 [通过 SOCKS5 代理服务器],设置 SOCKS5 代理服务器的主机名和端口号,用户名和密码 (如果需要)。\n此命令在集群虚拟 HUB 中不能运行。 +CMD_CascadeProxySocks5_Args CascadeProxySocks5 [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] +CMD_CascadeProxySocks5_[name] 指定级联名称来改变设置。 +CMD_CascadeProxySocks5_SERVER 按照 [主机名:端口号] 的格式,设定代理服务器主机名或 IP 地址和端口号。 +CMD_CascadeProxySocks5_USERNAME 如果连接到 SOCKS5 代理服务器时需要用户验证,则指定用户名。同时设定密码和参数。如果没有设定用户名和密码参数,则不需要设置用户身份验证。 +CMD_CascadeProxySocks5_PASSWORD 如果连接到 SOCKS5 代理服务器时需要用户验证,则指定密码。/USERNAME,参数等同时设定。 # CascadeServerCertEnable 命令 @@ -6627,15 +6640,24 @@ CMD_AccountProxyHttp_PASSWORD 如果因为连接通过 HTTP 代理服务器而 CMD_AccountProxyHttp_Prompt_Server 代理服务器主机名和端口号: - # AccountProxySocks 命令 -CMD_AccountProxySocks 将连接设置的连接方法设置为通过 SOCKS 代理服务器连接 -CMD_AccountProxySocks_Help 当指定注册到 VPN Client 的连接设置,将其连接设置与 VPN Server 间进行 VPN 连接时使用的连接方法设置为 [通过 SOCKS 服务器连接],并指定要通过的 SOCKS 代理服务器的主机名和端口号,用户名和密码 (如果需要)。\n通过 SOCKS 服务器,必须对应 SOCKS 版本 4。 +CMD_AccountProxySocks 将连接设置的连接方法设置为通过 SOCKS4 代理服务器连接 +CMD_AccountProxySocks_Help 当指定注册到 VPN Client 的连接设置,将其连接设置与 VPN Server 间进行 VPN 连接时使用的连接方法设置为 [通过 SOCKS4 服务器连接],并指定要通过的 SOCKS4 代理服务器的主机名和端口号,用户名和密码 (如果需要)。 CMD_AccountProxySocks_Args AccountProxySocks [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] CMD_AccountProxySocks_[name] 指定要更改设置的连接设置名。 -CMD_AccountProxySocks_SERVER 以 [主机名:端口号] 形式,指定要通过的 SOCKS 代理服务器主机名或 IP 地址和端口号。 -CMD_AccountProxySocks_USERNAME 如果因为连接通过 SOCKS 代理服务器而需要用户认证时,指定用户名。与此同时也指定 /PASSWORD 参数。/USERNAME 和 /PASSWORD 参数没有被指定时,不设置用户身份验证数据。 -CMD_AccountProxySocks_PASSWORD 如果因为连接通过 SOCKS 代理服务器而需要用户认证时,指定密码。与 /USERNAME 参数一起指定。 +CMD_AccountProxySocks_SERVER 以 [主机名:端口号] 形式,指定要通过的 SOCKS4 代理服务器主机名或 IP 地址和端口号。 +CMD_AccountProxySocks_USERNAME 如果因为连接通过 SOCKS4 代理服务器而需要用户认证时,指定用户名。与此同时也指定 /PASSWORD 参数。/USERNAME 和 /PASSWORD 参数没有被指定时,不设置用户身份验证数据。 +CMD_AccountProxySocks_PASSWORD 如果因为连接通过 SOCKS4 代理服务器而需要用户认证时,指定密码。与 /USERNAME 参数一起指定。 + + +# AccountProxySocks5 命令 +CMD_AccountProxySocks5 将连接设置的连接方法设置为通过 SOCKS5 代理服务器连接 +CMD_AccountProxySocks5_Help 当指定注册到 VPN Client 的连接设置,将其连接设置与 VPN Server 间进行 VPN 连接时使用的连接方法设置为 [通过 SOCKS5 服务器连接],并指定要通过的 SOCKS5 代理服务器的主机名和端口号,用户名和密码 (如果需要)。 +CMD_AccountProxySocks5_Args AccountProxySocks5 [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] +CMD_AccountProxySocks5_[name] 指定要更改设置的连接设置名。 +CMD_AccountProxySocks5_SERVER 以 [主机名:端口号] 形式,指定要通过的 SOCKS5 代理服务器主机名或 IP 地址和端口号。 +CMD_AccountProxySocks5_USERNAME 如果因为连接通过 SOCKS5 代理服务器而需要用户认证时,指定用户名。与此同时也指定 /PASSWORD 参数。/USERNAME 和 /PASSWORD 参数没有被指定时,不设置用户身份验证数据。 +CMD_AccountProxySocks5_PASSWORD 如果因为连接通过 SOCKS5 代理服务器而需要用户认证时,指定密码。与 /USERNAME 参数一起指定。 # AccountServerCertEnable 命令 diff --git a/src/bin/hamcore/strtable_en.stb b/src/bin/hamcore/strtable_en.stb index c2931639..4f1b8c99 100644 --- a/src/bin/hamcore/strtable_en.stb +++ b/src/bin/hamcore/strtable_en.stb @@ -574,7 +574,8 @@ ERRDLG_DEVICE_ERROR The connection with the VPN Server has been disconnected be # Concerning protocols PROTO_DIRECT_TCP Direct TCP/IP Connection PROTO_HTTP_PROXY Connection via HTTP Proxy -PROTO_SOCKS_PROXY Connection via SOCKS Proxy +PROTO_SOCKS_PROXY Connection via SOCKS4 Proxy +PROTO_SOCKS5_PROXY Connection via SOCKS5 Proxy PROTO_SSH Connection via SSH Server PROTO_UNKNOWN Unknown Protocol @@ -2291,7 +2292,8 @@ STATIC9 You can connect to a VPN Server via a proxy server. STATIC10 Proxy &Type: R_DIRECT_TCP &Direct TCP/IP Connection (No Proxy) R_HTTPS Connect via H&TTP Proxy Server -R_SOCKS Connect via &SOCKS Proxy Server +R_SOCKS Connect via &SOCKS4 Proxy Server +R_SOCKS5 Connect via &SOCKS5 Proxy Server B_PROXY_CONFIG P&roxy Server Setting STATIC11 Server Certificate Veri&fication Option: R_CHECK_CERT Always Verify Server &Certificate @@ -2505,7 +2507,8 @@ STATIC9 You can connect to a VPN Server via a proxy server. STATIC10 Proxy &Type: R_DIRECT_TCP &Direct TCP/IP Connection (No Proxy) R_HTTPS Connect via H&TTP Proxy Server -R_SOCKS Connect via S&OCKS Proxy Server +R_SOCKS Connect via S&OCKS4 Proxy Server +R_SOCKS5 Connect via S&OCKS5 Proxy Server B_PROXY_CONFIG P&roxy Server Setting STATIC11 Select Administration &Mode and Enter Password STATIC12 You can connect to VPN Server using either Server Admin Mode or Virtual Hub Admin Mode.\r\n\r\nServer Admin Mode allows you manage entire VPN Server and all Virtual Hubs. \r\n\r\nVirtual Hub Admin Mode allows you manage only one Virtual Hub for which you hold privileges. @@ -4095,7 +4098,8 @@ STATIC9 You can connect via a proxy server. STATIC10 Proxy &Type: R_DIRECT_TCP &Direct TCP/IP Connection (No Proxy) R_HTTPS Connect via H&TTP Proxy Server -R_SOCKS Connect via S&OCKS Proxy Server +R_SOCKS Connect via S&OCKS4 Proxy Server +R_SOCKS5 Connect via S&OCKS5 Proxy Server B_PROXY_CONFIG P&roxy Server Setting IDOK &OK IDCANCEL Cancel @@ -5326,15 +5330,24 @@ CMD_CascadeProxyHttp_PASSWORD When user authentication is required to connect to CMD_CascadeProxyHttp_Prompt_Server Proxy Server Host Name and Port Number: - # CascadeProxySocks command -CMD_CascadeProxySocks Set Connection Method of Cascade Connection to be via an SOCKS Proxy Server -CMD_CascadeProxySocks_Help When a Cascade Connection registered on the currently managed Virtual Hub is specified and that Cascade Connection connects to a VPN Server, use this to set Connect via SOCKS Proxy Server as the method of connection to use, which requires the specification of the host name and port number of the SOCKS Proxy server to communicate via as well as a user name and password (when required). \nThe on-route SOCKS server must be compatible with SOCKS Version 4. \nYou cannot execute this command for Virtual Hubs of VPN Servers operating as a cluster. +CMD_CascadeProxySocks Set Connection Method of Cascade Connection to be via a SOCKS4 Proxy Server +CMD_CascadeProxySocks_Help When a Cascade Connection registered on the currently managed Virtual Hub is specified and that Cascade Connection connects to a VPN Server, use this to set Connect via SOCKS4 Proxy Server as the method of connection to use, which requires the specification of the host name and port number of the SOCKS4 Proxy server to communicate via as well as a user name and password (when required). \nYou cannot execute this command for Virtual Hubs of VPN Servers operating as a cluster. CMD_CascadeProxySocks_Args CascadeProxySocks [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] CMD_CascadeProxySocks_[name] Specify the name of the Cascade Connection whose setting you want to change. -CMD_CascadeProxySocks_SERVER Specify the host name or IP address, and port number of the on-route SOCKS proxy server using the format "host name:port number". -CMD_CascadeProxySocks_USERNAME When user authentication is required to connect to the on-route SOCKS proxy server, specify the user name. Also, specify the /PASSWORD parameter at the same time. If the parameters /USERNAME and /PASSWORD are not specified, the user authentication data will not be set. -CMD_CascadeProxySocks_PASSWORD When user authentication is required to connect to the on-route SOCKS proxy server, specify the password. Specify this together with the /USERNAME parameter. +CMD_CascadeProxySocks_SERVER Specify the host name or IP address, and port number of the on-route SOCKS4 proxy server using the format "host name:port number". +CMD_CascadeProxySocks_USERNAME When user authentication is required to connect to the on-route SOCKS4 proxy server, specify the user name. Also, specify the /PASSWORD parameter at the same time. If the parameters /USERNAME and /PASSWORD are not specified, the user authentication data will not be set. +CMD_CascadeProxySocks_PASSWORD When user authentication is required to connect to the on-route SOCKS4 proxy server, specify the password. Specify this together with the /USERNAME parameter. + + +# CascadeProxySocks5 command +CMD_CascadeProxySocks5 Set Connection Method of Cascade Connection to be via a SOCKS5 Proxy Server +CMD_CascadeProxySocks5_Help When a Cascade Connection registered on the currently managed Virtual Hub is specified and that Cascade Connection connects to a VPN Server, use this to set Connect via SOCKS5 Proxy Server as the method of connection to use, which requires the specification of the host name and port number of the SOCKS Proxy server to communicate via as well as a user name and password (when required). \nYou cannot execute this command for Virtual Hubs of VPN Servers operating as a cluster. +CMD_CascadeProxySocks5_Args CascadeProxySocks5 [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] +CMD_CascadeProxySocks5_[name] Specify the name of the Cascade Connection whose setting you want to change. +CMD_CascadeProxySocks5_SERVER Specify the host name or IP address, and port number of the on-route SOCKS5 proxy server using the format "host name:port number". +CMD_CascadeProxySocks5_USERNAME When user authentication is required to connect to the on-route SOCKS5 proxy server, specify the user name. Also, specify the /PASSWORD parameter at the same time. If the parameters /USERNAME and /PASSWORD are not specified, the user authentication data will not be set. +CMD_CascadeProxySocks5_PASSWORD When user authentication is required to connect to the on-route SOCKS5 proxy server, specify the password. Specify this together with the /USERNAME parameter. # CascadeServerCertEnable command @@ -6613,15 +6626,24 @@ CMD_AccountProxyHttp_PASSWORD When user authentication is required to connect to CMD_AccountProxyHttp_Prompt_Server Proxy Server Host Name and Port Number: - # AccountProxySocks command -CMD_AccountProxySocks Set Connection Method of VPN Connection Setting to be via an SOCKS Proxy Server -CMD_AccountProxySocks_Help When a VPN Connection Setting registered on the VPN Client is specified and that VPN Connection Setting connects to a VPN Server, use this to set Connect via SOCKS Proxy Server as the method of connection to use, which requires the specification of the host name and port number of the SOCKS Proxy server to communicate via as well as a user name and password (when required). \nThe on-route SOCKS server must be compatible with SOCKS Version 4. +CMD_AccountProxySocks Set Connection Method of VPN Connection Setting to be via a SOCKS4 Proxy Server +CMD_AccountProxySocks_Help When a VPN Connection Setting registered on the VPN Client is specified and that VPN Connection Setting connects to a VPN Server, use this to set Connect via SOCKS4 Proxy Server as the method of connection to use, which requires the specification of the host name and port number of the SOCKS4 Proxy server to communicate via as well as a user name and password (when required). CMD_AccountProxySocks_Args AccountProxySocks [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] CMD_AccountProxySocks_[name] Specify the name of the VPN Connection Setting whose setting you want to change. -CMD_AccountProxySocks_SERVER Specify the host name or IP address, and port number of the on-route SOCKS proxy server using the format [host name:port number]. -CMD_AccountProxySocks_USERNAME When user authentication is required to connect to the on-route SOCKS proxy server, specify the user name. Also, specify the /PASSWORD parameter at the same time. If the parameters /USERNAME and /PASSWORD are not specified, the user authentication data will not be set. -CMD_AccountProxySocks_PASSWORD When user authentication is required to connect to the on-route SOCKS proxy server, specify the password. Specify this together with the /USERNAME parameter. +CMD_AccountProxySocks_SERVER Specify the host name or IP address, and port number of the on-route SOCKS4 proxy server using the format [host name:port number]. +CMD_AccountProxySocks_USERNAME When user authentication is required to connect to the on-route SOCKS4 proxy server, specify the user name. Also, specify the /PASSWORD parameter at the same time. If the parameters /USERNAME and /PASSWORD are not specified, the user authentication data will not be set. +CMD_AccountProxySocks_PASSWORD When user authentication is required to connect to the on-route SOCKS4 proxy server, specify the password. Specify this together with the /USERNAME parameter. + + +# AccountProxySocks5 command +CMD_AccountProxySocks5 Set Connection Method of VPN Connection Setting to be via a SOCKS5 Proxy Server +CMD_AccountProxySocks5_Help When a VPN Connection Setting registered on the VPN Client is specified and that VPN Connection Setting connects to a VPN Server, use this to set Connect via SOCKS5 Proxy Server as the method of connection to use, which requires the specification of the host name and port number of the SOCKS5 Proxy server to communicate via as well as a user name and password (when required). +CMD_AccountProxySocks5_Args AccountProxySocks5 [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] +CMD_AccountProxySocks5_[name] Specify the name of the VPN Connection Setting whose setting you want to change. +CMD_AccountProxySocks5_SERVER Specify the host name or IP address, and port number of the on-route SOCKS5 proxy server using the format [host name:port number]. +CMD_AccountProxySocks5_USERNAME When user authentication is required to connect to the on-route SOCKS5 proxy server, specify the user name. Also, specify the /PASSWORD parameter at the same time. If the parameters /USERNAME and /PASSWORD are not specified, the user authentication data will not be set. +CMD_AccountProxySocks5_PASSWORD When user authentication is required to connect to the on-route SOCKS5 proxy server, specify the password. Specify this together with the /USERNAME parameter. # AccountServerCertEnable command diff --git a/src/bin/hamcore/strtable_ja.stb b/src/bin/hamcore/strtable_ja.stb index 3a295346..0c5ea126 100644 --- a/src/bin/hamcore/strtable_ja.stb +++ b/src/bin/hamcore/strtable_ja.stb @@ -452,7 +452,8 @@ ERRDLG_DEVICE_ERROR 仮想 LAN カード (デバイス名: %S) が停止され # プロトコル関係 PROTO_DIRECT_TCP 直接 TCP/IP 接続 PROTO_HTTP_PROXY HTTP プロキシ経由接続 -PROTO_SOCKS_PROXY SOCKS プロキシ経由接続 +PROTO_SOCKS_PROXY SOCKS4 プロキシ経由接続 +PROTO_SOCKS5_PROXY SOCKS5 プロキシ経由接続 PROTO_SSH SSH サーバー経由接続 PROTO_UNKNOWN 不明なプロトコル @@ -2296,7 +2297,8 @@ STATIC9 プロキシサーバーを経由して VPN Server に接続する STATIC10 プロキシの種類(&M): R_DIRECT_TCP 直接 TCP/IP 接続 (プロキシを使わない) (&D) R_HTTPS HTTP プロキシサーバー経由接続(&Q) -R_SOCKS SOCKS プロキシサーバー経由接続(&S) +R_SOCKS SOCKS4 プロキシサーバー経由接続(&S) +R_SOCKS5 SOCKS5 プロキシサーバー経由接続(&S) B_PROXY_CONFIG プロキシサーバーの接続設定(&2) STATIC11 サーバー証明書の検証オプション(&F): R_CHECK_CERT サーバー証明書を必ず検証する(&3) @@ -2510,7 +2512,8 @@ STATIC9 プロキシサーバーを経由して VPN Server に接続する STATIC10 プロキシの種類(&Y): R_DIRECT_TCP 直接 TCP/IP 接続 (プロキシを使わない) (&D) R_HTTPS HTTP プロキシサーバー経由接続(&T) -R_SOCKS SOCKS プロキシサーバー経由接続(&K) +R_SOCKS SOCKS4 プロキシサーバー経由接続(&K) +R_SOCKS5 SOCKS5 プロキシサーバー経由接続(&K) B_PROXY_CONFIG プロキシサーバーの接続設定(&R) STATIC11 管理モードの選択とパスワードの入力(&M) STATIC12 VPN Server には、サーバー管理モードと仮想 HUB 管理モードのどちらかのモードで接続できます。\r\n\r\nサーバー管理モードで接続すると、VPN Server の設定とすべての仮想 HUB が管理できます。\r\n\r\n仮想 HUB 管理モードで接続すると、権限を持っている仮想 HUB の管理ができます。 @@ -4102,7 +4105,8 @@ STATIC9 プロキシサーバーを経由してサーバーに接続する STATIC10 プロキシの種類(&Y): R_DIRECT_TCP 直接 TCP/IP 接続 (プロキシを使わない) (&D) R_HTTPS HTTP プロキシサーバー経由接続(&T) -R_SOCKS SOCKS プロキシサーバー経由接続(&K) +R_SOCKS SOCKS4 プロキシサーバー経由接続(&K) +R_SOCKS5 SOCKS5 プロキシサーバー経由接続(&K) B_PROXY_CONFIG プロキシサーバーの接続設定(&R) IDOK &OK IDCANCEL キャンセル @@ -5327,15 +5331,24 @@ CMD_CascadeProxyHttp_PASSWORD 経由する HTTP プロキシサーバーに接 CMD_CascadeProxyHttp_Prompt_Server プロキシサーバーのホスト名とポート番号: - # CascadeProxySocks コマンド -CMD_CascadeProxySocks カスケード接続の接続方法を SOCKS プロキシサーバー経由接続に設定 -CMD_CascadeProxySocks_Help 現在管理している仮想 HUB に登録されているカスケード接続を指定し、そのカスケード接続が VPN Server に対して接続する際に、使用する接続方法を [SOCKS プロキシサーバー経由接続] に設定し、経由する SOCKS プロキシサーバーのホスト名とポート番号、ユーザー名とパスワード (必要な場合) を指定します。\n経由する SOCKS サーバーは、SOCKS バージョン 4 に対応している必要があります。\nこのコマンドは、クラスタとして動作している VPN Server の仮想 HUB では実行できません。 +CMD_CascadeProxySocks カスケード接続の接続方法を SOCKS4 プロキシサーバー経由接続に設定 +CMD_CascadeProxySocks_Help 現在管理している仮想 HUB に登録されているカスケード接続を指定し、そのカスケード接続が VPN Server に対して接続する際に、使用する接続方法を [SOCKS4 プロキシサーバー経由接続] に設定し、経由する SOCKS4 プロキシサーバーのホスト名とポート番号、ユーザー名とパスワード (必要な場合) を指定します。\n経由する SOCKS4 サーバーは、SOCKS4 バージョン 4 に対応している必要があります。\nこのコマンドは、クラスタとして動作している VPN Server の仮想 HUB では実行できません。 CMD_CascadeProxySocks_Args CascadeProxySocks [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] CMD_CascadeProxySocks_[name] 設定を変更するカスケード接続の名前を指定します。 -CMD_CascadeProxySocks_SERVER [ホスト名:ポート番号] の形式で、経由する SOCKS プロキシサーバーのホスト名、または IP アドレスとポート番号を指定します。 -CMD_CascadeProxySocks_USERNAME 経由する SOCKS プロキシサーバーに接続するためにユーザー認証が必要な場合、ユーザー名を指定します。また、同時に /PASSWORD パラメータも指定します。/USERNAME と /PASSWORD パラメータが指定されない場合は、ユーザー認証データを設定しません。 -CMD_CascadeProxySocks_PASSWORD 経由する SOCKS プロキシサーバーに接続するためにユーザー認証が必要な場合、パスワードを指定します。/USERNAME パラメータと共に指定します。 +CMD_CascadeProxySocks_SERVER [ホスト名:ポート番号] の形式で、経由する SOCKS4 プロキシサーバーのホスト名、または IP アドレスとポート番号を指定します。 +CMD_CascadeProxySocks_USERNAME 経由する SOCKS4 プロキシサーバーに接続するためにユーザー認証が必要な場合、ユーザー名を指定します。また、同時に /PASSWORD パラメータも指定します。/USERNAME と /PASSWORD パラメータが指定されない場合は、ユーザー認証データを設定しません。 +CMD_CascadeProxySocks_PASSWORD 経由する SOCKS4 プロキシサーバーに接続するためにユーザー認証が必要な場合、パスワードを指定します。/USERNAME パラメータと共に指定します。 + + +# CascadeProxySocks5 コマンド +CMD_CascadeProxySocks5 カスケード接続の接続方法を SOCKS4 プロキシサーバー経由接続に設定 +CMD_CascadeProxySocks5_Help 現在管理している仮想 HUB に登録されているカスケード接続を指定し、そのカスケード接続が VPN Server に対して接続する際に、使用する接続方法を [SOCKS5 プロキシサーバー経由接続] に設定し、経由する SOCKS5 プロキシサーバーのホスト名とポート番号、ユーザー名とパスワード (必要な場合) を指定します。\nこのコマンドは、クラスタとして動作している VPN Server の仮想 HUB では実行できません。 +CMD_CascadeProxySocks5_Args CascadeProxySocks5 [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] +CMD_CascadeProxySocks5_[name] 設定を変更するカスケード接続の名前を指定します。 +CMD_CascadeProxySocks5_SERVER [ホスト名:ポート番号] の形式で、経由する SOCKS5 プロキシサーバーのホスト名、または IP アドレスとポート番号を指定します。 +CMD_CascadeProxySocks5_USERNAME 経由する SOCKS5 プロキシサーバーに接続するためにユーザー認証が必要な場合、ユーザー名を指定します。また、同時に /PASSWORD パラメータも指定します。/USERNAME と /PASSWORD パラメータが指定されない場合は、ユーザー認証データを設定しません。 +CMD_CascadeProxySocks5_PASSWORD 経由する SOCKS5 プロキシサーバーに接続するためにユーザー認証が必要な場合、パスワードを指定します。/USERNAME パラメータと共に指定します。 # CascadeServerCertEnable コマンド @@ -6619,15 +6632,24 @@ CMD_AccountProxyHttp_PASSWORD 経由する HTTP プロキシサーバーに接 CMD_AccountProxyHttp_Prompt_Server プロキシサーバーのホスト名とポート番号: - # AccountProxySocks コマンド -CMD_AccountProxySocks 接続設定の接続方法を SOCKS プロキシサーバー経由接続に設定 -CMD_AccountProxySocks_Help VPN Client に登録されている接続設定を指定し、その接続設定が VPN Server に対して接続する際に使用する接続方法を [SOCKS プロキシサーバー経由接続] に設定し、経由する SOCKS プロキシサーバーのホスト名とポート番号、ユーザー名とパスワード (必要な場合) を指定します。\n経由する SOCKS サーバーは、SOCKS バージョン 4 に対応している必要があります。 +CMD_AccountProxySocks 接続設定の接続方法を SOCKS4 プロキシサーバー経由接続に設定 +CMD_AccountProxySocks_Help VPN Client に登録されている接続設定を指定し、その接続設定が VPN Server に対して接続する際に使用する接続方法を [SOCKS4 プロキシサーバー経由接続] に設定し、経由する SOCKS4 プロキシサーバーのホスト名とポート番号、ユーザー名とパスワード (必要な場合) を指定します。 CMD_AccountProxySocks_Args AccountProxySocks [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] CMD_AccountProxySocks_[name] 設定を変更する接続設定の名前を指定します。 -CMD_AccountProxySocks_SERVER [ホスト名:ポート番号] の形式で、経由する SOCKS プロキシサーバーのホスト名、または IP アドレスとポート番号を指定します。 -CMD_AccountProxySocks_USERNAME 経由する SOCKS プロキシサーバーに接続するためにユーザー認証が必要な場合、ユーザー名を指定します。また、同時に /PASSWORD パラメータも指定します。/USERNAME と /PASSWORD パラメータが指定されない場合は、ユーザー認証データを設定しません。 -CMD_AccountProxySocks_PASSWORD 経由する SOCKS プロキシサーバーに接続するためにユーザー認証が必要な場合、パスワードを指定します。/USERNAME パラメータと共に指定します。 +CMD_AccountProxySocks_SERVER [ホスト名:ポート番号] の形式で、経由する SOCKS4 プロキシサーバーのホスト名、または IP アドレスとポート番号を指定します。 +CMD_AccountProxySocks_USERNAME 経由する SOCKS4 プロキシサーバーに接続するためにユーザー認証が必要な場合、ユーザー名を指定します。また、同時に /PASSWORD パラメータも指定します。/USERNAME と /PASSWORD パラメータが指定されない場合は、ユーザー認証データを設定しません。 +CMD_AccountProxySocks_PASSWORD 経由する SOCKS4 プロキシサーバーに接続するためにユーザー認証が必要な場合、パスワードを指定します。/USERNAME パラメータと共に指定します。 + + +# AccountProxySocks5 コマンド +CMD_AccountProxySocks5 接続設定の接続方法を SOCKS5 プロキシサーバー経由接続に設定 +CMD_AccountProxySocks5_Help VPN Client に登録されている接続設定を指定し、その接続設定が VPN Server に対して接続する際に使用する接続方法を [SOCKS5 プロキシサーバー経由接続] に設定し、経由する SOCKS5 プロキシサーバーのホスト名とポート番号、ユーザー名とパスワード (必要な場合) を指定します。 +CMD_AccountProxySocks5_Args AccountProxySocks5 [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] +CMD_AccountProxySocks5_[name] 設定を変更する接続設定の名前を指定します。 +CMD_AccountProxySocks5_SERVER [ホスト名:ポート番号] の形式で、経由する SOCKS5 プロキシサーバーのホスト名、または IP アドレスとポート番号を指定します。 +CMD_AccountProxySocks5_USERNAME 経由する SOCKS5 プロキシサーバーに接続するためにユーザー認証が必要な場合、ユーザー名を指定します。また、同時に /PASSWORD パラメータも指定します。/USERNAME と /PASSWORD パラメータが指定されない場合は、ユーザー認証データを設定しません。 +CMD_AccountProxySocks5_PASSWORD 経由する SOCKS5 プロキシサーバーに接続するためにユーザー認証が必要な場合、パスワードを指定します。/USERNAME パラメータと共に指定します。 # AccountServerCertEnable コマンド diff --git a/src/bin/hamcore/strtable_ko.stb b/src/bin/hamcore/strtable_ko.stb index e9a02c33..782eb91e 100644 --- a/src/bin/hamcore/strtable_ko.stb +++ b/src/bin/hamcore/strtable_ko.stb @@ -456,7 +456,8 @@ ERRDLG_DEVICE_ERROR 가상 LAN 카드 (장치 이름:%S)가 중지 된 때문에 # 프로토콜 관계 PROTO_DIRECT_TCP 직접 TCP/IP 연결 PROTO_HTTP_PROXY HTTP 프록시를 통해 연결 -PROTO_SOCKS_PROXY SOCKS 프록시를 통해 연결 +PROTO_SOCKS_PROXY SOCKS4 프록시를 통해 연결 +PROTO_SOCKS5_PROXY SOCKS5 프록시를 통해 연결 PROTO_SSH SSH 서버를 통해 연결 PROTO_UNKNOWN 알 수없는 프로토콜 @@ -2273,7 +2274,8 @@ STATIC9 프록시 서버를 통해 VPN Server에 연결할 수 있습니다. STATIC10 프록시 유형 (&M): R_DIRECT_TCP 직접 TCP/IP 연결 (프록시를 사용하지 않는다) (&D) R_HTTPS HTTP 프록시 서버를 통해 연결 (&Q) -R_SOCKS SOCKS 프록시 서버를 통해 연결 (&S) +R_SOCKS SOCKS4 프록시 서버를 통해 연결 (&S) +R_SOCKS5 SOCKS5 프록시 서버를 통해 연결 (&S) B_PROXY_CONFIG 프록시 서버 연결 설정 (&2) STATIC11 서버 인증서 검증 옵션 (&F): R_CHECK_CERT 서버 인증서를 반드시 확인한다 (&3) @@ -2487,7 +2489,8 @@ STATIC9 프록시 서버를 통해 VPN Server에 연결할 수 있습니다. STATIC10 프록시 유형 (&Y): R_DIRECT_TCP 직접 TCP/IP 연결 (프록시를 사용하지 않는다) (&D) R_HTTPS HTTP 프록시 서버를 통해 연결 (&T) -R_SOCKS SOCKS 프록시 서버를 통해 연결 (&K) +R_SOCKS SOCKS4 프록시 서버를 통해 연결 (&K) +R_SOCKS5 SOCKS5 프록시 서버를 통해 연결 (&K) B_PROXY_CONFIG 프록시 서버 연결 설정 (&R) STATIC11 관리 모드의 선택과 암호 (&M) STATIC12 VPN Server는 서버 관리 모드와 가상 HUB 관리 모드 중 하나의 모드로 연결할 수 있습니다. \r\n\r\n 서버 관리 모드로 연결하면 VPN Server 설정 및 모든 가상 HUB가 관리 할 수 있습니다. \r\n\r\n 가상 HUB 관리 모드로 연결하면 권한이있는 가상 HUB 관리 할 수 있습니다. @@ -4079,7 +4082,8 @@ STATIC9 프록시 서버를 통해 서버에 연결할 수 있습니다. STATIC10 프록시 유형 (&Y): R_DIRECT_TCP 직접 TCP/IP 연결 (프록시를 사용하지 않는다) (&D) R_HTTPS HTTP 프록시 서버를 통해 연결 (&T) -R_SOCKS SOCKS 프록시 서버를 통해 연결 (&K) +R_SOCKS SOCKS4 프록시 서버를 통해 연결 (&K) +R_SOCKS5 SOCKS5 프록시 서버를 통해 연결 (&K) B_PROXY_CONFIG 프록시 서버 연결 설정 (&R) IDOK & OK IDCANCEL 취소 @@ -5304,15 +5308,24 @@ CMD_CascadeProxyHttp_PASSWORD 통해 HTTP 프록시 서버에 연결하기 위 CMD_CascadeProxyHttp_Prompt_Server 프록시 서버의 호스트 이름과 포트 번호: - # CascadeProxySocks 명령 CMD_CascadeProxySocks 계단식 연결 방법을 SOCKS 프록시 서버를 통해 연결 설정 -CMD_CascadeProxySocks_Help 현재 관리하고있는 가상 HUB에 등록되어있는 계단식 지정하고 계단식가 VPN Server에 연결할 때 사용할 연결 방법을 [SOCKS 프록시 서버를 통해 연결을 설정하고 경유 하는 SOCKS 프록시 서버의 호스트 이름과 포트 번호, 사용자 이름과 암호 (필요한 경우)을 지정합니다. \n 통해 SOCKS 서버는 SOCKS 버전 4를 지원해야합니다. \n이 명령은 클러스터로 작동하는 VPN Server의 가상 HUB에서는 실행되지 않습니다. +CMD_CascadeProxySocks_Help 현재 관리하고있는 가상 HUB에 등록되어있는 계단식 지정하고 계단식가 VPN Server에 연결할 때 사용할 연결 방법을 [SOCKS4 프록시 서버를 통해 연결을 설정하고 경유 하는 SOCKS4 프록시 서버의 호스트 이름과 포트 번호, 사용자 이름과 암호 (필요한 경우)을 지정합니다. \n이 명령은 클러스터로 작동하는 VPN Server의 가상 HUB에서는 실행되지 않습니다. CMD_CascadeProxySocks_Args CascadeProxySocks [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] CMD_CascadeProxySocks_[name] 설정을 변경 계단식의 이름을 지정합니다. CMD_CascadeProxySocks_SERVER 호스트 이름:포트 번호 형식으로 통해 SOCKS 프록시 서버의 호스트 이름 또는 IP 주소와 포트 번호를 지정합니다. -CMD_CascadeProxySocks_USERNAME 통해 SOCKS 프록시 서버에 연결하기 위해 사용자 인증이 필요한 경우 사용자 이름을 지정합니다. 또한 동시에/PASSWORD 매개 변수도 지정합니다./USERNAME 및/PASSWORD 매개 변수가 지정되지 않은 경우 사용자 인증 데이터를 설정하지 않습니다. -CMD_CascadeProxySocks_PASSWORD 통해 SOCKS 프록시 서버에 연결하기 위해 사용자 인증이 필요한 경우 암호를 지정합니다./USERNAME 매개 변수와 함께 지정합니다. +CMD_CascadeProxySocks_USERNAME 통해 SOCKS4 프록시 서버에 연결하기 위해 사용자 인증이 필요한 경우 사용자 이름을 지정합니다. 또한 동시에/PASSWORD 매개 변수도 지정합니다./USERNAME 및/PASSWORD 매개 변수가 지정되지 않은 경우 사용자 인증 데이터를 설정하지 않습니다. +CMD_CascadeProxySocks_PASSWORD 통해 SOCKS4 프록시 서버에 연결하기 위해 사용자 인증이 필요한 경우 암호를 지정합니다./USERNAME 매개 변수와 함께 지정합니다. + + +# CascadeProxySocks5 명령 +CMD_CascadeProxySocks5 계단식 연결 방법을 SOCKS 프록시 서버를 통해 연결 설정 +CMD_CascadeProxySocks5_Help 현재 관리하고있는 가상 HUB에 등록되어있는 계단식 지정하고 계단식가 VPN Server에 연결할 때 사용할 연결 방법을 [SOCKS5 프록시 서버를 통해 연결을 설정하고 경유 하는 SOCKS5 프록시 서버의 호스트 이름과 포트 번호, 사용자 이름과 암호 (필요한 경우)을 지정합니다. \n이 명령은 클러스터로 작동하는 VPN Server의 가상 HUB에서는 실행되지 않습니다. +CMD_CascadeProxySocks5_Args CascadeProxySocks5 [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] +CMD_CascadeProxySocks5_[name] 설정을 변경 계단식의 이름을 지정합니다. +CMD_CascadeProxySocks5_SERVER 호스트 이름:포트 번호 형식으로 통해 SOCKS 프록시 서버의 호스트 이름 또는 IP 주소와 포트 번호를 지정합니다. +CMD_CascadeProxySocks5_USERNAME 통해 SOCKS5 프록시 서버에 연결하기 위해 사용자 인증이 필요한 경우 사용자 이름을 지정합니다. 또한 동시에/PASSWORD 매개 변수도 지정합니다./USERNAME 및/PASSWORD 매개 변수가 지정되지 않은 경우 사용자 인증 데이터를 설정하지 않습니다. +CMD_CascadeProxySocks5_PASSWORD 통해 SOCKS5 프록시 서버에 연결하기 위해 사용자 인증이 필요한 경우 암호를 지정합니다./USERNAME 매개 변수와 함께 지정합니다. # CascadeServerCertEnable 명령 @@ -6594,15 +6607,24 @@ CMD_AccountProxyHttp_PASSWORD 통해 HTTP 프록시 서버에 연결하기 위 CMD_AccountProxyHttp_Prompt_Server 프록시 서버의 호스트 이름과 포트 번호: - # AccountProxySocks 명령 -CMD_AccountProxySocks 연결 설정의 연결 방법을 SOCKS 프록시 서버를 통해 연결 설정 -CMD_AccountProxySocks_Help VPN Client에 등록되어있는 연결 설정을 지정하고 연결 설정 VPN Server에 연결할 때 사용하는 연결 방법을 [SOCKS 프록시 서버를 통해 연결을 설정하고 통해 SOCKS 프록시 서버 호스트 이름과 포트 번호, 사용자 이름과 암호 (필요한 경우)을 지정합니다. \n 통해 SOCKS 서버는 SOCKS 버전 4를 지원해야합니다. +CMD_AccountProxySocks 연결 설정의 연결 방법을 SOCKS4 프록시 서버를 통해 연결 설정 +CMD_AccountProxySocks_Help VPN Client에 등록되어있는 연결 설정을 지정하고 연결 설정 VPN Server에 연결할 때 사용하는 연결 방법을 [SOCKS 프록시 서버를 통해 연결을 설정하고 통해 SOCKS4 프록시 서버 호스트 이름과 포트 번호, 사용자 이름과 암호 (필요한 경우)을 지정합니다. CMD_AccountProxySocks_Args AccountProxySocks [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] CMD_AccountProxySocks_[name] 설정을 변경하려면 연결 설정의 이름을 지정합니다. -CMD_AccountProxySocks_SERVER 호스트 이름:포트 번호 형식으로 통해 SOCKS 프록시 서버의 호스트 이름 또는 IP 주소와 포트 번호를 지정합니다. -CMD_AccountProxySocks_USERNAME 통해 SOCKS 프록시 서버에 연결하기 위해 사용자 인증이 필요한 경우 사용자 이름을 지정합니다. 또한 동시에/PASSWORD 매개 변수도 지정합니다./USERNAME 및/PASSWORD 매개 변수가 지정되지 않은 경우 사용자 인증 데이터를 설정하지 않습니다. -CMD_AccountProxySocks_PASSWORD 통해 SOCKS 프록시 서버에 연결하기 위해 사용자 인증이 필요한 경우 암호를 지정합니다./USERNAME 매개 변수와 함께 지정합니다. +CMD_AccountProxySocks_SERVER 호스트 이름:포트 번호 형식으로 통해 SOCKS4 프록시 서버의 호스트 이름 또는 IP 주소와 포트 번호를 지정합니다. +CMD_AccountProxySocks_USERNAME 통해 SOCKS4 프록시 서버에 연결하기 위해 사용자 인증이 필요한 경우 사용자 이름을 지정합니다. 또한 동시에/PASSWORD 매개 변수도 지정합니다./USERNAME 및/PASSWORD 매개 변수가 지정되지 않은 경우 사용자 인증 데이터를 설정하지 않습니다. +CMD_AccountProxySocks_PASSWORD 통해 SOCKS4 프록시 서버에 연결하기 위해 사용자 인증이 필요한 경우 암호를 지정합니다./USERNAME 매개 변수와 함께 지정합니다. + + +# AccountProxySocks5 명령 +CMD_AccountProxySocks5 연결 설정의 연결 방법을 SOCKS5 프록시 서버를 통해 연결 설정 +CMD_AccountProxySocks5_Help VPN Client에 등록되어있는 연결 설정을 지정하고 연결 설정 VPN Server에 연결할 때 사용하는 연결 방법을 [SOCKS 프록시 서버를 통해 연결을 설정하고 통해 SOCKS5 프록시 서버 호스트 이름과 포트 번호, 사용자 이름과 암호 (필요한 경우)을 지정합니다. +CMD_AccountProxySocks5_Args AccountProxySocks5 [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] +CMD_AccountProxySocks5_[name] 설정을 변경하려면 연결 설정의 이름을 지정합니다. +CMD_AccountProxySocks5_SERVER 호스트 이름:포트 번호 형식으로 통해 SOCKS5 프록시 서버의 호스트 이름 또는 IP 주소와 포트 번호를 지정합니다. +CMD_AccountProxySocks5_USERNAME 통해 SOCKS5 프록시 서버에 연결하기 위해 사용자 인증이 필요한 경우 사용자 이름을 지정합니다. 또한 동시에/PASSWORD 매개 변수도 지정합니다./USERNAME 및/PASSWORD 매개 변수가 지정되지 않은 경우 사용자 인증 데이터를 설정하지 않습니다. +CMD_AccountProxySocks5_PASSWORD 통해 SOCKS5 프록시 서버에 연결하기 위해 사용자 인증이 필요한 경우 암호를 지정합니다./USERNAME 매개 변수와 함께 지정합니다. # AccountServerCertEnable 명령 diff --git a/src/bin/hamcore/strtable_ru.stb b/src/bin/hamcore/strtable_ru.stb index ae9552f2..f4c07620 100644 --- a/src/bin/hamcore/strtable_ru.stb +++ b/src/bin/hamcore/strtable_ru.stb @@ -574,7 +574,8 @@ ERRDLG_DEVICE_ERROR The connection with the VPN Server has been disconnected be # Concerning protocols PROTO_DIRECT_TCP Прямое TCP/IP подключение PROTO_HTTP_PROXY Подключение через HTTP-прокси -PROTO_SOCKS_PROXY Подключение через SOCKS-прокси +PROTO_SOCKS_PROXY Подключение через SOCKS4-прокси +PROTO_SOCKS5_PROXY Подключение через SOCKS5-прокси PROTO_SSH Подключение черзе SSH-сервер PROTO_UNKNOWN Неизвестный протокол @@ -2291,7 +2292,8 @@ STATIC9 You can connect to a VPN Server via a proxy server. STATIC10 Proxy &Type: R_DIRECT_TCP &Direct TCP/IP Connection (No Proxy) R_HTTPS Connect via H&TTP Proxy Server -R_SOCKS Connect via &SOCKS Proxy Server +R_SOCKS Connect via &SOCKS4 Proxy Server +R_SOCKS5 Connect via &SOCKS5 Proxy Server B_PROXY_CONFIG P&roxy Server Setting STATIC11 Server Certificate Veri&fication Option: R_CHECK_CERT Always Verify Server &Certificate @@ -2505,7 +2507,8 @@ STATIC9 You can connect to a VPN Server via a proxy server. STATIC10 Proxy &Type: R_DIRECT_TCP &Direct TCP/IP Connection (No Proxy) R_HTTPS Connect via H&TTP Proxy Server -R_SOCKS Connect via S&OCKS Proxy Server +R_SOCKS Connect via S&OCKS4 Proxy Server +R_SOCKS5 Connect via S&OCKS5 Proxy Server B_PROXY_CONFIG P&roxy Server Setting STATIC11 Select Administration &Mode and Enter Password STATIC12 You can connect to VPN Server using either Server Admin Mode or Virtual Hub Admin Mode.\r\n\r\nServer Admin Mode allows you manage entire VPN Server and all Virtual Hubs. \r\n\r\nVirtual Hub Admin Mode allows you manage only one Virtual Hub for which you hold privileges. @@ -4095,7 +4098,8 @@ STATIC9 You can connect via a proxy server. STATIC10 Proxy &Type: R_DIRECT_TCP &Direct TCP/IP Connection (No Proxy) R_HTTPS Connect via H&TTP Proxy Server -R_SOCKS Connect via S&OCKS Proxy Server +R_SOCKS Connect via S&OCKS4 Proxy Server +R_SOCKS5 Connect via S&OCKS5 Proxy Server B_PROXY_CONFIG P&roxy Server Setting IDOK &OK IDCANCEL Cancel @@ -5310,15 +5314,24 @@ CMD_CascadeProxyHttp_PASSWORD When user authentication is required to connect to CMD_CascadeProxyHttp_Prompt_Server Proxy Server Host Name and Port Number: - # CascadeProxySocks command -CMD_CascadeProxySocks Set Connection Method of Cascade Connection to be via an SOCKS Proxy Server -CMD_CascadeProxySocks_Help When a Cascade Connection registered on the currently managed Virtual Hub is specified and that Cascade Connection connects to a VPN Server, use this to set Connect via SOCKS Proxy Server as the method of connection to use, which requires the specification of the host name and port number of the SOCKS Proxy server to communicate via as well as a user name and password (when required). \nThe on-route SOCKS server must be compatible with SOCKS Version 4. \nYou cannot execute this command for Virtual Hubs of VPN Servers operating as a cluster. +CMD_CascadeProxySocks Set Connection Method of Cascade Connection to be via a SOCKS4 Proxy Server +CMD_CascadeProxySocks_Help When a Cascade Connection registered on the currently managed Virtual Hub is specified and that Cascade Connection connects to a VPN Server, use this to set Connect via SOCKS4 Proxy Server as the method of connection to use, which requires the specification of the host name and port number of the SOCKS4 Proxy server to communicate via as well as a user name and password (when required). \nYou cannot execute this command for Virtual Hubs of VPN Servers operating as a cluster. CMD_CascadeProxySocks_Args CascadeProxySocks [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] CMD_CascadeProxySocks_[name] Specify the name of the Cascade Connection whose setting you want to change. -CMD_CascadeProxySocks_SERVER Specify the host name or IP address, and port number of the on-route SOCKS proxy server using the format "host name:port number". -CMD_CascadeProxySocks_USERNAME When user authentication is required to connect to the on-route SOCKS proxy server, specify the user name. Also, specify the /PASSWORD parameter at the same time. If the parameters /USERNAME and /PASSWORD are not specified, the user authentication data will not be set. -CMD_CascadeProxySocks_PASSWORD When user authentication is required to connect to the on-route SOCKS proxy server, specify the password. Specify this together with the /USERNAME parameter. +CMD_CascadeProxySocks_SERVER Specify the host name or IP address, and port number of the on-route SOCKS4 proxy server using the format "host name:port number". +CMD_CascadeProxySocks_USERNAME When user authentication is required to connect to the on-route SOCKS4 proxy server, specify the user name. Also, specify the /PASSWORD parameter at the same time. If the parameters /USERNAME and /PASSWORD are not specified, the user authentication data will not be set. +CMD_CascadeProxySocks_PASSWORD When user authentication is required to connect to the on-route SOCKS4 proxy server, specify the password. Specify this together with the /USERNAME parameter. + + +# CascadeProxySocks5 command +CMD_CascadeProxySocks5 Set Connection Method of Cascade Connection to be via a SOCKS5 Proxy Server +CMD_CascadeProxySocks5_Help When a Cascade Connection registered on the currently managed Virtual Hub is specified and that Cascade Connection connects to a VPN Server, use this to set Connect via SOCKS5 Proxy Server as the method of connection to use, which requires the specification of the host name and port number of the SOCKS Proxy server to communicate via as well as a user name and password (when required). \nYou cannot execute this command for Virtual Hubs of VPN Servers operating as a cluster. +CMD_CascadeProxySocks5_Args CascadeProxySocks5 [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] +CMD_CascadeProxySocks5_[name] Specify the name of the Cascade Connection whose setting you want to change. +CMD_CascadeProxySocks5_SERVER Specify the host name or IP address, and port number of the on-route SOCKS5 proxy server using the format "host name:port number". +CMD_CascadeProxySocks5_USERNAME When user authentication is required to connect to the on-route SOCKS5 proxy server, specify the user name. Also, specify the /PASSWORD parameter at the same time. If the parameters /USERNAME and /PASSWORD are not specified, the user authentication data will not be set. +CMD_CascadeProxySocks5_PASSWORD When user authentication is required to connect to the on-route SOCKS5 proxy server, specify the password. Specify this together with the /USERNAME parameter. # CascadeServerCertEnable command @@ -6597,15 +6610,24 @@ CMD_AccountProxyHttp_PASSWORD When user authentication is required to connect to CMD_AccountProxyHttp_Prompt_Server Proxy Server Host Name and Port Number: - # AccountProxySocks command -CMD_AccountProxySocks Set Connection Method of VPN Connection Setting to be via an SOCKS Proxy Server -CMD_AccountProxySocks_Help When a VPN Connection Setting registered on the VPN Client is specified and that VPN Connection Setting connects to a VPN Server, use this to set Connect via SOCKS Proxy Server as the method of connection to use, which requires the specification of the host name and port number of the SOCKS Proxy server to communicate via as well as a user name and password (when required). \nThe on-route SOCKS server must be compatible with SOCKS Version 4. +CMD_AccountProxySocks Set Connection Method of VPN Connection Setting to be via a SOCKS4 Proxy Server +CMD_AccountProxySocks_Help When a VPN Connection Setting registered on the VPN Client is specified and that VPN Connection Setting connects to a VPN Server, use this to set Connect via SOCKS4 Proxy Server as the method of connection to use, which requires the specification of the host name and port number of the SOCKS4 Proxy server to communicate via as well as a user name and password (when required). CMD_AccountProxySocks_Args AccountProxySocks [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] CMD_AccountProxySocks_[name] Specify the name of the VPN Connection Setting whose setting you want to change. -CMD_AccountProxySocks_SERVER Specify the host name or IP address, and port number of the on-route SOCKS proxy server using the format [host name:port number]. -CMD_AccountProxySocks_USERNAME When user authentication is required to connect to the on-route SOCKS proxy server, specify the user name. Also, specify the /PASSWORD parameter at the same time. If the parameters /USERNAME and /PASSWORD are not specified, the user authentication data will not be set. -CMD_AccountProxySocks_PASSWORD When user authentication is required to connect to the on-route SOCKS proxy server, specify the password. Specify this together with the /USERNAME parameter. +CMD_AccountProxySocks_SERVER Specify the host name or IP address, and port number of the on-route SOCKS4 proxy server using the format [host name:port number]. +CMD_AccountProxySocks_USERNAME When user authentication is required to connect to the on-route SOCKS4 proxy server, specify the user name. Also, specify the /PASSWORD parameter at the same time. If the parameters /USERNAME and /PASSWORD are not specified, the user authentication data will not be set. +CMD_AccountProxySocks_PASSWORD When user authentication is required to connect to the on-route SOCKS4 proxy server, specify the password. Specify this together with the /USERNAME parameter. + + +# AccountProxySocks5 command +CMD_AccountProxySocks5 Set Connection Method of VPN Connection Setting to be via a SOCKS5 Proxy Server +CMD_AccountProxySocks5_Help When a VPN Connection Setting registered on the VPN Client is specified and that VPN Connection Setting connects to a VPN Server, use this to set Connect via SOCKS5 Proxy Server as the method of connection to use, which requires the specification of the host name and port number of the SOCKS5 Proxy server to communicate via as well as a user name and password (when required). +CMD_AccountProxySocks5_Args AccountProxySocks5 [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] +CMD_AccountProxySocks5_[name] Specify the name of the VPN Connection Setting whose setting you want to change. +CMD_AccountProxySocks5_SERVER Specify the host name or IP address, and port number of the on-route SOCKS5 proxy server using the format [host name:port number]. +CMD_AccountProxySocks5_USERNAME When user authentication is required to connect to the on-route SOCKS5 proxy server, specify the user name. Also, specify the /PASSWORD parameter at the same time. If the parameters /USERNAME and /PASSWORD are not specified, the user authentication data will not be set. +CMD_AccountProxySocks5_PASSWORD When user authentication is required to connect to the on-route SOCKS5 proxy server, specify the password. Specify this together with the /USERNAME parameter. # AccountServerCertEnable command diff --git a/src/bin/hamcore/strtable_tw.stb b/src/bin/hamcore/strtable_tw.stb index f2acf604..c78f59c1 100644 --- a/src/bin/hamcore/strtable_tw.stb +++ b/src/bin/hamcore/strtable_tw.stb @@ -583,7 +583,8 @@ ERRDLG_DEVICE_ERROR 與 VPN Server 的連接被中斷,因為虛擬網路介 # 關於協議 PROTO_DIRECT_TCP 直接的 TCP/IP 連接 PROTO_HTTP_PROXY 通過 HTTP 代理伺服器連接 -PROTO_SOCKS_PROXY 通過 SOCKS 代理伺服器連接 +PROTO_SOCKS_PROXY 通過 SOCKS4 代理伺服器連接 +PROTO_SOCKS5_PROXY 通過 SOCKS5 代理伺服器連接 PROTO_SSH 通過 SSH 伺服器連接 PROTO_UNKNOWN 未知協議 @@ -2312,7 +2313,8 @@ STATIC9 您可以通過代理伺服器連接到 VPN Server。 STATIC10 代理類型(&T): R_DIRECT_TCP 直接 TCP/IP 連接(無代理)(&D) R_HTTPS 通過 HTTP 代理伺服器連接(&T) -R_SOCKS 通過 SOCKS 代理伺服器連接(&S) +R_SOCKS 通過 SOCKS4 代理伺服器連接(&S) +R_SOCKS5 通過 SOCKS5 代理伺服器連接(&S) B_PROXY_CONFIG 代理伺服器設置(&R) STATIC11 服務端證書驗證選項(&F): R_CHECK_CERT 總是驗證服務端證書(&C) @@ -2527,7 +2529,8 @@ STATIC9 您可以通過代理伺服器連接到 VPN Server。 STATIC10 代理類型(&T): R_DIRECT_TCP 直接 TCP/IP 連接 (無代理) (&D) R_HTTPS 通過 HTTP 代理伺服器連接(&T) -R_SOCKS 通過 SOCKS 代理伺服器連接(&O) +R_SOCKS 通過 SOCKS4 代理伺服器連接(&O) +R_SOCKS5 通過 SOCKS5 代理伺服器連接(&O) B_PROXY_CONFIG 代理伺服器設置(&R) STATIC11 選擇管理模式並輸入密碼(&M) STATIC12 您可以使用服務端管理模式或虛擬 HUB 管理模式連接到 VPN Server。\r\n\r\n伺服器管理模式允許您管理整個 VPN Server 和所有虛擬 HUB 。\r\n\r\n虛擬 HUB 管理模式允許您只能管理您擁有許可權的一個虛擬 HUB 。 @@ -4111,7 +4114,8 @@ STATIC9 您可以通過代理伺服器連接 STATIC10 代表類型: R_DIRECT_TCP 直接 TCP/IP 連接(無代理)(&D) R_HTTPS 通過 HTTP 代理伺服器連接(&T) -R_SOCKS 通過 SOCKS 代理伺服器連接(&K) +R_SOCKS 通過 SOCKS4 代理伺服器連接(&K) +R_SOCKS5 通過 SOCKS5 代理伺服器連接(&K) B_PROXY_CONFIG 代理伺服器設置(&R) IDOK 確定(&O) IDCANCEL 取消 @@ -5343,15 +5347,24 @@ CMD_CascadeProxyHttp_PASSWORD 如果連接到 HTTP 代理伺服器時需要使 CMD_CascadeProxyHttp_Prompt_Server 代理伺服器主機名稱和埠號: - # CascadeProxySocks 命令 -CMD_CascadeProxySocks 將級聯連接方法設定為通過 SOCKS 代理伺服器 -CMD_CascadeProxySocks_Help 指定已經在當前虛擬 HUB 註冊的級聯連接,當此連接和 VPN Server 之間通信時,設置連接方法為 [通過 SOCKS 代理伺服器],設置 SOCKS8 代理伺服器的主機名稱和埠號,用戶名和密碼 (如果需要)。\nSOCKS 伺服器,需與 SOCKS 第 4 版想匹配。\n此命令在集群虛擬 HUB 中不能運行。 +CMD_CascadeProxySocks 將級聯連接方法設定為通過 SOCKS4 代理伺服器 +CMD_CascadeProxySocks_Help 指定已經在當前虛擬 HUB 註冊的級聯連接,當此連接和 VPN Server 之間通信時,設置連接方法為 [通過 SOCKS4 代理伺服器],設置 SOCKS4 代理伺服器的主機名稱和埠號,用戶名和密碼 (如果需要)。\n此命令在集群虛擬 HUB 中不能運行。 CMD_CascadeProxySocks_Args CascadeProxySocks [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] CMD_CascadeProxySocks_[name] 指定級聯名稱來改變設置。 CMD_CascadeProxySocks_SERVER 按照 [主機名稱:埠號] 的格式,設定代理伺服器主機名稱或 IP 位址和埠號。 -CMD_CascadeProxySocks_USERNAME 如果連接到 SOCKS 代理伺服器時需要使用者驗證,則指定用戶名。同時設定密碼和參數。如果沒有設定用戶名和密碼參數,則不需要設置使用者身份驗證。 -CMD_CascadeProxySocks_PASSWORD 如果連接到 SOCKS 代理伺服器時需要使用者驗證,則指定密碼。/USERNAME,參數等同時設定。 +CMD_CascadeProxySocks_USERNAME 如果連接到 SOCKS4 代理伺服器時需要使用者驗證,則指定用戶名。同時設定密碼和參數。如果沒有設定用戶名和密碼參數,則不需要設置使用者身份驗證。 +CMD_CascadeProxySocks_PASSWORD 如果連接到 SOCKS4 代理伺服器時需要使用者驗證,則指定密碼。/USERNAME,參數等同時設定。 + + +# CascadeProxySocks5 命令 +CMD_CascadeProxySocks5 將級聯連接方法設定為通過 SOCKS5 代理伺服器 +CMD_CascadeProxySocks5_Help 指定已經在當前虛擬 HUB 註冊的級聯連接,當此連接和 VPN Server 之間通信時,設置連接方法為 [通過 SOCKS5 代理伺服器],設置 SOCKS5 代理伺服器的主機名稱和埠號,用戶名和密碼 (如果需要)。\n此命令在集群虛擬 HUB 中不能運行。 +CMD_CascadeProxySocks5_Args CascadeProxySocks [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] +CMD_CascadeProxySocks5_[name] 指定級聯名稱來改變設置。 +CMD_CascadeProxySocks5_SERVER 按照 [主機名稱:埠號] 的格式,設定代理伺服器主機名稱或 IP 位址和埠號。 +CMD_CascadeProxySocks5_USERNAME 如果連接到 SOCKS5 代理伺服器時需要使用者驗證,則指定用戶名。同時設定密碼和參數。如果沒有設定用戶名和密碼參數,則不需要設置使用者身份驗證。 +CMD_CascadeProxySocks5_PASSWORD 如果連接到 SOCKS5 代理伺服器時需要使用者驗證,則指定密碼。/USERNAME,參數等同時設定。 # CascadeServerCertEnable 命令 @@ -6628,15 +6641,24 @@ CMD_AccountProxyHttp_PASSWORD 如果因為連接通過 HTTP 代理伺服器而 CMD_AccountProxyHttp_Prompt_Server 代理伺服器主機名稱和埠號: - # AccountProxySocks 命令 -CMD_AccountProxySocks 將連接設置的連接方法設置為通過 SOCKS 代理伺服器連接 -CMD_AccountProxySocks_Help 當指定註冊到 VPN Client 的連接設置,將其連接設置與 VPN Server 間進行 VPN 連接時使用的連接方法設置為 [通過 SOCKS 伺服器連接],並指定要通過的 SOCKS 代理伺服器的主機名稱和埠號,用戶名和密碼 (如果需要)。\n通過 SOCKS 伺服器,必須對應 SOCKS 版本 4。 +CMD_AccountProxySocks 將連接設置的連接方法設置為通過 SOCKS4 代理伺服器連接 +CMD_AccountProxySocks_Help 當指定註冊到 VPN Client 的連接設置,將其連接設置與 VPN Server 間進行 VPN 連接時使用的連接方法設置為 [通過 SOCKS4 伺服器連接],並指定要通過的 SOCKS4 代理伺服器的主機名稱和埠號,用戶名和密碼 (如果需要)。 CMD_AccountProxySocks_Args AccountProxySocks [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] CMD_AccountProxySocks_[name] 指定要更改設置的連接設置名。 -CMD_AccountProxySocks_SERVER 以 [主機名稱:埠號] 形式,指定要通過的 SOCKS 代理伺服器主機名稱或 IP 位址和埠號。 -CMD_AccountProxySocks_USERNAME 如果因為連接通過 SOCKS 代理伺服器而需要使用者認證時,指定用戶名。與此同時也指定 /PASSWORD 參數。/USERNAME 和 /PASSWORD 參數沒有被指定時,不設置使用者身份驗證資料。 -CMD_AccountProxySocks_PASSWORD 如果因為連接通過 SOCKS 代理伺服器而需要使用者認證時,指定密碼。與 /USERNAME 參數一起指定。 +CMD_AccountProxySocks_SERVER 以 [主機名稱:埠號] 形式,指定要通過的 SOCKS4 代理伺服器主機名稱或 IP 位址和埠號。 +CMD_AccountProxySocks_USERNAME 如果因為連接通過 SOCKS4 代理伺服器而需要使用者認證時,指定用戶名。與此同時也指定 /PASSWORD 參數。/USERNAME 和 /PASSWORD 參數沒有被指定時,不設置使用者身份驗證資料。 +CMD_AccountProxySocks_PASSWORD 如果因為連接通過 SOCKS4 代理伺服器而需要使用者認證時,指定密碼。與 /USERNAME 參數一起指定。 + + +# AccountProxySocks5 命令 +CMD_AccountProxySocks5 將連接設置的連接方法設置為通過 SOCKS5 代理伺服器連接 +CMD_AccountProxySocks5_Help 當指定註冊到 VPN Client 的連接設置,將其連接設置與 VPN Server 間進行 VPN 連接時使用的連接方法設置為 [通過 SOCKS5 伺服器連接],並指定要通過的 SOCKS5 代理伺服器的主機名稱和埠號,用戶名和密碼 (如果需要)。 +CMD_AccountProxySocks5_Args AccountProxySocks5 [name] [/SERVER:hostname:port] [/USERNAME:username] [/PASSWORD:password] +CMD_AccountProxySocks5_[name] 指定要更改設置的連接設置名。 +CMD_AccountProxySocks5_SERVER 以 [主機名稱:埠號] 形式,指定要通過的 SOCKS5 代理伺服器主機名稱或 IP 位址和埠號。 +CMD_AccountProxySocks5_USERNAME 如果因為連接通過 SOCKS5 代理伺服器而需要使用者認證時,指定用戶名。與此同時也指定 /PASSWORD 參數。/USERNAME 和 /PASSWORD 參數沒有被指定時,不設置使用者身份驗證資料。 +CMD_AccountProxySocks5_PASSWORD 如果因為連接通過 SOCKS5 代理伺服器而需要使用者認證時,指定密碼。與 /USERNAME 參數一起指定。 # AccountServerCertEnable 命令