SMOLNET PORTAL home about changes
iimprove the example and prepare libseccomp in the example - libgcgi - REST library for Gopher	Err	bitreich.org	70
hgit clone git://bitreich.org/libgcgi git://hg6vgqziawt5s4dj.onion/libgcgi	URL:git://bitreich.org/libgcgi git://hg6vgqziawt5s4dj.onion/libgcgi	bitreich.org	70
1Log	/scm/libgcgi/log.gph	bitreich.org	70
1Files	/scm/libgcgi/files.gph	bitreich.org	70
1Refs	/scm/libgcgi/refs.gph	bitreich.org	70
1Tags	/scm/libgcgi/tag	bitreich.org	70
1README	/scm/libgcgi/file/README.gph	bitreich.org	70
1LICENSE	/scm/libgcgi/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 39674c36f9dbf2a2f4be5fa2f8df9894c1ed75be	/scm/libgcgi/commit/39674c36f9dbf2a2f4be5fa2f8df9894c1ed75be.gph	bitreich.org	70
1parent fd61b070718453c8d57daa40f620d89e75cb2d78	/scm/libgcgi/commit/fd61b070718453c8d57daa40f620d89e75cb2d78.gph	bitreich.org	70
hAuthor: Josuah Demangeon <me@josuah.net>	URL:mailto:me@josuah.net	bitreich.org	70
iDate:   Wed,  3 Aug 2022 18:39:18 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iimprove the example and prepare libseccomp in the example	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M Makefile                            |       7 ++++---	Err	bitreich.org	70
i  M db/vars                             |       2 +-	Err	bitreich.org	70
i  M gph/page_not_found.gph              |       3 ++-	Err	bitreich.org	70
i  M index.c                             |      37 ++++++++++++++-----------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i4 files changed, 24 insertions(+), 25 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/libgcgi/file/Makefile.gph	bitreich.org	70
i@@ -1,5 +1,6 @@	Err	bitreich.org	70
i-LDFLAGS = -static	Err	bitreich.org	70
i-CFLAGS = -D_POSIX_C_SOURCE=200809L -g -pedantic -std=c99 -Wall -Wextra	Err	bitreich.org	70
i+LDFLAGS =	Err	bitreich.org	70
i+#LIBS = -lseccomp #<- uncomment on Linux	Err	bitreich.org	70
i+CFLAGS = -D_POSIX_C_SOURCE=200809L -D_GNU_SOURCE -g -pedantic -std=c99 -Wall -Wextra	Err	bitreich.org	70
i 	Err	bitreich.org	70
i all: index.cgi	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -10,4 +11,4 @@ README: libgcgi.3	Err	bitreich.org	70
i         mandoc -Tutf8 libgcgi.3 | col -b | sed '1h; $$g' >$@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i index.cgi: index.c libgcgi.c libgcgi.h	Err	bitreich.org	70
i-        ${CC} ${LDFLAGS} ${CFLAGS} -o $@ index.c libgcgi.c	Err	bitreich.org	70
i+        ${CC} ${LDFLAGS} ${CFLAGS} -o $@ index.c libgcgi.c ${LIBS}	Err	bitreich.org	70
1diff --git a/db/vars b/db/vars	/scm/libgcgi/file/db/vars.gph	bitreich.org	70
i@@ -1 +1 @@	Err	bitreich.org	70
i-name: world	Err	bitreich.org	70
i+mail: gopher@example.com	Err	bitreich.org	70
1diff --git a/gph/page_not_found.gph b/gph/page_not_found.gph	/scm/libgcgi/file/gph/page_not_found.gph.gph	bitreich.org	70
i@@ -1 +1,2 @@	Err	bitreich.org	70
i-Hello {{name}}!	Err	bitreich.org	70
i+Sorry, I could not find {{page}}.	Err	bitreich.org	70
i+If it looks like an error, you can let us know that "{{page}}" is not working by sending us an email at {{mail}}.	Err	bitreich.org	70
1diff --git a/index.c b/index.c	/scm/libgcgi/file/index.c.gph	bitreich.org	70
i@@ -1,31 +1,27 @@	Err	bitreich.org	70
i+#include <errno.h>	Err	bitreich.org	70
i #include <stddef.h>	Err	bitreich.org	70
i-#include <unistd.h>	Err	bitreich.org	70
i #include <stdio.h>	Err	bitreich.org	70
i+#include <string.h>	Err	bitreich.org	70
i+#include <unistd.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-#include "libgcgi.h"	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-#ifndef __OpenBSD__	Err	bitreich.org	70
i-#define pledge(p1,p2) 0	Err	bitreich.org	70
i-#define unveil(p1,p2) 0	Err	bitreich.org	70
i+#ifdef __linux__	Err	bitreich.org	70
i+#include <seccomp.h>	Err	bitreich.org	70
i #endif	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+#include "libgcgi.h"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-error_page_not_found(char **matches)	Err	bitreich.org	70
i+page_not_found(char **matches)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         struct gcgi_var_list vars = {0};	Err	bitreich.org	70
i-        char *var;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         gcgi_read_var_list(&vars, "db/vars");	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        printf("sorry, I could not find %s\n", matches[0]);	Err	bitreich.org	70
i-        if ((var = gcgi_get_var(&gcgi_gopher_query, "var")) != NULL)	Err	bitreich.org	70
i-                printf("I got the $var though! -> '%s'\n", var);	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        gcgi_template("gph/error_page_not_found.gph", &vars);	Err	bitreich.org	70
i+        gcgi_set_var(&vars, "page", matches[0]);	Err	bitreich.org	70
i+        gcgi_template("gph/page_not_found.gph", &vars);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static struct gcgi_handler handlers[] = {	Err	bitreich.org	70
i-        { "*",                error_page_not_found },	Err	bitreich.org	70
i+        { "*",                page_not_found },	Err	bitreich.org	70
i         { NULL,                NULL },	Err	bitreich.org	70
i };	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -33,13 +29,14 @@ int	Err	bitreich.org	70
i main(int argc, char **argv)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        /* restrict allowed paths */	Err	bitreich.org	70
i+#if defined(__OpenBSD__)	Err	bitreich.org	70
i         if (unveil("gph", "r") == -1 || unveil("db", "rwc") == -1)	Err	bitreich.org	70
i-                gcgi_fatal("unveil failed");	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        /* restrict allowed system calls */	Err	bitreich.org	70
i+                gcgi_fatal("unveil failed: %s", strerror(errno));	Err	bitreich.org	70
i         if (pledge("stdio rpath wpath cpath", NULL) == -1)	Err	bitreich.org	70
i-                gcgi_fatal("pledge failed");	Err	bitreich.org	70
i+                gcgi_fatal("pledge failed: %s", strerror(errno));	Err	bitreich.org	70
i+#else	Err	bitreich.org	70
i+#warning "no syscall restriction enabled"	Err	bitreich.org	70
i+#endif	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         /* handle the request with the handlers */	Err	bitreich.org	70
i         gcgi_handle_request(handlers, argv, argc);	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/libgcgi/commit/39674c36f9dbf2...
Content-Typetext/plain; charset=utf-8