start/stop/restart all in swat

John H Terpstra jht at samba.org
Tue Apr 22 19:11:58 GMT 2003


Stephen,

Thanks. I'll look at it. Will most likely adopt this patch.

Cheers,
John T.

On Tue, 22 Apr 2003, Roylance, Stephen D. wrote:

> I've spent a lot of time starting and stopping all the samba services through
> swat today, so I did this:
> *** statuspage.c.orig	Tue Apr 22 13:17:37 2003
> --- statuspage.c	Tue Apr 22 13:54:23 2003
> ***************
> *** 220,264 ****
>   	int autorefresh=0;
>   	int refresh_interval=30;
>   	TDB_CONTEXT *tdb;
>
>   	smbd_pid = pidfile_pid("smbd");
>
> ! 	if (cgi_variable("smbd_restart")) {
>   		stop_smbd();
>   		start_smbd();
>   	}
>
> ! 	if (cgi_variable("smbd_start")) {
>   		start_smbd();
>   	}
>
> ! 	if (cgi_variable("smbd_stop")) {
>   		stop_smbd();
>   	}
>
> ! 	if (cgi_variable("nmbd_restart")) {
>   		stop_nmbd();
>   		start_nmbd();
>   	}
> ! 	if (cgi_variable("nmbd_start")) {
>   		start_nmbd();
>   	}
>
> ! 	if (cgi_variable("nmbd_stop")) {
>   		stop_nmbd();
>   	}
>
>   #ifdef WITH_WINBIND
> ! 	if (cgi_variable("winbindd_restart")) {
>   		stop_winbindd();
>   		start_winbindd();
>   	}
>
> ! 	if (cgi_variable("winbindd_start")) {
>   		start_winbindd();
>   	}
>
> ! 	if (cgi_variable("winbindd_stop")) {
>   		stop_winbindd();
>   	}
>   #endif
> --- 220,265 ----
>   	int autorefresh=0;
>   	int refresh_interval=30;
>   	TDB_CONTEXT *tdb;
> + 	int nr_running=0;
>
>   	smbd_pid = pidfile_pid("smbd");
>
> ! 	if (cgi_variable("smbd_restart") || cgi_variable("all_restart")) {
>   		stop_smbd();
>   		start_smbd();
>   	}
>
> ! 	if (cgi_variable("smbd_start") || cgi_variable("all_start")) {
>   		start_smbd();
>   	}
>
> ! 	if (cgi_variable("smbd_stop") || cgi_variable("all_stop")) {
>   		stop_smbd();
>   	}
>
> ! 	if (cgi_variable("nmbd_restart") || cgi_variable("all_restart")) {
>   		stop_nmbd();
>   		start_nmbd();
>   	}
> ! 	if (cgi_variable("nmbd_start") || cgi_variable("all_start")) {
>   		start_nmbd();
>   	}
>
> ! 	if (cgi_variable("nmbd_stop")|| cgi_variable("all_stop")) {
>   		stop_nmbd();
>   	}
>
>   #ifdef WITH_WINBIND
> ! 	if (cgi_variable("winbindd_restart") || cgi_variable("all_restart")) {
>   		stop_winbindd();
>   		start_winbindd();
>   	}
>
> ! 	if (cgi_variable("winbindd_start") || cgi_variable("all_start")) {
>   		start_winbindd();
>   	}
>
> ! 	if (cgi_variable("winbindd_stop") || cgi_variable("all_stop")) {
>   		stop_winbindd();
>   	}
>   #endif
> ***************
> *** 314,319 ****
> --- 315,321 ----
>   	d_printf("<tr><td>%s</td><td>%s</td>\n", _("smbd:"),
> smbd_running()?_("running"):_("not running"));
>   	if (geteuid() == 0) {
>   	    if (smbd_running()) {
> + 		nr_running++;
>   		d_printf("<td><input type=submit name=\"smbd_stop\"
> value=\"%s\"></td>\n", _("Stop smbd"));
>   	    } else {
>   		d_printf("<td><input type=submit name=\"smbd_start\"
> value=\"%s\"></td>\n", _("Start smbd"));
> ***************
> *** 326,336 ****
> --- 328,352 ----
>   	d_printf("<tr><td>%s</td><td>%s</td>\n", _("nmbd:"),
> nmbd_running()?_("running"):_("not running"));
>   	if (geteuid() == 0) {
>   	    if (nmbd_running()) {
> + 		nr_running++;
>   		d_printf("<td><input type=submit name=\"nmbd_stop\"
> value=\"%s\"></td>\n", _("Stop nmbd"));
>   	    } else {
>   		d_printf("<td><input type=submit name=\"nmbd_start\"
> value=\"%s\"></td>\n", _("Start nmbd"));
>   	    }
>   	    d_printf("<td><input type=submit name=\"nmbd_restart\"
> value=\"%s\"></td>\n", _("Restart nmbd"));
> + #ifndef WITH_WINBIND
> + 	    if (nr_running == 2) {
> + 	        /* stop, restart all */
> + 		d_printf("</tr><tr><td></td><td></td>\n");
> + 		d_printf("<td><input type=submit name=\"all_stop\"
> value=\"%s\"></td>\n", _("Stop All"));
> + 		d_printf("<td><input type=submit name=\"all_restart\"
> value=\"%s\"></td>\n", _("Restart All"));
> + 	    }
> + 	    else if (nr_running == 0) {
> + 	    	/* start all */
> + 		d_printf("</tr><tr><td></td><td></td>\n");
> + 		d_printf("<td><input type=submit name=\"all_start\"
> value=\"%s\"></td>\n", _("Start All"));
> + 	    }
> + #endif
>   	}
>   	d_printf("</tr>\n");
>
> ***************
> *** 339,349 ****
> --- 355,378 ----
>   	d_printf("<tr><td>%s</td><td>%s</td>\n", _("winbindd:"),
> winbindd_running()?_("running"):_("not running"));
>   	if (geteuid() == 0) {
>   	    if (winbindd_running()) {
> + 		nr_running++;
>   		d_printf("<td><input type=submit name=\"winbindd_stop\"
> value=\"%s\"></td>\n", _("Stop winbindd"));
>   	    } else {
>   		d_printf("<td><input type=submit name=\"winbindd_start\"
> value=\"%s\"></td>\n", _("Start winbindd"));
>   	    }
>   	    d_printf("<td><input type=submit name=\"winbindd_restart\"
> value=\"%s\"></td>\n", _("Restart winbindd"));
> + 	    if (nr_running == 3) {
> + 	        /* stop, restart all */
> + 		d_printf("</tr><tr><td></td><td></td>\n");
> + 		d_printf("<td><input type=submit name=\"all_stop\"
> value=\"%s\"></td>\n", _("Stop All"));
> + 		d_printf("<td><input type=submit name=\"all_restart\"
> value=\"%s\"></td>\n", _("Restart All"));
> + 	    }
> + 	    else if (nr_running == 0) {
> + 	    	/* start all */
> + 		d_printf("</tr><tr><td></td><td></td>\n");
> + 		d_printf("<td><input type=submit name=\"all_start\"
> value=\"%s\"></td>\n", _("Start All"));
> + 	    }
> +
>   	}
>   	d_printf("</tr>\n");
>   #endif
>
> This makes a'stop all' and 'restart all'  button to the status page if all the
> services are running, and a 'start all' if none are running.  I don't know if
> the start stop order is optimum, but it could be re-arranged.
>
> -Steve
>

-- 
John H Terpstra
Email: jht at samba.org


More information about the samba-technical mailing list