From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server-vie001.gnuweeb.org X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,URIBL_DBL_BLOCKED_OPENDNS, URIBL_ZEN_BLOCKED_OPENDNS autolearn=ham autolearn_force=no version=3.4.6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=new2025; t=1756391865; bh=E6wC+EGz8Yqnp4iwDET8wxAmThyrnk2rmAWnUKuSYgM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Transfer-Encoding:Message-ID:Date:From: Reply-To:Subject:To:Cc:In-Reply-To:References:Resent-Date: Resent-From:Resent-To:Resent-Cc:User-Agent:Content-Type: Content-Transfer-Encoding; b=M259D4Iv2X2YloNx6gqUzEW95p49KQ0X2Btn1me/TwTtubSv3cxtjBRncHfxCFYWv 71tZMnslJUa8fW2zqTpU/eNtyfYjUlIbzoshWjP8u+raXK65QSttWSX8/653ILvUOF GSKI+snBe5HTUA1lGCDdt/EFpMNCbRnHIhnSuPJ1RFzm7hAwfqcP7yAvf0+m+nTkph EtfH829/2iJF1Pw6BGsPIS9E10nuWGLBHpTBk2Ry3xckjX1NiaU8zi/suGO9D6aXR5 iT7ptCCvG28PK+QzNZN1vD86VQiLND+ctLk1hJgP7Ni2SpagAos2kQi7Aecj1mjFhh rGMI0XtArhlfw== Received: from zero (unknown [182.253.228.107]) by server-vie001.gnuweeb.org (Postfix) with ESMTPSA id 735473127F18; Thu, 28 Aug 2025 14:37:43 +0000 (UTC) From: Ahmad Gani To: Ammar Faizi Cc: Ahmad Gani , Alviro Iskandar Setiawan , GNU/Weeb Mailing List Subject: [PATCH gwproxy v6 10/11] gwproxy: Add DNS server option Date: Thu, 28 Aug 2025 21:34:32 +0700 Message-ID: <20250828143444.540247-11-reyuki@gnuweeb.org> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250828143444.540247-1-reyuki@gnuweeb.org> References: <20250828143444.540247-1-reyuki@gnuweeb.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: Introduce --dns-server gwproxy' cmdline option instead of hard-coded value. Signed-off-by: Ahmad Gani --- src/gwproxy/dns.c | 3 +-- src/gwproxy/gwproxy.c | 18 +++++++++++++++++- src/gwproxy/gwproxy.h | 3 +++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/gwproxy/dns.c b/src/gwproxy/dns.c index 9bc67b083b03..1eb0d9a67229 100644 --- a/src/gwproxy/dns.c +++ b/src/gwproxy/dns.c @@ -815,8 +815,7 @@ int gwp_dns_ctx_init(struct gwp_dns_ctx **ctx_p, const struct gwp_dns_cfg *cfg) if (cfg->use_raw_dns) { #ifdef CONFIG_RAW_DNS - // r = convert_str_to_ssaddr(cfg->ns_addr_str, &ctx->ns_addr, 53); - r = convert_str_to_ssaddr("1.1.1.1", &ctx->ns_addr, 53); + r = convert_str_to_ssaddr(cfg->ns_addr_str, &ctx->ns_addr, 53); if (r) goto out_destroy_mutex; ctx->ns_addrlen = ctx->ns_addr.sa.sa_family == AF_INET diff --git a/src/gwproxy/gwproxy.c b/src/gwproxy/gwproxy.c index 11efc21f4c5c..36305e65c4cb 100644 --- a/src/gwproxy/gwproxy.c +++ b/src/gwproxy/gwproxy.c @@ -45,6 +45,9 @@ static const struct option long_opts[] = { { "help", no_argument, NULL, 'h' }, { "raw-dns", required_argument, NULL, 'r' }, +#ifdef CONFIG_RAW_DNS + { "dns-server", required_argument, NULL, 'j' }, +#endif { "event-loop", required_argument, NULL, 'e' }, { "bind", required_argument, NULL, 'b' }, { "target", required_argument, NULL, 't' }, @@ -94,6 +97,9 @@ static const struct gwp_cfg default_opts = { .log_level = 3, .log_file = "/dev/stdout", .pid_file = NULL, +#ifdef CONFIG_RAW_DNS + .ns_addr_str = "1.1.1.1" +#endif }; __cold @@ -105,6 +111,9 @@ static void show_help(const char *app) printf(" -e, --event-loop=name Specify the event loop to use (default: %s)\n", default_opts.event_loop); printf(" Available values: epoll, io_uring\n"); printf(" -r, --raw-dns=0|1 Use experimental raw DNS as the backend (default: %d)\n", default_opts.use_raw_dns); +#ifdef CONFIG_RAW_DNS + printf(" -j, --dns-server=addr DNS server address (default: %s)\n", default_opts.ns_addr_str); +#endif printf(" -b, --bind=addr:port Bind to the specified address (default: %s)\n", default_opts.bind); printf(" -t, --target=addr_port Target address to connect to\n"); printf(" -S, --as-socks5=0|1 Run as a SOCKS5 proxy (default: %d)\n", default_opts.as_socks5); @@ -228,6 +237,11 @@ static int parse_options(int argc, char *argv[], struct gwp_cfg *cfg) case 'p': cfg->pid_file = optarg; break; +#ifdef CONFIG_RAW_DNS + case 'j': + cfg->ns_addr_str = optarg; + break; +#endif default: fprintf(stderr, "Unknown option: %c\n", c); show_help(argv[0]); @@ -693,7 +707,9 @@ static int gwp_ctx_init_dns(struct gwp_ctx *ctx) .cache_expiry = cfg->socks5_dns_cache_secs, .restyp = cfg->socks5_prefer_ipv6 ? GWP_DNS_RESTYP_PREFER_IPV6 : 0, .nr_workers = 1, - // .ns_addr_str = "1.1.1.1" +#ifdef CONFIG_RAW_DNS + .ns_addr_str = cfg->ns_addr_str +#endif }; int r; diff --git a/src/gwproxy/gwproxy.h b/src/gwproxy/gwproxy.h index 7f276d329e78..cdc5adf88ad6 100644 --- a/src/gwproxy/gwproxy.h +++ b/src/gwproxy/gwproxy.h @@ -44,6 +44,9 @@ struct gwp_cfg { int log_level; const char *log_file; const char *pid_file; +#ifdef CONFIG_RAW_DNS + const char *ns_addr_str; +#endif }; struct gwp_ctx; -- Ahmad Gani