Applied, thank you
On Wed, Aug 25, 2021 at 10:14 PM Sergey Ponomarev <[email protected]> wrote: > > 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 <[email protected]> > --- > 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 > [email protected] > http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
