BusyBox on Termux can't use ports less than 1024 it's patched to change default port for httpd to 8080 and telnetd to 8023.
https://github.com/termux/termux-packages/blob/master/packages/busybox/0011-networking-telnetd-default-port.patch https://github.com/termux/termux-packages/blob/master/packages/busybox/0010-networking-httpd-default-port.patch To avoid such patches we can make port configurable. The macros STR(s) is copied from ftpd.c and it's needed to convert int to string. For httpd.c made a refactoring of openServer(): * bind_addr_or_port is not preset with "80" and user not specified -p then it will remain a NULL * Extracted variable fd instead of reusing n var * 0xffff replaced with 65535 as it done in other places function old new delta httpd_main 668 677 +9 packed_usage 2699 2701 +2 .rodata 11051 11048 -3 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/1 up/down: 11/-3) Total: 8 bytes text data bss dec hex filename 186936 4027 69256 260219 3f87b busybox_old 186944 4027 69256 260227 3f883 busybox_unstripped Signed-off-by: Sergey Ponomarev <stok...@gmail.com> --- networking/httpd.c | 31 ++++++++++++++++++++++--------- networking/telnetd.c | 16 ++++++++++++++-- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/networking/httpd.c b/networking/httpd.c index 568b5f72b..aff8f994e 100644 --- a/networking/httpd.c +++ b/networking/httpd.c @@ -102,6 +102,13 @@ //config: help //config: HTTP server. //config: +//config:config HTTPD_PORT_DEFAULT +//config: int "Default port" +//config: default 80 +//config: range 1 65535 +//config: help +//config: Port to listen on +//config: //config:config FEATURE_HTTPD_RANGES //config: bool "Support 'Ranges:' header" //config: default y @@ -257,6 +264,8 @@ //kbuild:lib-$(CONFIG_HTTPD) += httpd.o +//usage:#define STR1(s) #s +//usage:#define STR(s) STR1(s) //usage:#define httpd_trivial_usage //usage: "[-ifv[v]]" //usage: " [-c CONFFILE]" @@ -270,7 +279,7 @@ //usage: "\n -i Inetd mode" //usage: "\n -f Don't daemonize" //usage: "\n -v[v] Verbose" -//usage: "\n -p [IP:]PORT Bind to IP:PORT (default *:80)" +//usage: "\n -p [IP:]PORT Bind to IP:PORT. Default " STR(CONFIG_HTTPD_PORT_DEFAULT) //usage: IF_FEATURE_HTTPD_SETUID( //usage: "\n -u USER[:GRP] Set uid/gid after binding to port") //usage: IF_FEATURE_HTTPD_BASIC_AUTH( @@ -542,7 +551,7 @@ enum { SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \ IF_FEATURE_HTTPD_BASIC_AUTH(g_realm = "Web Server Authentication";) \ IF_FEATURE_HTTPD_RANGES(range_start = -1;) \ - bind_addr_or_port = "80"; \ + bind_addr_or_port = NULL; \ index_page = index_html; \ file_size = -1; \ } while (0) @@ -1030,13 +1039,17 @@ static void decodeBase64(char *data) */ static int openServer(void) { - unsigned n = bb_strtou(bind_addr_or_port, NULL, 10); - if (!errno && n && n <= 0xffff) - n = create_and_bind_stream_or_die(NULL, n); - else - n = create_and_bind_stream_or_die(bind_addr_or_port, 80); - xlisten(n, 9); - return n; + int fd; + if (bind_addr_or_port != NULL) { + unsigned port = bb_strtou(bind_addr_or_port, NULL, 10); + if (!errno && port && port <= 65535) // PORT + fd = create_and_bind_stream_or_die(NULL, port); + else // IP:PORT + fd = create_and_bind_stream_or_die(bind_addr_or_port, CONFIG_HTTPD_PORT_DEFAULT); + } else // Nothing specified, use default port + fd = create_and_bind_stream_or_die(NULL, CONFIG_HTTPD_PORT_DEFAULT); + xlisten(fd, 9); + return fd; } /* diff --git a/networking/telnetd.c b/networking/telnetd.c index de4d733f9..af83ba3d4 100644 --- a/networking/telnetd.c +++ b/networking/telnetd.c @@ -68,6 +68,14 @@ //config: help //config: Selecting this will make telnetd able to run standalone. //config: +//config:config TELNETD_PORT_DEFAULT +//config: int "Default port" +//config: default "23" +//config: range 1 65535 +//config: depends on FEATURE_TELNETD_STANDALONE +//config: help +//config: Port to listen on +//config: //config:config FEATURE_TELNETD_INETD_WAIT //config: bool "Support -w SEC option (inetd wait mode)" //config: default y @@ -93,6 +101,8 @@ //kbuild:lib-$(CONFIG_TELNETD) += telnetd.o +//usage:#define STR1(s) #s +//usage:#define STR(s) STR1(s) //usage:#define telnetd_trivial_usage //usage: "[OPTIONS]" //usage:#define telnetd_full_usage "\n\n" @@ -103,7 +113,7 @@ //usage: "\n -K Close connection as soon as login exits" //usage: "\n (normally wait until all programs close slave pty)" //usage: IF_FEATURE_TELNETD_STANDALONE( -//usage: "\n -p PORT Port to listen on" +//usage: "\n -p PORT Port to listen on. Default " STR(CONFIG_TELNETD_PORT_DEFAULT) //usage: "\n -b ADDR[:PORT] Address to bind to" //usage: "\n -F Run in foreground" //usage: "\n -i Inetd mode" @@ -708,9 +718,11 @@ int telnetd_main(int argc UNUSED_PARAM, char **argv) } else { master_fd = 0; if (!(opt & OPT_WAIT)) { - unsigned portnbr = 23; + unsigned portnbr; if (opt & OPT_PORT) portnbr = xatou16(opt_portnbr); + else + portnbr = CONFIG_TELNETD_PORT_DEFAULT; master_fd = create_and_bind_stream_or_die(opt_bindaddr, portnbr); xlisten(master_fd, 1); } -- 2.30.2 _______________________________________________ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox