summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/proto.h2
-rw-r--r--source3/web/swat.c19
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();