mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
Added patch from Stephen Roylance.
This commit is contained in:
parent
2dc12c8c64
commit
71369f9089
@ -22,8 +22,6 @@
|
|||||||
#include "../web/swat_proto.h"
|
#include "../web/swat_proto.h"
|
||||||
#include "dynconfig.h"
|
#include "dynconfig.h"
|
||||||
|
|
||||||
/** Need to wait for daemons to startup */
|
|
||||||
#define SLEEP_TIME 3
|
|
||||||
|
|
||||||
/** Startup smbd from web interface. */
|
/** Startup smbd from web interface. */
|
||||||
void start_smbd(void)
|
void start_smbd(void)
|
||||||
@ -33,7 +31,6 @@ void start_smbd(void)
|
|||||||
if (geteuid() != 0) return;
|
if (geteuid() != 0) return;
|
||||||
|
|
||||||
if (fork()) {
|
if (fork()) {
|
||||||
sleep(SLEEP_TIME);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,7 +51,6 @@ void start_nmbd(void)
|
|||||||
if (geteuid() != 0) return;
|
if (geteuid() != 0) return;
|
||||||
|
|
||||||
if (fork()) {
|
if (fork()) {
|
||||||
sleep(SLEEP_TIME);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,7 +71,6 @@ void start_winbindd(void)
|
|||||||
if (geteuid() != 0) return;
|
if (geteuid() != 0) return;
|
||||||
|
|
||||||
if (fork()) {
|
if (fork()) {
|
||||||
sleep(SLEEP_TIME);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,5 +128,4 @@ void kill_pid(pid_t pid)
|
|||||||
if (pid <= 0) return;
|
if (pid <= 0) return;
|
||||||
|
|
||||||
kill(pid, SIGTERM);
|
kill(pid, SIGTERM);
|
||||||
sleep(SLEEP_TIME);
|
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,9 @@
|
|||||||
|
|
||||||
#define PIDMAP struct PidMap
|
#define PIDMAP struct PidMap
|
||||||
|
|
||||||
|
/* how long to wait for start/stops to take effect */
|
||||||
|
#define SLEEP_TIME 3
|
||||||
|
|
||||||
PIDMAP {
|
PIDMAP {
|
||||||
PIDMAP *next, *prev;
|
PIDMAP *next, *prev;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
@ -158,6 +161,7 @@ static int traverse_fn1(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, void* st
|
|||||||
slprintf(buf,sizeof(buf)-1,"kill_%d", (int)crec.pid);
|
slprintf(buf,sizeof(buf)-1,"kill_%d", (int)crec.pid);
|
||||||
if (cgi_variable(buf)) {
|
if (cgi_variable(buf)) {
|
||||||
kill_pid(crec.pid);
|
kill_pid(crec.pid);
|
||||||
|
sleep(SLEEP_TIME);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -221,48 +225,62 @@ void status_page(void)
|
|||||||
int refresh_interval=30;
|
int refresh_interval=30;
|
||||||
TDB_CONTEXT *tdb;
|
TDB_CONTEXT *tdb;
|
||||||
int nr_running=0;
|
int nr_running=0;
|
||||||
|
BOOL waitup = False;
|
||||||
|
|
||||||
smbd_pid = pidfile_pid("smbd");
|
smbd_pid = pidfile_pid("smbd");
|
||||||
|
|
||||||
if (cgi_variable("smbd_restart") || cgi_variable("all_restart")) {
|
if (cgi_variable("smbd_restart") || cgi_variable("all_restart")) {
|
||||||
stop_smbd();
|
stop_smbd();
|
||||||
start_smbd();
|
start_smbd();
|
||||||
|
waitup=True;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cgi_variable("smbd_start") || cgi_variable("all_start")) {
|
if (cgi_variable("smbd_start") || cgi_variable("all_start")) {
|
||||||
start_smbd();
|
start_smbd();
|
||||||
|
waitup=True;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cgi_variable("smbd_stop") || cgi_variable("all_stop")) {
|
if (cgi_variable("smbd_stop") || cgi_variable("all_stop")) {
|
||||||
stop_smbd();
|
stop_smbd();
|
||||||
|
waitup=True;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cgi_variable("nmbd_restart") || cgi_variable("all_restart")) {
|
if (cgi_variable("nmbd_restart") || cgi_variable("all_restart")) {
|
||||||
stop_nmbd();
|
stop_nmbd();
|
||||||
start_nmbd();
|
start_nmbd();
|
||||||
|
waitup=True;
|
||||||
}
|
}
|
||||||
if (cgi_variable("nmbd_start") || cgi_variable("all_start")) {
|
if (cgi_variable("nmbd_start") || cgi_variable("all_start")) {
|
||||||
start_nmbd();
|
start_nmbd();
|
||||||
|
waitup=True;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cgi_variable("nmbd_stop")|| cgi_variable("all_stop")) {
|
if (cgi_variable("nmbd_stop")|| cgi_variable("all_stop")) {
|
||||||
stop_nmbd();
|
stop_nmbd();
|
||||||
|
waitup=True;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WITH_WINBIND
|
#ifdef WITH_WINBIND
|
||||||
if (cgi_variable("winbindd_restart") || cgi_variable("all_restart")) {
|
if (cgi_variable("winbindd_restart") || cgi_variable("all_restart")) {
|
||||||
stop_winbindd();
|
stop_winbindd();
|
||||||
start_winbindd();
|
start_winbindd();
|
||||||
|
waitup=True;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cgi_variable("winbindd_start") || cgi_variable("all_start")) {
|
if (cgi_variable("winbindd_start") || cgi_variable("all_start")) {
|
||||||
start_winbindd();
|
start_winbindd();
|
||||||
|
waitup=True;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cgi_variable("winbindd_stop") || cgi_variable("all_stop")) {
|
if (cgi_variable("winbindd_stop") || cgi_variable("all_stop")) {
|
||||||
stop_winbindd();
|
stop_winbindd();
|
||||||
|
waitup=True;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
/* wait for daemons to start/stop */
|
||||||
|
if (waitup)
|
||||||
|
sleep(SLEEP_TIME);
|
||||||
|
|
||||||
if (cgi_variable("autorefresh")) {
|
if (cgi_variable("autorefresh")) {
|
||||||
autorefresh = 1;
|
autorefresh = 1;
|
||||||
} else if (cgi_variable("norefresh")) {
|
} else if (cgi_variable("norefresh")) {
|
||||||
@ -334,19 +352,6 @@ void status_page(void)
|
|||||||
d_printf("<td><input type=submit name=\"nmbd_start\" value=\"%s\"></td>\n", _("Start nmbd"));
|
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"));
|
d_printf("<td><input type=submit name=\"nmbd_restart\" value=\"%s\"></td>\n", _("Restart nmbd"));
|
||||||
#ifndef WITH_WINBIND
|
|
||||||
if (nr_running >= 1) {
|
|
||||||
/* 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");
|
d_printf("</tr>\n");
|
||||||
|
|
||||||
@ -361,22 +366,23 @@ void status_page(void)
|
|||||||
d_printf("<td><input type=submit name=\"winbindd_start\" value=\"%s\"></td>\n", _("Start winbindd"));
|
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"));
|
d_printf("<td><input type=submit name=\"winbindd_restart\" value=\"%s\"></td>\n", _("Restart winbindd"));
|
||||||
|
}
|
||||||
|
d_printf("</tr>\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (geteuid() == 0) {
|
||||||
|
d_printf("<tr><td></td><td></td>\n");
|
||||||
if (nr_running >= 1) {
|
if (nr_running >= 1) {
|
||||||
/* stop, restart all */
|
/* 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_stop\" value=\"%s\"></td>\n", _("Stop All"));
|
||||||
d_printf("<td><input type=submit name=\"all_restart\" value=\"%s\"></td>\n", _("Restart All"));
|
d_printf("<td><input type=submit name=\"all_restart\" value=\"%s\"></td>\n", _("Restart All"));
|
||||||
}
|
}
|
||||||
else if (nr_running == 0) {
|
else if (nr_running == 0) {
|
||||||
/* start all */
|
/* 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("<td><input type=submit name=\"all_start\" value=\"%s\"></td>\n", _("Start All"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
d_printf("</tr>\n");
|
d_printf("</tr>\n");
|
||||||
#endif
|
}
|
||||||
|
|
||||||
d_printf("</table>\n");
|
d_printf("</table>\n");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user