root/branches/samba-3.0/source/web/startstop.c

Revision 1, 2.4 kB (checked in by psmedley, 21 months ago)

Initial code import

Line 
1/*
2   Unix SMB/CIFS implementation.
3   start/stop nmbd and smbd
4   Copyright (C) Andrew Tridgell 1998
5   
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2 of the License, or
9   (at your option) any later version.
10   
11   This program is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   GNU General Public License for more details.
15   
16   You should have received a copy of the GNU General Public License
17   along with this program; if not, write to the Free Software
18   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
21#include "includes.h"
22#include "web/swat_proto.h"
23#include "dynconfig.h"
24
25
26/** Startup smbd from web interface. */
27void start_smbd(void)
28{
29        pstring binfile;
30
31        if (geteuid() != 0) return;
32
33        if (fork()) {
34                return;
35        }
36
37        slprintf(binfile, sizeof(pstring) - 1, "%s/smbd", dyn_SBINDIR);
38
39        become_daemon(True, False);
40
41        execl(binfile, binfile, "-D", NULL);
42
43        exit(0);
44}
45
46/* startup nmbd */
47void start_nmbd(void)
48{
49        pstring binfile;
50
51        if (geteuid() != 0) return;
52
53        if (fork()) {
54                return;
55        }
56
57        slprintf(binfile, sizeof(pstring) - 1, "%s/nmbd", dyn_SBINDIR);
58       
59        become_daemon(True, False);
60
61        execl(binfile, binfile, "-D", NULL);
62
63        exit(0);
64}
65
66/** Startup winbindd from web interface. */
67void start_winbindd(void)
68{
69        pstring binfile;
70
71        if (geteuid() != 0) return;
72
73        if (fork()) {
74                return;
75        }
76
77        slprintf(binfile, sizeof(pstring) - 1, "%s/winbindd", dyn_SBINDIR);
78
79        become_daemon(True, False);
80
81        execl(binfile, binfile, NULL);
82
83        exit(0);
84}
85
86
87/* stop smbd */
88void stop_smbd(void)
89{
90        pid_t pid = pidfile_pid("smbd");
91
92        if (geteuid() != 0) return;
93
94        if (pid <= 0) return;
95
96        kill(pid, SIGTERM);
97}
98
99/* stop nmbd */
100void stop_nmbd(void)
101{
102        pid_t pid = pidfile_pid("nmbd");
103
104        if (geteuid() != 0) return;
105
106        if (pid <= 0) return;
107
108        kill(pid, SIGTERM);
109}
110#ifdef WITH_WINBIND
111/* stop winbindd */
112void stop_winbindd(void)
113{
114        pid_t pid = pidfile_pid("winbindd");
115
116        if (geteuid() != 0) return;
117
118        if (pid <= 0) return;
119
120        kill(pid, SIGTERM);
121}
122#endif
123/* kill a specified process */
124void kill_pid(struct process_id pid)
125{
126        if (geteuid() != 0) return;
127
128        if (procid_to_pid(&pid) <= 0) return;
129
130        kill(procid_to_pid(&pid), SIGTERM);
131}
Note: See TracBrowser for help on using the browser.