X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuhttpd.git;a=blobdiff_plain;f=main.c;h=f88506cca812b5a947aed360912ab63dbacbb4ea;hp=31700c7d66f474a86e59b8da2822a32abd410590;hb=c9e849b50162fadb1ebaaedba7a743040c9f299f;hpb=78f9f35e22c60d5748f0d69a202ca541c517f0bb diff --git a/main.c b/main.c index 31700c7..f88506c 100644 --- a/main.c +++ b/main.c @@ -139,14 +139,15 @@ static int usage(const char *name) " -L file Lua handler script, omit to disable Lua\n" #endif #ifdef HAVE_UBUS - " -u string URL prefix for HTTP/JSON handler\n" + " -u string URL prefix for UBUS via JSON-RPC handler\n" " -U file Override ubus socket path\n" + " -a Do not authenticate JSON-RPC requests against UBUS session api\n" #endif " -x string URL prefix for CGI handler, default is '/cgi-bin'\n" " -i .ext=path Use interpreter at path for files with the given extension\n" " -t seconds CGI, Lua and UBUS script timeout in seconds, default is 60\n" " -T seconds Network timeout in seconds, default is 30\n" - " -k seconds HTTP keepalive timeout\n" + " -k seconds HTTP keepalive timeout\n" " -d string URL decode given string\n" " -r string Specify basic auth realm\n" " -m string MD5 crypt given string\n" @@ -189,13 +190,16 @@ static void fixup_prefix(char *str) int main(int argc, char **argv) { - const char *tls_key = NULL, *tls_crt = NULL; bool nofork = false; char *port; int opt, ch; int cur_fd; int bound = 0; + +#ifdef HAVE_TLS int n_tls = 0; + const char *tls_key = NULL, *tls_crt = NULL; +#endif BUILD_BUG_ON(sizeof(uh_buf) < PATH_MAX); @@ -203,16 +207,30 @@ int main(int argc, char **argv) init_defaults(); signal(SIGPIPE, SIG_IGN); - while ((ch = getopt(argc, argv, "fSDRC:K:E:I:p:s:h:c:l:L:d:r:m:n:N:x:i:t:k:T:A:u:U:")) != -1) { - bool tls = false; - + while ((ch = getopt(argc, argv, "afSDRC:K:E:I:p:s:h:c:l:L:d:r:m:n:N:x:i:t:k:T:A:u:U:")) != -1) { switch(ch) { +#ifdef HAVE_TLS + case 'C': + tls_crt = optarg; + break; + + case 'K': + tls_key = optarg; + break; + case 's': n_tls++; - tls = true; /* fall through */ +#else + case 'C': + case 'K': + case 's': + fprintf(stderr, "uhttpd: TLS support not compiled, " + "ignoring -%c\n", opt); + break; +#endif case 'p': - bound += add_listener_arg(optarg, tls); + bound += add_listener_arg(optarg, (ch == 's')); break; case 'h': @@ -334,13 +352,6 @@ int main(int argc, char **argv) conf.file = optarg; break; - case 'C': - tls_crt = optarg; - break; - - case 'K': - tls_key = optarg; - break; #ifdef HAVE_LUA case 'l': conf.lua_prefix = optarg; @@ -349,8 +360,18 @@ int main(int argc, char **argv) case 'L': conf.lua_handler = optarg; break; +#else + case 'l': + case 'L': + fprintf(stderr, "uhttpd: Lua support not compiled, " + "ignoring -%c\n", opt); + break; #endif #ifdef HAVE_UBUS + case 'a': + conf.ubus_noauth = 1; + break; + case 'u': conf.ubus_prefix = optarg; break; @@ -358,6 +379,13 @@ int main(int argc, char **argv) case 'U': conf.ubus_socket = optarg; break; +#else + case 'a': + case 'u': + case 'U': + fprintf(stderr, "uhttpd: UBUS support not compiled, " + "ignoring -%c\n", opt); + break; #endif default: return usage(argv[0]); @@ -371,6 +399,15 @@ int main(int argc, char **argv) return 1; } + if (!conf.docroot) { + if (!realpath(".", uh_buf)) { + fprintf(stderr, "Error: Unable to determine work dir\n"); + return 1; + } + conf.docroot = strdup(uh_buf); + } + +#ifdef HAVE_TLS if (n_tls) { if (!tls_crt || !tls_key) { fprintf(stderr, "Please specify a certificate and " @@ -378,14 +415,10 @@ int main(int argc, char **argv) return 1; } -#ifdef HAVE_TLS if (uh_tls_init(tls_key, tls_crt)) return 1; -#else - fprintf(stderr, "Error: TLS support not compiled in.\n"); - return 1; -#endif } +#endif #ifdef HAVE_LUA if (conf.lua_handler || conf.lua_prefix) {