Add favicon.gif support and cake hater denuciation. - bitreich-httpd - Bitreich… | |
git clone git://bitreich.org/bitreich-httpd git://enlrupgkhuxnvlhsf6lc3fziv5h2h… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
LICENSE | |
--- | |
commit fcd6c934e0a00098016278527c53ea8305e479b6 | |
parent 1d63bfa9303355b61925256bb06169e17e38f4f5 | |
Author: Christoph Lohmann <[email protected]> | |
Date: Fri, 14 Aug 2020 00:27:57 +0200 | |
Add favicon.gif support and cake hater denuciation. | |
Diffstat: | |
M bitreich-httpd.c | 30 +++++++++++++++++++++++++++++- | |
1 file changed, 29 insertions(+), 1 deletion(-) | |
--- | |
diff --git a/bitreich-httpd.c b/bitreich-httpd.c | |
@@ -11,6 +11,8 @@ | |
#include <sys/stat.h> | |
#include <fcntl.h> | |
#include <string.h> | |
+#include <sys/socket.h> | |
+#include <netdb.h> | |
void * | |
xmalloc(size_t size) | |
@@ -95,12 +97,27 @@ servefile(char *path, char *ctype, int sock) | |
int | |
main(int argc, char *argv[]) | |
{ | |
- char *wwwbase, *wwwindex, request[512], *ctype, *path; | |
+ char *wwwbase, *wwwindex, request[512], *ctype, *path, | |
+ clienth[NI_MAXHOST], clientp[NI_MAXSERV]; | |
int rlen; | |
+ struct sockaddr_storage clt; | |
+ socklen_t cltlen = sizeof(clt); | |
wwwbase = "/bitreich/www"; | |
wwwindex = "index.html"; | |
+ if (!getpeername(0, (struct sockaddr *)&clt, &cltlen)) { | |
+ if (getnameinfo((struct sockaddr *)&clt, cltlen, clienth, | |
+ sizeof(clienth), clientp, sizeof(clien… | |
+ NI_NUMERICHOST|NI_NUMERICSERV)) { | |
+ clienth[0] = clientp[0] = '\0'; | |
+ } | |
+ if (!strncmp(clienth, "::ffff:", 7)) | |
+ memmove(clienth, clienth+7, strlen(clienth)-6); | |
+ } else { | |
+ clienth[0] = clientp[0] = '\0'; | |
+ } | |
+ | |
rlen = read(0, request, sizeof(request)-1); | |
if (rlen < 0) | |
return 1; | |
@@ -113,6 +130,17 @@ main(int argc, char *argv[]) | |
if (strstr(request, "s/bitreich.sh")) { | |
asprintf(&path, "%s/s/bitreich.sh", wwwbase); | |
ctype = "text/plain"; | |
+ } else if (strstr(request, "favicon.gif")) { | |
+ asprintf(&path, "%s/s/favicon.gif", wwwbase); | |
+ ctype = "image/gif"; | |
+ } else if (strstr(request, "dickbutt")) { | |
+ asprintf(&path, | |
+ "/home/annna/bin/annna-say -c \"#bitreich-tv\" \"%s:%s… | |
+ clienth, clientp); | |
+ system(path); | |
+ free(path); | |
+ asprintf(&path, "%s/s/dickbutt.jpg", wwwbase); | |
+ ctype = "image/jpeg"; | |
} else { | |
asprintf(&path, "%s/%s", wwwbase, wwwindex); | |
ctype = "text/html"; |