"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Stefan Sperling <stsp@stsp.name>
Subject:
gotwebd.conf syntax change: "bind interface" -> "listen on"
To:
gameoftrees@openbsd.org
Date:
Sun, 7 Aug 2022 16:13:11 +0200

Download raw body.

Thread
In gotwebd.conf, the argument for "bind interface" is a plain string.
The argument may in fact be an IP address or interface name. But the
syntax confused me into believing that only interface names could be used.

I think if we used the same grammar as httpd.conf(8) is using, there
would be a lot less potential for confusion. Generally people will
be setting up httpd config and gotwebd.conf at the same time so it
would help if they used similar syntax.

The gotwebd.cofn grammer even already contains an ON token, which
wasn't used yet.

Lines such as these become a syntax error:

  bind interface em0
  bind interface 127.0.0.1

Instead, use:

  listen on em0
  listen on 127.0.0.1

ok?

Currently, only one "listen on" statement is supported per gotwebd server.
This is a separate issue I intend to fix later, in order to allow configs
such as IPv4/IPv6 dual-stack server with specific addresses.

diff 6381f44ae3383b12443d44a7a6a73459a809b069 bf757836b294600e5e0667c2ac0fddd1f9f3dac5
commit - 6381f44ae3383b12443d44a7a6a73459a809b069
commit + bf757836b294600e5e0667c2ac0fddd1f9f3dac5
blob - ecce1768fa5b41babe7ad5226f47933e94aeaf64
blob + b533dd484371ccaf0bb075196a1d7009d4058083
--- gotwebd/parse.y
+++ gotwebd/parse.y
@@ -115,7 +115,7 @@ typedef struct {
 
 %}
 
-%token	BIND INTERFACE WWW_PATH MAX_REPOS SITE_NAME SITE_OWNER SITE_LINK LOGO
+%token	LISTEN WWW_PATH MAX_REPOS SITE_NAME SITE_OWNER SITE_LINK LOGO
 %token	LOGO_URL SHOW_REPO_OWNER SHOW_REPO_AGE SHOW_REPO_DESCRIPTION
 %token	MAX_REPOS_DISPLAY REPOS_PATH MAX_COMMITS_DISPLAY ON ERROR
 %token	SHOW_SITE_OWNER SHOW_REPO_CLONEURL PORT PREFORK FCGI_SOCKET
@@ -381,7 +381,7 @@ serveropts2	: serveropts2 serveropts1 nl
 		| serveropts1 optnl
 		;
 
-socketopts1	: BIND INTERFACE STRING {
+socketopts1	: LISTEN ON STRING {
 			n = strlcpy(new_srv->fcgi_socket_bind, $3,
 			    sizeof(new_srv->fcgi_socket_bind));
 			if (n >= sizeof(new_srv->fcgi_socket_bind)) {
@@ -409,7 +409,7 @@ socketopts2	: socketopts2 socketopts1 nl
 		| socketopts1 optnl
 		;
 
-socketopts3	: BIND INTERFACE STRING {
+socketopts3	: LISTEN ON STRING {
 			n = strlcpy(gotwebd->fcgi_socket_bind, $3,
 			    sizeof(gotwebd->fcgi_socket_bind));
 			if (n >= sizeof(gotwebd->fcgi_socket_bind)) {
@@ -470,16 +470,16 @@ lookup(char *s)
 {
 	/* This has to be sorted always. */
 	static const struct keywords keywords[] = {
-		{ "bind",			BIND },
 		{ "chroot",			CHROOT },
 		{ "custom_css",			CUSTOM_CSS },
 		{ "fcgi_socket",		FCGI_SOCKET },
-		{ "interface",			INTERFACE },
+		{ "listen",			LISTEN },
 		{ "logo",			LOGO },
 		{ "logo_url"	,		LOGO_URL },
 		{ "max_commits_display",	MAX_COMMITS_DISPLAY },
 		{ "max_repos",			MAX_REPOS },
 		{ "max_repos_display",		MAX_REPOS_DISPLAY },
+		{ "on",				ON },
 		{ "port",			PORT },
 		{ "prefork",			PREFORK },
 		{ "repos_path",			REPOS_PATH },