Loading tpws/tpws.c +71 −57 Original line number Diff line number Diff line Loading @@ -175,6 +175,7 @@ static void exithelp(void) #endif " --debug=0|1|2|syslog|@<filename>\t; 1 and 2 means log to console and set debug level. for other targets use --debug-level.\n" " --debug-level=0|1|2\t\t\t; specify debug level\n" " --dry-run\t\t\t\t; verify parameters and exit with code 0 if successful\n" "\nMULTI-STRATEGY:\n" " --new\t\t\t\t\t; begin new strategy\n" " --skip\t\t\t\t\t; do not use this strategy\n" Loading Loading @@ -569,7 +570,7 @@ void parse_params(int argc, char *argv[]) { int option_index = 0; int v, i; bool bSkip=false; bool bSkip=false, bDry=false; struct hostlist_file *anon_hl = NULL, *anon_hl_exclude = NULL; struct ipset_file *anon_ips = NULL, *anon_ips_exclude = NULL; Loading Loading @@ -667,40 +668,41 @@ void parse_params(int argc, char *argv[]) { "pidfile",required_argument,0,0 },// optidx=44 { "debug",optional_argument,0,0 },// optidx=45 { "debug-level",required_argument,0,0 },// optidx=46 { "local-rcvbuf",required_argument,0,0 },// optidx=47 { "local-sndbuf",required_argument,0,0 },// optidx=48 { "remote-rcvbuf",required_argument,0,0 },// optidx=49 { "remote-sndbuf",required_argument,0,0 },// optidx=50 { "socks",no_argument,0,0 },// optidx=51 { "no-resolve",no_argument,0,0 },// optidx=52 { "resolver-threads",required_argument,0,0 },// optidx=53 { "skip-nodelay",no_argument,0,0 },// optidx=54 { "tamper-start",required_argument,0,0 },// optidx=55 { "tamper-cutoff",required_argument,0,0 },// optidx=56 { "connect-bind-addr",required_argument,0,0 },// optidx=57 { "new",no_argument,0,0 }, // optidx=58 { "skip",no_argument,0,0 }, // optidx=59 { "filter-l3",required_argument,0,0 }, // optidx=60 { "filter-tcp",required_argument,0,0 }, // optidx=61 { "filter-l7",required_argument,0,0 }, // optidx=62 { "ipset",required_argument,0,0 }, // optidx=63 { "ipset-ip",required_argument,0,0 }, // optidx=64 { "ipset-exclude",required_argument,0,0 }, // optidx=65 { "ipset-exclude-ip",required_argument,0,0 }, // optidx=66 { "dry-run",no_argument,0,0 },// optidx=47 { "local-rcvbuf",required_argument,0,0 },// optidx=48 { "local-sndbuf",required_argument,0,0 },// optidx=49 { "remote-rcvbuf",required_argument,0,0 },// optidx=50 { "remote-sndbuf",required_argument,0,0 },// optidx=51 { "socks",no_argument,0,0 },// optidx=52 { "no-resolve",no_argument,0,0 },// optidx=53 { "resolver-threads",required_argument,0,0 },// optidx=54 { "skip-nodelay",no_argument,0,0 },// optidx=55 { "tamper-start",required_argument,0,0 },// optidx=56 { "tamper-cutoff",required_argument,0,0 },// optidx=57 { "connect-bind-addr",required_argument,0,0 },// optidx=58 { "new",no_argument,0,0 }, // optidx=59 { "skip",no_argument,0,0 }, // optidx=60 { "filter-l3",required_argument,0,0 }, // optidx=61 { "filter-tcp",required_argument,0,0 }, // optidx=63 { "filter-l7",required_argument,0,0 }, // optidx=64 { "ipset",required_argument,0,0 }, // optidx=65 { "ipset-ip",required_argument,0,0 }, // optidx=66 { "ipset-exclude",required_argument,0,0 }, // optidx=67 { "ipset-exclude-ip",required_argument,0,0 }, // optidx=68 #if defined(__FreeBSD__) { "enable-pf",no_argument,0,0 },// optidx=67 { "enable-pf",no_argument,0,0 },// optidx=68 #elif defined(__APPLE__) { "local-tcp-user-timeout",required_argument,0,0 }, // optidx=67 { "remote-tcp-user-timeout",required_argument,0,0 }, // optidx=68 { "local-tcp-user-timeout",required_argument,0,0 }, // optidx=68 { "remote-tcp-user-timeout",required_argument,0,0 }, // optidx=69 #elif defined(__linux__) { "local-tcp-user-timeout",required_argument,0,0 }, // optidx=67 { "remote-tcp-user-timeout",required_argument,0,0 }, // optidx=68 { "mss",required_argument,0,0 }, // optidx=69 { "fix-seg",optional_argument,0,0 }, // optidx=70 { "local-tcp-user-timeout",required_argument,0,0 }, // optidx=68 { "remote-tcp-user-timeout",required_argument,0,0 }, // optidx=69 { "mss",required_argument,0,0 }, // optidx=70 { "fix-seg",optional_argument,0,0 }, // optidx=71 #ifdef SPLICE_PRESENT { "nosplice",no_argument,0,0 }, // optidx=71 { "nosplice",no_argument,0,0 }, // optidx=72 #endif #endif { "hostlist-auto-retrans-threshold",optional_argument,0,0}, // ignored. for nfqws command line compatibility Loading @@ -708,7 +710,11 @@ void parse_params(int argc, char *argv[]) }; while ((v = getopt_long_only(argc, argv, "", long_options, &option_index)) != -1) { if (v) exithelp_clean(); if (v) if (bDry) exit_clean(1); else exithelp_clean(); switch (option_index) { case 0: Loading Loading @@ -1142,41 +1148,44 @@ void parse_params(int argc, char *argv[]) case 46: /* debug-level */ params.debug = atoi(optarg); break; case 47: /* local-rcvbuf */ case 47: /* dry-run */ bDry = true; break; case 48: /* local-rcvbuf */ #ifdef __linux__ params.local_rcvbuf = atoi(optarg)/2; #else params.local_rcvbuf = atoi(optarg); #endif break; case 48: /* local-sndbuf */ case 49: /* local-sndbuf */ #ifdef __linux__ params.local_sndbuf = atoi(optarg)/2; #else params.local_sndbuf = atoi(optarg); #endif break; case 49: /* remote-rcvbuf */ case 50: /* remote-rcvbuf */ #ifdef __linux__ params.remote_rcvbuf = atoi(optarg)/2; #else params.remote_rcvbuf = atoi(optarg); #endif break; case 50: /* remote-sndbuf */ case 51: /* remote-sndbuf */ #ifdef __linux__ params.remote_sndbuf = atoi(optarg)/2; #else params.remote_sndbuf = atoi(optarg); #endif break; case 51: /* socks */ case 52: /* socks */ params.proxy_type = CONN_TYPE_SOCKS; break; case 52: /* no-resolve */ case 53: /* no-resolve */ params.no_resolve = true; break; case 53: /* resolver-threads */ case 54: /* resolver-threads */ params.resolver_threads = atoi(optarg); if (params.resolver_threads<1 || params.resolver_threads>300) { Loading @@ -1184,10 +1193,10 @@ void parse_params(int argc, char *argv[]) exit_clean(1); } break; case 54: /* skip-nodelay */ case 55: /* skip-nodelay */ params.skip_nodelay = true; break; case 55: /* tamper-start */ case 56: /* tamper-start */ { const char *p=optarg; if (*p=='n') Loading @@ -1201,7 +1210,7 @@ void parse_params(int argc, char *argv[]) } params.tamper_lim = true; break; case 56: /* tamper-cutoff */ case 57: /* tamper-cutoff */ { const char *p=optarg; if (*p=='n') Loading @@ -1215,7 +1224,7 @@ void parse_params(int argc, char *argv[]) } params.tamper_lim = true; break; case 57: /* connect-bind-addr */ case 58: /* connect-bind-addr */ { char *p = strchr(optarg,'%'); if (p) *p++=0; Loading Loading @@ -1243,7 +1252,7 @@ void parse_params(int argc, char *argv[]) break; case 58: /* new */ case 59: /* new */ if (bSkip) { dp_clear(dp); Loading @@ -1264,31 +1273,31 @@ void parse_params(int argc, char *argv[]) anon_hl = anon_hl_exclude = NULL; anon_ips = anon_ips_exclude = NULL; break; case 59: /* skip */ case 60: /* skip */ bSkip = true; break; case 60: /* filter-l3 */ case 61: /* filter-l3 */ if (!wf_make_l3(optarg,&dp->filter_ipv4,&dp->filter_ipv6)) { DLOG_ERR("bad value for --filter-l3\n"); exit_clean(1); } break; case 61: /* filter-tcp */ case 62: /* filter-tcp */ if (!parse_pf_list(optarg,&dp->pf_tcp)) { DLOG_ERR("Invalid port filter : %s\n",optarg); exit_clean(1); } break; case 62: /* filter-l7 */ case 63: /* filter-l7 */ if (!parse_l7_list(optarg,&dp->filter_l7)) { DLOG_ERR("Invalid l7 filter : %s\n",optarg); exit_clean(1); } break; case 63: /* ipset */ case 64: /* ipset */ if (bSkip) break; if (!RegisterIpset(dp, false, optarg)) { Loading @@ -1297,7 +1306,7 @@ void parse_params(int argc, char *argv[]) } params.tamper = true; break; case 64: /* ipset-ip */ case 65: /* ipset-ip */ if (bSkip) break; if (!anon_ips && !(anon_ips=RegisterIpset(dp, false, NULL))) { Loading @@ -1311,7 +1320,7 @@ void parse_params(int argc, char *argv[]) } params.tamper = true; break; case 65: /* ipset-exclude */ case 66: /* ipset-exclude */ if (bSkip) break; if (!RegisterIpset(dp, true, optarg)) { Loading @@ -1320,7 +1329,7 @@ void parse_params(int argc, char *argv[]) } params.tamper = true; break; case 66: /* ipset-exclude-ip */ case 67: /* ipset-exclude-ip */ if (bSkip) break; if (!anon_ips_exclude && !(anon_ips_exclude=RegisterIpset(dp, true, NULL))) { Loading @@ -1336,11 +1345,11 @@ void parse_params(int argc, char *argv[]) break; #if defined(__FreeBSD__) case 67: /* enable-pf */ case 68: /* enable-pf */ params.pf_enable = true; break; #elif defined(__linux__) || defined(__APPLE__) case 67: /* local-tcp-user-timeout */ case 68: /* local-tcp-user-timeout */ params.tcp_user_timeout_local = atoi(optarg); if (params.tcp_user_timeout_local<0 || params.tcp_user_timeout_local>86400) { Loading @@ -1348,7 +1357,7 @@ void parse_params(int argc, char *argv[]) exit_clean(1); } break; case 68: /* remote-tcp-user-timeout */ case 69: /* remote-tcp-user-timeout */ params.tcp_user_timeout_remote = atoi(optarg); if (params.tcp_user_timeout_remote<0 || params.tcp_user_timeout_remote>86400) { Loading @@ -1359,7 +1368,7 @@ void parse_params(int argc, char *argv[]) #endif #if defined(__linux__) case 69: /* mss */ case 70: /* mss */ // this option does not work in any BSD and MacOS. OS may accept but it changes nothing dp->mss = atoi(optarg); if (dp->mss<88 || dp->mss>32767) Loading @@ -1368,7 +1377,7 @@ void parse_params(int argc, char *argv[]) exit_clean(1); } break; case 70: /* fix-seg */ case 71: /* fix-seg */ if (!params.fix_seg_avail) { DLOG_ERR("--fix-seg is supported since kernel 4.6\n"); Loading @@ -1388,7 +1397,7 @@ void parse_params(int argc, char *argv[]) params.fix_seg = FIX_SEG_DEFAULT_MAX_WAIT; break; #ifdef SPLICE_PRESENT case 71: /* nosplice */ case 72: /* nosplice */ params.nosplice = true; break; #endif Loading Loading @@ -1463,6 +1472,11 @@ void parse_params(int argc, char *argv[]) // do not need args from file anymore cleanup_args(); #endif if (bDry) { DLOG_CONDUP("command line parameters verified\n"); exit_clean(0); } } Loading Loading
tpws/tpws.c +71 −57 Original line number Diff line number Diff line Loading @@ -175,6 +175,7 @@ static void exithelp(void) #endif " --debug=0|1|2|syslog|@<filename>\t; 1 and 2 means log to console and set debug level. for other targets use --debug-level.\n" " --debug-level=0|1|2\t\t\t; specify debug level\n" " --dry-run\t\t\t\t; verify parameters and exit with code 0 if successful\n" "\nMULTI-STRATEGY:\n" " --new\t\t\t\t\t; begin new strategy\n" " --skip\t\t\t\t\t; do not use this strategy\n" Loading Loading @@ -569,7 +570,7 @@ void parse_params(int argc, char *argv[]) { int option_index = 0; int v, i; bool bSkip=false; bool bSkip=false, bDry=false; struct hostlist_file *anon_hl = NULL, *anon_hl_exclude = NULL; struct ipset_file *anon_ips = NULL, *anon_ips_exclude = NULL; Loading Loading @@ -667,40 +668,41 @@ void parse_params(int argc, char *argv[]) { "pidfile",required_argument,0,0 },// optidx=44 { "debug",optional_argument,0,0 },// optidx=45 { "debug-level",required_argument,0,0 },// optidx=46 { "local-rcvbuf",required_argument,0,0 },// optidx=47 { "local-sndbuf",required_argument,0,0 },// optidx=48 { "remote-rcvbuf",required_argument,0,0 },// optidx=49 { "remote-sndbuf",required_argument,0,0 },// optidx=50 { "socks",no_argument,0,0 },// optidx=51 { "no-resolve",no_argument,0,0 },// optidx=52 { "resolver-threads",required_argument,0,0 },// optidx=53 { "skip-nodelay",no_argument,0,0 },// optidx=54 { "tamper-start",required_argument,0,0 },// optidx=55 { "tamper-cutoff",required_argument,0,0 },// optidx=56 { "connect-bind-addr",required_argument,0,0 },// optidx=57 { "new",no_argument,0,0 }, // optidx=58 { "skip",no_argument,0,0 }, // optidx=59 { "filter-l3",required_argument,0,0 }, // optidx=60 { "filter-tcp",required_argument,0,0 }, // optidx=61 { "filter-l7",required_argument,0,0 }, // optidx=62 { "ipset",required_argument,0,0 }, // optidx=63 { "ipset-ip",required_argument,0,0 }, // optidx=64 { "ipset-exclude",required_argument,0,0 }, // optidx=65 { "ipset-exclude-ip",required_argument,0,0 }, // optidx=66 { "dry-run",no_argument,0,0 },// optidx=47 { "local-rcvbuf",required_argument,0,0 },// optidx=48 { "local-sndbuf",required_argument,0,0 },// optidx=49 { "remote-rcvbuf",required_argument,0,0 },// optidx=50 { "remote-sndbuf",required_argument,0,0 },// optidx=51 { "socks",no_argument,0,0 },// optidx=52 { "no-resolve",no_argument,0,0 },// optidx=53 { "resolver-threads",required_argument,0,0 },// optidx=54 { "skip-nodelay",no_argument,0,0 },// optidx=55 { "tamper-start",required_argument,0,0 },// optidx=56 { "tamper-cutoff",required_argument,0,0 },// optidx=57 { "connect-bind-addr",required_argument,0,0 },// optidx=58 { "new",no_argument,0,0 }, // optidx=59 { "skip",no_argument,0,0 }, // optidx=60 { "filter-l3",required_argument,0,0 }, // optidx=61 { "filter-tcp",required_argument,0,0 }, // optidx=63 { "filter-l7",required_argument,0,0 }, // optidx=64 { "ipset",required_argument,0,0 }, // optidx=65 { "ipset-ip",required_argument,0,0 }, // optidx=66 { "ipset-exclude",required_argument,0,0 }, // optidx=67 { "ipset-exclude-ip",required_argument,0,0 }, // optidx=68 #if defined(__FreeBSD__) { "enable-pf",no_argument,0,0 },// optidx=67 { "enable-pf",no_argument,0,0 },// optidx=68 #elif defined(__APPLE__) { "local-tcp-user-timeout",required_argument,0,0 }, // optidx=67 { "remote-tcp-user-timeout",required_argument,0,0 }, // optidx=68 { "local-tcp-user-timeout",required_argument,0,0 }, // optidx=68 { "remote-tcp-user-timeout",required_argument,0,0 }, // optidx=69 #elif defined(__linux__) { "local-tcp-user-timeout",required_argument,0,0 }, // optidx=67 { "remote-tcp-user-timeout",required_argument,0,0 }, // optidx=68 { "mss",required_argument,0,0 }, // optidx=69 { "fix-seg",optional_argument,0,0 }, // optidx=70 { "local-tcp-user-timeout",required_argument,0,0 }, // optidx=68 { "remote-tcp-user-timeout",required_argument,0,0 }, // optidx=69 { "mss",required_argument,0,0 }, // optidx=70 { "fix-seg",optional_argument,0,0 }, // optidx=71 #ifdef SPLICE_PRESENT { "nosplice",no_argument,0,0 }, // optidx=71 { "nosplice",no_argument,0,0 }, // optidx=72 #endif #endif { "hostlist-auto-retrans-threshold",optional_argument,0,0}, // ignored. for nfqws command line compatibility Loading @@ -708,7 +710,11 @@ void parse_params(int argc, char *argv[]) }; while ((v = getopt_long_only(argc, argv, "", long_options, &option_index)) != -1) { if (v) exithelp_clean(); if (v) if (bDry) exit_clean(1); else exithelp_clean(); switch (option_index) { case 0: Loading Loading @@ -1142,41 +1148,44 @@ void parse_params(int argc, char *argv[]) case 46: /* debug-level */ params.debug = atoi(optarg); break; case 47: /* local-rcvbuf */ case 47: /* dry-run */ bDry = true; break; case 48: /* local-rcvbuf */ #ifdef __linux__ params.local_rcvbuf = atoi(optarg)/2; #else params.local_rcvbuf = atoi(optarg); #endif break; case 48: /* local-sndbuf */ case 49: /* local-sndbuf */ #ifdef __linux__ params.local_sndbuf = atoi(optarg)/2; #else params.local_sndbuf = atoi(optarg); #endif break; case 49: /* remote-rcvbuf */ case 50: /* remote-rcvbuf */ #ifdef __linux__ params.remote_rcvbuf = atoi(optarg)/2; #else params.remote_rcvbuf = atoi(optarg); #endif break; case 50: /* remote-sndbuf */ case 51: /* remote-sndbuf */ #ifdef __linux__ params.remote_sndbuf = atoi(optarg)/2; #else params.remote_sndbuf = atoi(optarg); #endif break; case 51: /* socks */ case 52: /* socks */ params.proxy_type = CONN_TYPE_SOCKS; break; case 52: /* no-resolve */ case 53: /* no-resolve */ params.no_resolve = true; break; case 53: /* resolver-threads */ case 54: /* resolver-threads */ params.resolver_threads = atoi(optarg); if (params.resolver_threads<1 || params.resolver_threads>300) { Loading @@ -1184,10 +1193,10 @@ void parse_params(int argc, char *argv[]) exit_clean(1); } break; case 54: /* skip-nodelay */ case 55: /* skip-nodelay */ params.skip_nodelay = true; break; case 55: /* tamper-start */ case 56: /* tamper-start */ { const char *p=optarg; if (*p=='n') Loading @@ -1201,7 +1210,7 @@ void parse_params(int argc, char *argv[]) } params.tamper_lim = true; break; case 56: /* tamper-cutoff */ case 57: /* tamper-cutoff */ { const char *p=optarg; if (*p=='n') Loading @@ -1215,7 +1224,7 @@ void parse_params(int argc, char *argv[]) } params.tamper_lim = true; break; case 57: /* connect-bind-addr */ case 58: /* connect-bind-addr */ { char *p = strchr(optarg,'%'); if (p) *p++=0; Loading Loading @@ -1243,7 +1252,7 @@ void parse_params(int argc, char *argv[]) break; case 58: /* new */ case 59: /* new */ if (bSkip) { dp_clear(dp); Loading @@ -1264,31 +1273,31 @@ void parse_params(int argc, char *argv[]) anon_hl = anon_hl_exclude = NULL; anon_ips = anon_ips_exclude = NULL; break; case 59: /* skip */ case 60: /* skip */ bSkip = true; break; case 60: /* filter-l3 */ case 61: /* filter-l3 */ if (!wf_make_l3(optarg,&dp->filter_ipv4,&dp->filter_ipv6)) { DLOG_ERR("bad value for --filter-l3\n"); exit_clean(1); } break; case 61: /* filter-tcp */ case 62: /* filter-tcp */ if (!parse_pf_list(optarg,&dp->pf_tcp)) { DLOG_ERR("Invalid port filter : %s\n",optarg); exit_clean(1); } break; case 62: /* filter-l7 */ case 63: /* filter-l7 */ if (!parse_l7_list(optarg,&dp->filter_l7)) { DLOG_ERR("Invalid l7 filter : %s\n",optarg); exit_clean(1); } break; case 63: /* ipset */ case 64: /* ipset */ if (bSkip) break; if (!RegisterIpset(dp, false, optarg)) { Loading @@ -1297,7 +1306,7 @@ void parse_params(int argc, char *argv[]) } params.tamper = true; break; case 64: /* ipset-ip */ case 65: /* ipset-ip */ if (bSkip) break; if (!anon_ips && !(anon_ips=RegisterIpset(dp, false, NULL))) { Loading @@ -1311,7 +1320,7 @@ void parse_params(int argc, char *argv[]) } params.tamper = true; break; case 65: /* ipset-exclude */ case 66: /* ipset-exclude */ if (bSkip) break; if (!RegisterIpset(dp, true, optarg)) { Loading @@ -1320,7 +1329,7 @@ void parse_params(int argc, char *argv[]) } params.tamper = true; break; case 66: /* ipset-exclude-ip */ case 67: /* ipset-exclude-ip */ if (bSkip) break; if (!anon_ips_exclude && !(anon_ips_exclude=RegisterIpset(dp, true, NULL))) { Loading @@ -1336,11 +1345,11 @@ void parse_params(int argc, char *argv[]) break; #if defined(__FreeBSD__) case 67: /* enable-pf */ case 68: /* enable-pf */ params.pf_enable = true; break; #elif defined(__linux__) || defined(__APPLE__) case 67: /* local-tcp-user-timeout */ case 68: /* local-tcp-user-timeout */ params.tcp_user_timeout_local = atoi(optarg); if (params.tcp_user_timeout_local<0 || params.tcp_user_timeout_local>86400) { Loading @@ -1348,7 +1357,7 @@ void parse_params(int argc, char *argv[]) exit_clean(1); } break; case 68: /* remote-tcp-user-timeout */ case 69: /* remote-tcp-user-timeout */ params.tcp_user_timeout_remote = atoi(optarg); if (params.tcp_user_timeout_remote<0 || params.tcp_user_timeout_remote>86400) { Loading @@ -1359,7 +1368,7 @@ void parse_params(int argc, char *argv[]) #endif #if defined(__linux__) case 69: /* mss */ case 70: /* mss */ // this option does not work in any BSD and MacOS. OS may accept but it changes nothing dp->mss = atoi(optarg); if (dp->mss<88 || dp->mss>32767) Loading @@ -1368,7 +1377,7 @@ void parse_params(int argc, char *argv[]) exit_clean(1); } break; case 70: /* fix-seg */ case 71: /* fix-seg */ if (!params.fix_seg_avail) { DLOG_ERR("--fix-seg is supported since kernel 4.6\n"); Loading @@ -1388,7 +1397,7 @@ void parse_params(int argc, char *argv[]) params.fix_seg = FIX_SEG_DEFAULT_MAX_WAIT; break; #ifdef SPLICE_PRESENT case 71: /* nosplice */ case 72: /* nosplice */ params.nosplice = true; break; #endif Loading Loading @@ -1463,6 +1472,11 @@ void parse_params(int argc, char *argv[]) // do not need args from file anymore cleanup_args(); #endif if (bDry) { DLOG_CONDUP("command line parameters verified\n"); exit_clean(0); } } Loading