diff options
author | Jo-Philipp Wich <jo@mein.io> | 2021-12-21 10:30:35 +0100 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2022-02-07 09:59:21 +0100 |
commit | 8b2868e20d6e9b5931a2153a0854228e8a62e0f0 (patch) | |
tree | 8ecd164d7e43ab6d1cccb4724479879206f931b5 | |
parent | 3a5bd84489e3f76b8123fbae681bd08369c23b55 (diff) |
file: specify UTF-8 as charset for dirlists, add option to override
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r-- | file.c | 3 | ||||
-rw-r--r-- | main.c | 7 | ||||
-rw-r--r-- | uhttpd.h | 1 |
3 files changed, 9 insertions, 2 deletions
@@ -546,7 +546,8 @@ static void uh_file_dirlist(struct client *cl, struct path_info *pi) } uh_file_response_200(cl, NULL); - ustream_printf(cl->us, "Content-Type: text/html\r\n\r\n"); + ustream_printf(cl->us, "Content-Type: text/html; charset=%s\r\n\r\n", + conf.dirlist_charset ? conf.dirlist_charset : "UTF-8"); uh_chunk_printf(cl, "<html><head><title>Index of %s</title></head>" @@ -144,6 +144,7 @@ static int usage(const char *name) #endif " -h directory Specify the document root, default is '.'\n" " -E string Use given virtual URL as 404 error handler\n" + " -b string Use given charset for directory listings, default to UTF-8\n" " -I string Use given filename as index for directories, multiple allowed\n" " -S Do not follow symbolic links outside of the docroot\n" " -D Do not allow directory listings, send 403 instead\n" @@ -292,7 +293,7 @@ int main(int argc, char **argv) init_defaults_pre(); signal(SIGPIPE, SIG_IGN); - while ((ch = getopt(argc, argv, "A:aC:c:Dd:E:e:fh:H:I:i:K:k:L:l:m:N:n:O:o:P:p:qRr:Ss:T:t:U:u:Xx:y:")) != -1) { + while ((ch = getopt(argc, argv, "A:ab:C:c:Dd:E:e:fh:H:I:i:K:k:L:l:m:N:n:O:o:P:p:qRr:Ss:T:t:U:u:Xx:y:")) != -1) { switch(ch) { #ifdef HAVE_TLS case 'C': @@ -364,6 +365,10 @@ int main(int argc, char **argv) uh_index_add(optarg); break; + case 'b': + conf.dirlist_charset = optarg; + break; + case 'S': conf.no_symlinks = 1; break; @@ -81,6 +81,7 @@ struct config { const char *cgi_path; const char *ubus_prefix; const char *ubus_socket; + const char *dirlist_charset; int no_symlinks; int no_dirlists; int network_timeout; |