diff options
-rw-r--r-- | source3/include/proto.h | 2 | ||||
-rw-r--r-- | source3/web/swat.c | 19 |
2 files changed, 17 insertions, 4 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index c742d66406..d1aa8383c2 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -2669,7 +2669,7 @@ int smbw_stat(const char *fname, struct stat *st); void cgi_load_variables(FILE *f1); char *cgi_variable(char *name); BOOL am_root(void); -char *get_user_name(void); +char *cgi_user_name(void); void cgi_setup(char *rootdir, int auth_required); char *cgi_baseurl(void); char *cgi_pathinfo(void); diff --git a/source3/web/swat.c b/source3/web/swat.c index db21fbfbe1..8f47ced52d 100644 --- a/source3/web/swat.c +++ b/source3/web/swat.c @@ -30,6 +30,7 @@ static pstring servicesf = CONFIGFILE; static BOOL demo_mode = False; +static BOOL have_write_access = False; /* * Password Management Globals @@ -469,7 +470,10 @@ static void globals_page(void) printf("<FORM name=\"swatform\" method=post>\n"); - printf("<input type=submit name=\"Commit\" value=\"Commit Changes\">\n"); + if (have_write_access) { + printf("<input type=submit name=\"Commit\" value=\"Commit Changes\">\n"); + } + printf("<input type=reset name=\"Reset Values\" value=\"Reset Values\">\n"); if (advanced == 0) { printf("<input type=submit name=\"Advanced\" value=\"Advanced View\">\n"); @@ -549,7 +553,10 @@ static void shares_page(void) if (snum >= 0) { - printf("<input type=submit name=\"Commit\" value=\"Commit Changes\">\n"); + if (have_write_access) { + printf("<input type=submit name=\"Commit\" value=\"Commit Changes\">\n"); + } + printf("<input type=submit name=\"Delete\" value=\"Delete Share\">\n"); if (advanced == 0) { printf("<input type=submit name=\"Advanced\" value=\"Advanced View\">\n"); @@ -848,7 +855,9 @@ static void printers_page(void) if (snum >= 0) { - printf("<input type=submit name=\"Commit\" value=\"Commit Changes\">\n"); + if (have_write_access) { + printf("<input type=submit name=\"Commit\" value=\"Commit Changes\">\n"); + } printf("<input type=submit name=\"Delete\" value=\"Delete Printer\">\n"); if (advanced == 0) { printf("<input type=submit name=\"Advanced\" value=\"Advanced View\">\n"); @@ -917,6 +926,10 @@ static void printers_page(void) page = cgi_pathinfo(); + /* check if the authenticated user has write access - if not then + don't show write options */ + have_write_access = (access(servicesf,W_OK) == 0); + /* Root gets full functionality */ if (strcmp(page, "globals")==0) { globals_page(); |