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