summaryrefslogtreecommitdiff
path: root/source3/web/swat.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/web/swat.c')
-rw-r--r--source3/web/swat.c343
1 files changed, 53 insertions, 290 deletions
diff --git a/source3/web/swat.c b/source3/web/swat.c
index af6fa82ffe..80d3232d2b 100644
--- a/source3/web/swat.c
+++ b/source3/web/swat.c
@@ -1,9 +1,7 @@
/*
Unix SMB/CIFS implementation.
Samba Web Administration Tool
- Version 3.0.0
- Copyright (C) Andrew Tridgell 1997-2002
- Copyright (C) John H Terpstra 2002
+ Copyright (C) Andrew Tridgell 1997-1998
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -299,7 +297,7 @@ static void show_parameter(int snum, struct parm_struct *parm)
/****************************************************************************
display a set of parameters for a service
****************************************************************************/
-static void show_parameters(int snum, int allparameters, unsigned int parm_filter, int printers)
+static void show_parameters(int snum, int allparameters, int advanced, int printers)
{
int i = 0;
struct parm_struct *parm;
@@ -318,7 +316,7 @@ static void show_parameters(int snum, int allparameters, unsigned int parm_filte
if (printers & !(parm->flags & FLAG_PRINT)) continue;
if (!printers & !(parm->flags & FLAG_SHARE)) continue;
}
- if (parm_filter == FLAG_BASIC) {
+ if (!advanced) {
if (!(parm->flags & FLAG_BASIC)) {
void *ptr = parm->ptr;
@@ -365,12 +363,6 @@ static void show_parameters(int snum, int allparameters, unsigned int parm_filte
}
if (printers && !(parm->flags & FLAG_PRINT)) continue;
}
- if (parm_filter == FLAG_WIZARD) {
- if (!((parm->flags & FLAG_WIZARD))) continue;
- }
- if (parm_filter == FLAG_ADVANCED) {
- if (!((parm->flags & FLAG_ADVANCED))) continue;
- }
if (heading && heading != last_heading) {
d_printf("<tr><td></td></tr><tr><td><b><u>%s</u></b></td></tr>\n", _(heading));
last_heading = heading;
@@ -401,7 +393,7 @@ static void write_config(FILE *f, BOOL show_defaults)
}
/****************************************************************************
- save and reload the smb.conf config file
+ save and reoad the smb.conf config file
****************************************************************************/
static int save_reload(int snum)
{
@@ -505,7 +497,6 @@ static void show_main_buttons(void)
image_link(_("Globals"), "globals", "images/globals.gif");
image_link(_("Shares"), "shares", "images/shares.gif");
image_link(_("Printers"), "printers", "images/printers.gif");
- image_link(_("Wizard"), "wizard", "images/wizard.gif");
}
if (have_read_access) {
image_link(_("Status"), "status", "images/status.gif");
@@ -517,18 +508,6 @@ static void show_main_buttons(void)
}
/****************************************************************************
- * Handle Display/Edit Mode CGI
- ****************************************************************************/
-static void ViewModeBoxes(int mode)
-{
- d_printf("<p>%s\n", _("Configuration View:&nbsp"));
- d_printf("<input type=radio name=\"ViewMode\" value=0 %s>Basic\n", (mode == 0) ? "checked" : "");
- d_printf("<input type=radio name=\"ViewMode\" value=1 %s>Advanced\n", (mode == 1) ? "checked" : "");
- d_printf("<input type=radio name=\"ViewMode\" value=2 %s>Developer\n", (mode == 2) ? "checked" : "");
- d_printf("</p><br>\n");
-}
-
-/****************************************************************************
display a welcome page
****************************************************************************/
static void welcome_page(void)
@@ -563,239 +542,24 @@ static void viewconfig_page(void)
}
/****************************************************************************
- second screen of the wizard ... Fetch Configuration Parameters
-****************************************************************************/
-static void wizard_params_page(void)
-{
- unsigned int parm_filter = FLAG_WIZARD;
-
- /* Here we first set and commit all the parameters that were selected
- in the previous screen. */
-
- d_printf("<H2>Wizard Parameter Edit Page</H2>\n");
-
- if (cgi_variable("Commit")) {
- commit_parameters(GLOBALS_SNUM);
- save_reload(0);
- }
-
- d_printf("<form name=\"swatform\" method=post action=wizard_params>\n");
-
- if (have_write_access) {
- d_printf("<input type=submit name=\"Commit\" value=\"Commit Changes\">\n");
- }
-
- d_printf("<input type=reset name=\"Reset Values\" value=\"Reset\">\n");
- d_printf("<p>\n");
-
- d_printf("<table>\n");
- show_parameters(GLOBALS_SNUM, 1, parm_filter, 0);
- d_printf("</table>\n");
- d_printf("</form>\n");
-}
-
-/****************************************************************************
- Utility to just rewrite the smb.conf file - effectively just cleans it up
-****************************************************************************/
-static void rewritecfg_file(void)
-{
- commit_parameters(GLOBALS_SNUM);
- save_reload(0);
- d_printf("<H2>Note: smb.conf %s</H2>\n", _("file has been read and rewritten"));
-}
-
-/****************************************************************************
- wizard to create/modify the smb.conf file
-****************************************************************************/
-static void wizard_page(void)
-{
- /* Set some variables to collect data from smb.conf */
- int role = 0;
- int winstype = 0;
- int have_home = -1;
- int HomeExpo = 0;
- int SerType = 0;
-
- if (cgi_variable("Rewrite")) {
- (void) rewritecfg_file();
- return;
- }
-
- if (cgi_variable("GetWizardParams")){
- (void) wizard_params_page();
- return;
- }
-
- if (cgi_variable("Commit")){
- SerType = atoi(cgi_variable("ServerType"));
- winstype = atoi(cgi_variable("WINSType"));
- have_home = lp_servicenumber(HOMES_NAME);
- HomeExpo = atoi(cgi_variable("HomeExpo"));
-
- /* Plain text passwords are too badly broken - use encrypted passwords only */
- lp_do_parameter( GLOBALS_SNUM, "encrypt passwords", "Yes");
-
- switch ( SerType ){
- case 0:
- /* Stand-alone Server */
- lp_do_parameter( GLOBALS_SNUM, "security", "USER" );
- lp_do_parameter( GLOBALS_SNUM, "domain logons", "No" );
- break;
- case 1:
- /* Domain Member */
- lp_do_parameter( GLOBALS_SNUM, "security", "DOMAIN" );
- lp_do_parameter( GLOBALS_SNUM, "domain logons", "No" );
- break;
- case 2:
- /* Domain Controller */
- lp_do_parameter( GLOBALS_SNUM, "security", "USER" );
- lp_do_parameter( GLOBALS_SNUM, "domain logons", "Yes" );
- break;
- }
- switch ( winstype ) {
- case 0:
- lp_do_parameter( GLOBALS_SNUM, "wins support", "No" );
- lp_do_parameter( GLOBALS_SNUM, "wins server", "" );
- break;
- case 1:
- lp_do_parameter( GLOBALS_SNUM, "wins support", "Yes" );
- lp_do_parameter( GLOBALS_SNUM, "wins server", "" );
- break;
- case 2:
- lp_do_parameter( GLOBALS_SNUM, "wins support", "No" );
- lp_do_parameter( GLOBALS_SNUM, "wins server", cgi_variable("WINSAddr"));
- break;
- }
-
- /* Have to create Homes share? */
- if ((HomeExpo == 1) && (have_home == -1)) {
- pstring unix_share;
-
- pstrcpy(unix_share,HOMES_NAME);
- load_config(False);
- lp_copy_service(GLOBALS_SNUM, unix_share);
- iNumNonAutoPrintServices = lp_numservices();
- have_home = lp_servicenumber(HOMES_NAME);
- lp_do_parameter( have_home, "read only", "No");
- lp_do_parameter( have_home, "valid users", "%S");
- lp_do_parameter( have_home, "browseable", "No");
- commit_parameters(have_home);
- }
-
- /* Need to Delete Homes share? */
- if ((HomeExpo == 0) && (have_home != -1)) {
- lp_remove_service(have_home);
- have_home = -1;
- }
-
- commit_parameters(GLOBALS_SNUM);
- save_reload(0);
- }
- else
- {
- /* Now determine smb.conf WINS settings */
- if (lp_wins_support())
- winstype = 1;
-/* if (strlen(lp_wins_server_list()) != 0 )
- * winstype = 2;
- */
-
- /* Do we have a homes share? */
- have_home = lp_servicenumber(HOMES_NAME);
- }
- if ((winstype == 2) && lp_wins_support())
- winstype = 3;
-
- role = lp_server_role();
-
- /* Here we go ... */
- d_printf("<H2>Samba Configuration Wizard</H2>\n");
- d_printf("<form method=post action=wizard>\n");
-
- if (have_write_access) {
- d_printf(_("The \"Rewrite smb.conf file\" button will clear the smb.conf file of all default values and of comments.\n"));
- d_printf(_("The same will happen if you press the commit button."));
- d_printf("<br><br>");
- d_printf("<center>");
- d_printf("<input type=submit name=\"Rewrite\" value=%s> &nbsp;&nbsp;",_("Rewrite smb.conf file"));
- d_printf("<input type=submit name=\"Commit\" value=%s> &nbsp;&nbsp;",_("Commit"));
- d_printf("<input type=submit name=\"GetWizardParams\" value=%s>", _("Edit Parameter Values"));
- d_printf("</center>");
- }
-
- d_printf("<hr>");
- d_printf("<center><table border=0>");
- d_printf("<tr><td><b>%s</b></td>\n", "Server Type:&nbsp;");
- d_printf("<td><input type=radio name=\"ServerType\" value=0 %s> Stand Alone&nbsp;</td>", (role == ROLE_STANDALONE) ? "checked" : "");
- d_printf("<td><input type=radio name=\"ServerType\" value=1 %s> Domain Member&nbsp;</td>", (role == ROLE_DOMAIN_MEMBER) ? "checked" : "");
- d_printf("<td><input type=radio name=\"ServerType\" value=2 %s> Domain Controller&nbsp;</td>", (role == ROLE_DOMAIN_PDC) ? "checked" : "");
- d_printf("</tr>");
- if (role == ROLE_DOMAIN_BDC) {
- d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">Unusual Type in smb.conf - Please Select New Mode</font></td></tr>");
- }
- d_printf("<tr><td><b>%s</b></td>\n", "Configure WINS As:&nbsp;");
- d_printf("<td><input type=radio name=\"WINSType\" value=0 %s> Not Used&nbsp;</td>", (winstype == 0) ? "checked" : "");
- d_printf("<td><input type=radio name=\"WINSType\" value=1 %s> Server for client use&nbsp;</td>", (winstype == 1) ? "checked" : "");
- d_printf("<td><input type=radio name=\"WINSType\" value=2 %s> Client of another WINS server&nbsp;</td>", (winstype == 2) ? "checked" : "");
- d_printf("<tr><td></td><td></td><td></td><td>Remote WINS Server&nbsp;<input type=text size=\"16\" name=\"WINSAddr\" value=\"%s\"></td></tr>",lp_wins_server_list());
- if (winstype == 3) {
- d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">Error: WINS Server Mode and WINS Support both set in smb.conf</font></td></tr>");
- d_printf("<tr><td></td><td colspan=3><font color=\"#ff0000\">Please Select desired WINS mode above.</font></td></tr>");
- }
- d_printf("</tr>");
- d_printf("<tr><td><b>%s</b></td>\n","Expose Home Directories:&nbsp;");
- d_printf("<td><input type=radio name=\"HomeExpo\" value=1 %s> Yes</td>", (have_home == -1) ? "" : "checked ");
- d_printf("<td><input type=radio name=\"HomeExpo\" value=0 %s> No</td>", (have_home == -1 ) ? "checked" : "");
- d_printf("<td></td></tr>");
-
- /* Enable this when we are ready ....
- * d_printf("<tr><td><b>%s</b></td>\n","Is Print Server:&nbsp;");
- * d_printf("<td><input type=radio name=\"PtrSvr\" value=1 %s> Yes</td>");
- * d_printf("<td><input type=radio name=\"PtrSvr\" value=0 %s> No</td>");
- * d_printf("<td></td></tr>");
- */
-
- d_printf("</table></center>");
- d_printf("<hr>");
-
- d_printf(_("The above configuration options will set multiple parameters and will generally assist with rapid Samba deployment.\n"));
- d_printf("</form>\n");
-}
-
-
-/****************************************************************************
display a globals editing page
****************************************************************************/
static void globals_page(void)
{
- unsigned int parm_filter = FLAG_BASIC;
- int mode = 0;
+ int advanced = 0;
d_printf("<H2>%s</H2>\n", _("Global Variables"));
+ if (cgi_variable("Advanced") && !cgi_variable("Basic"))
+ advanced = 1;
+
if (cgi_variable("Commit")) {
commit_parameters(GLOBALS_SNUM);
save_reload(0);
}
- if ( cgi_variable("ViewMode") )
- mode = atoi(cgi_variable("ViewMode"));
-
- d_printf("<form name=\"swatform\" method=post action=globals>\n");
-
- ViewModeBoxes( mode );
- switch ( mode ) {
- case 0:
- parm_filter = FLAG_BASIC;
- break;
- case 1:
- parm_filter = FLAG_ADVANCED;
- break;
- case 2:
- parm_filter = FLAG_DEVELOPER;
- break;
- }
- d_printf("<br>\n");
+ d_printf("<FORM name=\"swatform\" method=post>\n");
+
if (have_write_access) {
d_printf("<input type=submit name=\"Commit\" value=\"%s\">\n",
_("Commit Changes"));
@@ -803,12 +567,22 @@ static void globals_page(void)
d_printf("<input type=reset name=\"Reset Values\" value=\"%s\">\n",
_("Reset Values"));
-
+ if (advanced == 0) {
+ d_printf("<input type=submit name=\"Advanced\" value=\"%s\">\n", _("Advanced View"));
+ } else {
+ d_printf("<input type=submit name=\"Basic\" value=\"%s\">\n", _("Basic View"));
+ }
d_printf("<p>\n");
+
d_printf("<table>\n");
- show_parameters(GLOBALS_SNUM, 1, parm_filter, 0);
+ show_parameters(GLOBALS_SNUM, 1, advanced, 0);
d_printf("</table>\n");
- d_printf("</form>\n");
+
+ if (advanced) {
+ d_printf("<input type=hidden name=\"Advanced\" value=1>\n");
+ }
+
+ d_printf("</FORM>\n");
}
/****************************************************************************
@@ -821,14 +595,16 @@ static void shares_page(void)
char *s;
int snum = -1;
int i;
- int mode = 0;
- unsigned int parm_filter = FLAG_BASIC;
+ int advanced = 0;
if (share)
snum = lp_servicenumber(share);
d_printf("<H2>%s</H2>\n", _("Share Parameters"));
+ if (cgi_variable("Advanced") && !cgi_variable("Basic"))
+ advanced = 1;
+
if (cgi_variable("Commit") && snum >= 0) {
commit_parameters(snum);
save_reload(0);
@@ -852,21 +628,7 @@ static void shares_page(void)
d_printf("<FORM name=\"swatform\" method=post>\n");
d_printf("<table>\n");
- if ( cgi_variable("ViewMode") )
- mode = atoi(cgi_variable("ViewMode"));
- ViewModeBoxes( mode );
- switch ( mode ) {
- case 0:
- parm_filter = FLAG_BASIC;
- break;
- case 1:
- parm_filter = FLAG_ADVANCED;
- break;
- case 2:
- parm_filter = FLAG_DEVELOPER;
- break;
- }
- d_printf("<br><tr>\n");
+ d_printf("<tr>\n");
d_printf("<td><input type=submit name=selectshare value=\"%s\"></td>\n", _("Choose Share"));
d_printf("<td><select name=share>\n");
if (snum < 0)
@@ -900,15 +662,24 @@ static void shares_page(void)
}
d_printf("<input type=reset name=\"Reset Values\" value=\"%s\">\n", _("Reset Values"));
+ if (advanced == 0) {
+ d_printf("<input type=submit name=\"Advanced\" value=\"%s\">\n", _("Advanced View"));
+ } else {
+ d_printf("<input type=submit name=\"Basic\" value=\"%s\">\n", _("Basic View"));
+ }
d_printf("<p>\n");
}
if (snum >= 0) {
d_printf("<table>\n");
- show_parameters(snum, 1, parm_filter, 0);
+ show_parameters(snum, 1, advanced, 0);
d_printf("</table>\n");
}
+ if (advanced) {
+ d_printf("<input type=hidden name=\"Advanced\" value=1>\n");
+ }
+
d_printf("</FORM>\n");
}
@@ -1151,8 +922,7 @@ static void printers_page(void)
char *s;
int snum=-1;
int i;
- int mode = 0;
- unsigned int parm_filter = FLAG_BASIC;
+ int advanced = 0;
if (share)
snum = lp_servicenumber(share);
@@ -1165,6 +935,9 @@ static void printers_page(void)
d_printf("<A HREF=\"/swat/help/smb.conf.5.html#printcapname\" target=\"docs\">%s</A>\n", _("Printcap Name"));
d_printf(_("Attempting to delete these printers from SWAT will have no effect.\n"));
+ if (cgi_variable("Advanced") && !cgi_variable("Basic"))
+ advanced = 1;
+
if (cgi_variable("Commit") && snum >= 0) {
commit_parameters(snum);
if (snum >= iNumNonAutoPrintServices)
@@ -1192,20 +965,6 @@ static void printers_page(void)
d_printf("<FORM name=\"swatform\" method=post>\n");
- if ( cgi_variable("ViewMode") )
- mode = atoi(cgi_variable("ViewMode"));
- ViewModeBoxes( mode );
- switch ( mode ) {
- case 0:
- parm_filter = FLAG_BASIC;
- break;
- case 1:
- parm_filter = FLAG_ADVANCED;
- break;
- case 2:
- parm_filter = FLAG_DEVELOPER;
- break;
- }
d_printf("<table>\n");
d_printf("<tr><td><input type=submit name=selectshare value=\"%s\"></td>\n", _("Choose Printer"));
d_printf("<td><select name=share>\n");
@@ -1244,14 +1003,24 @@ static void printers_page(void)
d_printf("<input type=submit name=\"Commit\" value=\"%s\">\n", _("Commit Changes"));
}
d_printf("<input type=reset name=\"Reset Values\" value=\"%s\">\n", _("Reset Values"));
+ if (advanced == 0) {
+ d_printf("<input type=submit name=\"Advanced\" value=\"%s\">\n", _("Advanced View"));
+ } else {
+ d_printf("<input type=submit name=\"Basic\" value=\"%s\">\n", _("Basic View"));
+ }
d_printf("<p>\n");
}
if (snum >= 0) {
d_printf("<table>\n");
- show_parameters(snum, 1, parm_filter, 1);
+ show_parameters(snum, 1, advanced, 1);
d_printf("</table>\n");
}
+
+ if (advanced) {
+ d_printf("<input type=hidden name=\"Advanced\" value=1>\n");
+ }
+
d_printf("</FORM>\n");
}
@@ -1340,12 +1109,6 @@ static void printers_page(void)
viewconfig_page();
} else if (strcmp(page,"passwd")==0) {
passwd_page();
- } else if (have_read_access && strcmp(page,"wizard")==0) {
- wizard_page();
- } else if (have_read_access && strcmp(page,"wizard_params")==0) {
- wizard_params_page();
- } else if (have_read_access && strcmp(page,"rewritecfg")==0) {
- rewritecfg_file();
} else {
welcome_page();
}