SMOLNET PORTAL home about changes
iAdd favicon.gif support and cake hater denuciation. - bitreich-httpd - Bitreich HTTPD service	Err	bitreich.org	70
hgit clone git://bitreich.org/bitreich-httpd git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/bitreich-httpd	URL:git://bitreich.org/bitreich-httpd git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/bitreich-httpd	bitreich.org	70
1Log	/scm/bitreich-httpd/log.gph	bitreich.org	70
1Files	/scm/bitreich-httpd/files.gph	bitreich.org	70
1Refs	/scm/bitreich-httpd/refs.gph	bitreich.org	70
1Tags	/scm/bitreich-httpd/tag	bitreich.org	70
1README	/scm/bitreich-httpd/file/README.md.gph	bitreich.org	70
1LICENSE	/scm/bitreich-httpd/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit fcd6c934e0a00098016278527c53ea8305e479b6	/scm/bitreich-httpd/commit/fcd6c934e0a00098016278527c53ea8305e479b6.gph	bitreich.org	70
1parent 1d63bfa9303355b61925256bb06169e17e38f4f5	/scm/bitreich-httpd/commit/1d63bfa9303355b61925256bb06169e17e38f4f5.gph	bitreich.org	70
hAuthor: Christoph Lohmann <20h@r-36.net>	URL:mailto:20h@r-36.net	bitreich.org	70
iDate:   Fri, 14 Aug 2020 00:27:57 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iAdd favicon.gif support and cake hater denuciation.	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M bitreich-httpd.c                    |      30 +++++++++++++++++++++++++++++-	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 29 insertions(+), 1 deletion(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/bitreich-httpd.c b/bitreich-httpd.c	/scm/bitreich-httpd/file/bitreich-httpd.c.gph	bitreich.org	70
i@@ -11,6 +11,8 @@	Err	bitreich.org	70
i #include <sys/stat.h>	Err	bitreich.org	70
i #include <fcntl.h>	Err	bitreich.org	70
i #include <string.h>	Err	bitreich.org	70
i+#include <sys/socket.h>	Err	bitreich.org	70
i+#include <netdb.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void *	Err	bitreich.org	70
i xmalloc(size_t size)	Err	bitreich.org	70
i@@ -95,12 +97,27 @@ servefile(char *path, char *ctype, int sock)	Err	bitreich.org	70
i int	Err	bitreich.org	70
i main(int argc, char *argv[])	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        char *wwwbase, *wwwindex, request[512], *ctype, *path;	Err	bitreich.org	70
i+        char *wwwbase, *wwwindex, request[512], *ctype, *path,	Err	bitreich.org	70
i+             clienth[NI_MAXHOST], clientp[NI_MAXSERV];	Err	bitreich.org	70
i         int rlen;	Err	bitreich.org	70
i+        struct sockaddr_storage clt;	Err	bitreich.org	70
i+        socklen_t cltlen = sizeof(clt);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         wwwbase = "/bitreich/www";	Err	bitreich.org	70
i         wwwindex = "index.html";	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+        if (!getpeername(0, (struct sockaddr *)&clt, &cltlen)) {	Err	bitreich.org	70
i+                if (getnameinfo((struct sockaddr *)&clt, cltlen, clienth,	Err	bitreich.org	70
i+                                        sizeof(clienth), clientp, sizeof(clientp),	Err	bitreich.org	70
i+                                        NI_NUMERICHOST|NI_NUMERICSERV)) {	Err	bitreich.org	70
i+                        clienth[0] = clientp[0] = '\0';	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+                if (!strncmp(clienth, "::ffff:", 7))	Err	bitreich.org	70
i+                        memmove(clienth, clienth+7, strlen(clienth)-6);	Err	bitreich.org	70
i+        } else {	Err	bitreich.org	70
i+                        clienth[0] = clientp[0] = '\0';	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i         rlen = read(0, request, sizeof(request)-1);	Err	bitreich.org	70
i         if (rlen < 0)	Err	bitreich.org	70
i                 return 1;	Err	bitreich.org	70
i@@ -113,6 +130,17 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i         if (strstr(request, "s/bitreich.sh")) {	Err	bitreich.org	70
i                 asprintf(&path, "%s/s/bitreich.sh", wwwbase);	Err	bitreich.org	70
i                 ctype = "text/plain";	Err	bitreich.org	70
i+        } else if (strstr(request, "favicon.gif")) {	Err	bitreich.org	70
i+                asprintf(&path, "%s/s/favicon.gif", wwwbase);	Err	bitreich.org	70
i+                ctype = "image/gif";	Err	bitreich.org	70
i+        } else if (strstr(request, "dickbutt")) {	Err	bitreich.org	70
i+                asprintf(&path,	Err	bitreich.org	70
i+                        "/home/annna/bin/annna-say -c \"#bitreich-tv\" \"%s:%s cake hater appeared.\"",	Err	bitreich.org	70
i+                        clienth, clientp);	Err	bitreich.org	70
i+                system(path);	Err	bitreich.org	70
i+                free(path);	Err	bitreich.org	70
i+                asprintf(&path, "%s/s/dickbutt.jpg", wwwbase);	Err	bitreich.org	70
i+                ctype = "image/jpeg";	Err	bitreich.org	70
i         } else {	Err	bitreich.org	70
i                 asprintf(&path, "%s/%s", wwwbase, wwwindex);	Err	bitreich.org	70
i                 ctype = "text/html";	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/bitreich-httpd/commit/fcd6c93...
Content-Typetext/plain; charset=utf-8