From 6d9d8e0a5f5052db52d116819cda040cdcfd68b4 Mon Sep 17 00:00:00 2001 From: Shibby Date: Thu, 12 Mar 2015 21:38:01 +0100 Subject: [PATCH] GUI: Checkbox to allow/deny login as "root" to GUI --- release/src/router/httpd/httpd.c | 11 ++++++++--- release/src/router/httpd/tomato.c | 1 + release/src/router/nvram/defaults.c | 1 + release/src/router/www/admin-access.asp | 7 +++++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/release/src/router/httpd/httpd.c b/release/src/router/httpd/httpd.c index dc2cf7f354..f60cfc17ce 100644 --- a/release/src/router/httpd/httpd.c +++ b/release/src/router/httpd/httpd.c @@ -249,9 +249,14 @@ static auth_t auth_check(const char *authorization) *pass++ = 0; if (((u = nvram_get("http_username")) == NULL) || (*u == 0)) u = "admin"; if ((strcmp(buf, "root") == 0) || (strcmp(buf, u) == 0)) { - if (((p = nvram_get("http_passwd")) == NULL) || (*p == 0)) p = "admin"; - if (strcmp(pass, p) == 0) { - return AUTH_OK; + + if ((nvram_match("http_root", "0")) && (strcmp(buf, "root") == 0)) { + return AUTH_BAD; + } else { + if (((p = nvram_get("http_passwd")) == NULL) || (*p == 0)) p = "admin"; + if (strcmp(pass, p) == 0) { + return AUTH_OK; + } } } } diff --git a/release/src/router/httpd/tomato.c b/release/src/router/httpd/tomato.c index f055e15ac1..578292decb 100644 --- a/release/src/router/httpd/tomato.c +++ b/release/src/router/httpd/tomato.c @@ -978,6 +978,7 @@ static const nvset_t nvset_list[] = { { "rmgt_sip", V_LENGTH(0, 512) }, { "ne_shlimit", V_TEXT(1, 50) }, { "http_username", V_LENGTH(0, 32) }, + { "http_root", V_01 }, // admin-bwm { "rstats_enable", V_01 }, diff --git a/release/src/router/nvram/defaults.c b/release/src/router/nvram/defaults.c index 6b783cd3cc..8eac7375ce 100644 --- a/release/src/router/nvram/defaults.c +++ b/release/src/router/nvram/defaults.c @@ -583,6 +583,7 @@ const defaults_t defaults[] = { { "https_crt_cn", "" }, { "https_crt_file", "" }, { "https_crt", "" }, + { "http_root", "1" }, // 0 - deny, 1 - Allow { "web_wl_filter", "0" }, // Allow/Deny Wireless Access Web { "web_css", "openlinksys" }, { "web_dir", "default" }, // jffs, opt, tmp or default (/www) diff --git a/release/src/router/www/admin-access.asp b/release/src/router/www/admin-access.asp index 0f798440f1..dba69eaa9f 100644 --- a/release/src/router/www/admin-access.asp +++ b/release/src/router/www/admin-access.asp @@ -29,7 +29,7 @@ textarea {