Revision cd72ded3
Added by Timo Boettcher about 18 years ago
etc/inc/service-utils.inc | ||
---|---|---|
94 | 94 |
} |
95 | 95 |
|
96 | 96 |
function stop_service($name) { |
97 |
global $config;
|
|
98 |
if($config['installedpackages']['service']) {
|
|
99 |
foreach($config['installedpackages']['service'] as $service) {
|
|
100 |
if(strtolower($service['name']) == strtolower($name)) {
|
|
101 |
if($service['rcfile']) {
|
|
102 |
if($service['prefix']) {
|
|
103 |
$prefix =& $service['prefix'];
|
|
104 |
} else {
|
|
105 |
$prefix = "/usr/local/etc/rc.d/";
|
|
106 |
}
|
|
107 |
mwexec_bg($prefix . $service['rcfile'] . " stop");
|
|
108 |
}
|
|
109 |
if($service['stopcmd']) {
|
|
110 |
eval($service['stopcmd']);
|
|
111 |
}
|
|
112 |
if(!($service['rcfile'] or $service['stopcmd'])) {
|
|
113 |
mwexec_bg("/usr/bin/killall {$service['executable']}");
|
|
114 |
return;
|
|
115 |
}
|
|
116 |
break;
|
|
117 |
}
|
|
118 |
}
|
|
119 |
}
|
|
120 |
/* finally if we get here lets simply kill the service name */
|
|
121 |
mwexec_bg("/usr/bin/killall {$name}");
|
|
97 |
global $config;
|
|
98 |
if($config['installedpackages']['service']) {
|
|
99 |
foreach($config['installedpackages']['service'] as $service) {
|
|
100 |
if(strtolower($service['name']) == strtolower($name)) {
|
|
101 |
if($service['rcfile']) {
|
|
102 |
if($service['prefix']) {
|
|
103 |
$prefix =& $service['prefix'];
|
|
104 |
} else {
|
|
105 |
$prefix = "/usr/local/etc/rc.d/";
|
|
106 |
}
|
|
107 |
mwexec_bg($prefix . $service['rcfile'] . " stop");
|
|
108 |
}
|
|
109 |
if($service['stopcmd']) {
|
|
110 |
eval($service['stopcmd']);
|
|
111 |
}
|
|
112 |
if(!($service['rcfile'] or $service['stopcmd'])) { |
|
113 |
mwexec_bg("/usr/bin/killall {$service['executable']}"); |
|
114 |
return; |
|
115 |
} |
|
116 |
break;
|
|
117 |
}
|
|
118 |
}
|
|
119 |
}
|
|
120 |
/* finally if we get here lets simply kill the service name */ |
|
121 |
mwexec_bg("/usr/bin/killall {$name}"); |
|
122 | 122 |
} |
123 | 123 |
|
124 | 124 |
function restart_service($name) { |
125 |
global $config;
|
|
125 |
global $config;
|
|
126 | 126 |
stop_service($name); |
127 | 127 |
start_service($name); |
128 |
if($config['installedpackages']['service']) {
|
|
129 |
foreach($config['installedpackages']['service'] as $service) {
|
|
130 |
if(strtolower($service['name']) == strtolower($name)) {
|
|
131 |
if($service['restartcmd']) {
|
|
132 |
eval($service['restartcmd']);
|
|
133 |
}
|
|
134 |
break;
|
|
135 |
}
|
|
136 |
}
|
|
137 |
}
|
|
128 |
if($config['installedpackages']['service']) {
|
|
129 |
foreach($config['installedpackages']['service'] as $service) {
|
|
130 |
if(strtolower($service['name']) == strtolower($name)) {
|
|
131 |
if($service['restartcmd']) {
|
|
132 |
eval($service['restartcmd']);
|
|
133 |
}
|
|
134 |
break;
|
|
135 |
}
|
|
136 |
}
|
|
137 |
}
|
|
138 | 138 |
} |
139 | 139 |
|
140 | 140 |
function is_process_running($process) { |
... | ... | |
142 | 142 |
return $running; |
143 | 143 |
} |
144 | 144 |
|
145 |
function is_pid_running($pidfile) { |
|
146 |
$pid = trim(file_get_contents($pidfile)); |
|
147 |
$running = (trim(shell_exec("ps axwu | grep '\b{$pid}\b' | grep -v 'grep'")) != ''); |
|
148 |
return $running; |
|
149 |
} |
|
150 |
|
|
145 | 151 |
function is_dhcp_running($interface) { |
146 | 152 |
$interface = convert_friendly_interface_to_real_interface_name($interface); |
147 | 153 |
$status = find_dhclient_process($interface); |
... | ... | |
165 | 171 |
} |
166 | 172 |
*/ |
167 | 173 |
if(is_array($config['installedpackages']['service'])) { |
168 |
foreach($config['installedpackages']['service'] as $aservice) {
|
|
169 |
if(strtolower($service) == strtolower($aservice['name'])) {
|
|
174 |
foreach($config['installedpackages']['service'] as $aservice) {
|
|
175 |
if(strtolower($service) == strtolower($aservice['name'])) {
|
|
170 | 176 |
if(!$aservice['executable']) return false; |
171 | 177 |
/* |
172 | 178 |
if(count(preg_grep("/{$aservice['executable']}/i", $ps))) { |
... | ... | |
175 | 181 |
return false; |
176 | 182 |
} |
177 | 183 |
*/ |
178 |
return is_process_running($aservice['executable']) ? true : false; |
|
179 |
} |
|
180 |
} |
|
181 |
} |
|
184 |
if ($service == "openvpn") { |
|
185 |
} else { |
|
186 |
return is_process_running($aservice['executable']) ? true : false; |
|
187 |
} |
|
188 |
} |
|
189 |
} |
|
190 |
} |
|
182 | 191 |
} |
183 | 192 |
|
184 |
?> |
|
193 |
?> |
usr/local/www/status_services.php | ||
---|---|---|
57 | 57 |
if(file_exists('/usr/local/etc/rc.d/miniupnpd.sh')) |
58 | 58 |
mwexec('/usr/local/etc/rc.d/miniupnpd.sh restart'); |
59 | 59 |
break; |
60 |
case 'racoon': |
|
61 |
exec("killall -9 racoon"); |
|
62 |
sleep(1); |
|
63 |
vpn_ipsec_force_reload(); |
|
64 |
break; |
|
60 |
case 'racoon': |
|
61 |
exec("killall -9 racoon"); |
|
62 |
sleep(1); |
|
63 |
vpn_ipsec_force_reload(); |
|
64 |
break; |
|
65 |
case 'openvpn': |
|
66 |
$vpnmode = $_GET['vpnmode']; |
|
67 |
if (($vpnmode == "server") or ($vpnmode == "client")) { |
|
68 |
$id = $_GET['id']; |
|
69 |
if (is_numeric($id)) { |
|
70 |
$pidfile = $g['varrun_path'] . "/openvpn_{$vpnmode}{$id}.pid"; |
|
71 |
killbypid($pidfile); |
|
72 |
sleep(1); |
|
73 |
$configfile = $g['varetc_path'] . "/openvpn_{$vpnmode}{$id}.conf"; |
|
74 |
mwexec_bg("openvpn --config $configfile"); |
|
75 |
} |
|
76 |
} |
|
77 |
break; |
|
65 | 78 |
default: |
66 | 79 |
restart_service($_GET['service']); |
67 | 80 |
break; |
... | ... | |
85 | 98 |
if(file_exists('/usr/local/etc/rc.d/miniupnpd.sh')) |
86 | 99 |
mwexec('/usr/local/etc/rc.d/miniupnpd.sh start'); |
87 | 100 |
break; |
88 |
case 'racoon': |
|
89 |
exec("killall -9 racoon"); |
|
90 |
sleep(1); |
|
91 |
vpn_ipsec_force_reload(); |
|
92 |
break; |
|
101 |
case 'racoon': |
|
102 |
exec("killall -9 racoon"); |
|
103 |
sleep(1); |
|
104 |
vpn_ipsec_force_reload(); |
|
105 |
break; |
|
106 |
case 'openvpn': |
|
107 |
$vpnmode = $_GET['vpnmode']; |
|
108 |
if (($vpnmode == "server") or ($vpnmode == "client")) { |
|
109 |
$id = $_GET['id']; |
|
110 |
if (is_numeric($id)) { |
|
111 |
$configfile = $g['varetc_path'] . "/openvpn_{$vpnmode}{$id}.conf"; |
|
112 |
mwexec_bg("openvpn --config $configfile"); |
|
113 |
} |
|
114 |
} |
|
115 |
break; |
|
93 | 116 |
default: |
94 | 117 |
start_service($_GET['service']); |
95 | 118 |
break; |
96 | 119 |
} |
97 |
$savemsg = "{$_GET['service']} has been started.";
|
|
120 |
$savemsg = "{$_GET['service']} has been started.";
|
|
98 | 121 |
sleep(5); |
99 | 122 |
} |
100 | 123 |
|
... | ... | |
107 | 130 |
case 'choparp': |
108 | 131 |
killbyname("choparp"); |
109 | 132 |
break; |
110 |
case 'dhcpd':
|
|
133 |
case 'dhcpd':
|
|
111 | 134 |
killbyname("dhcpd"); |
112 |
break;
|
|
113 |
case 'dhcrelay':
|
|
114 |
killbypid("{$g['varrun_path']}/dhcrelay.pid");
|
|
115 |
break;
|
|
116 |
case 'dnsmasq':
|
|
135 |
break;
|
|
136 |
case 'dhcrelay':
|
|
137 |
killbypid("{$g['varrun_path']}/dhcrelay.pid");
|
|
138 |
break;
|
|
139 |
case 'dnsmasq':
|
|
117 | 140 |
killbypid("{$g['varrun_path']}/dnsmasq.pid"); |
118 | 141 |
break; |
119 | 142 |
case 'miniupnpd': |
... | ... | |
123 | 146 |
break; |
124 | 147 |
case 'ntpd': |
125 | 148 |
killbyname("ntpd"); |
126 |
break;
|
|
127 |
case 'sshd':
|
|
149 |
break;
|
|
150 |
case 'sshd':
|
|
128 | 151 |
killbyname("sshd"); |
129 |
break; |
|
130 |
case 'racoon': |
|
131 |
exec("killall -9 racoon"); |
|
152 |
break; |
|
153 |
case 'racoon': |
|
154 |
exec("killall -9 racoon"); |
|
155 |
break; |
|
156 |
case 'openvpn': |
|
157 |
$vpnmode = $_GET['vpnmode']; |
|
158 |
if (($vpnmode == "server") or ($vpnmode == "client")) { |
|
159 |
$id = $_GET['id']; |
|
160 |
if (is_numeric($id)) { |
|
161 |
$pidfile = $g['varrun_path'] . "/openvpn_{$vpnmode}{$id}.pid"; |
|
162 |
killbypid($pidfile); |
|
163 |
} |
|
164 |
} |
|
165 |
break; |
|
132 | 166 |
default: |
133 |
stop_service($_GET['service']);
|
|
167 |
stop_service($_GET['service']);
|
|
134 | 168 |
break; |
135 | 169 |
} |
136 |
$savemsg = "{$_GET['service']} " . gettext("has been stopped.");
|
|
137 |
sleep(5);
|
|
170 |
$savemsg = "{$_GET['service']} " . gettext("has been stopped.");
|
|
171 |
sleep(5);
|
|
138 | 172 |
} |
139 | 173 |
|
140 | 174 |
/* batch mode, allow other scripts to call this script */ |
... | ... | |
235 | 269 |
} |
236 | 270 |
|
237 | 271 |
if($config['installedpackages']['miniupnpd']['config'][0]['enable']) { |
238 |
$pconfig['name'] = "miniupnpd";
|
|
239 |
$pconfig['description'] = gettext("UPnP Service");
|
|
240 |
$services[] = $pconfig;
|
|
241 |
unset($pconfig);
|
|
272 |
$pconfig['name'] = "miniupnpd";
|
|
273 |
$pconfig['description'] = gettext("UPnP Service");
|
|
274 |
$services[] = $pconfig;
|
|
275 |
unset($pconfig);
|
|
242 | 276 |
} |
243 | 277 |
|
244 | 278 |
if (isset($config['ipsec']['enable'])) { |
245 |
$pconfig['name'] = "racoon";
|
|
246 |
$pconfig['description'] = gettext("IPSEC VPN");
|
|
247 |
$services[] = $pconfig;
|
|
248 |
unset($pconfig);
|
|
279 |
$pconfig['name'] = "racoon";
|
|
280 |
$pconfig['description'] = gettext("IPSEC VPN");
|
|
281 |
$services[] = $pconfig;
|
|
282 |
unset($pconfig);
|
|
249 | 283 |
} |
250 | 284 |
|
285 |
foreach (array('server', 'client') as $mode) { |
|
286 |
if (is_array($config['installedpackages']["openvpn$mode"]['config'])) { |
|
287 |
foreach ($config['installedpackages']["openvpn$mode"]['config'] as $id => $settings) { |
|
288 |
$setting = $config['installedpackages']["openvpn$mode"]['config'][$id]; |
|
289 |
if (!$setting['disable']) { |
|
290 |
$pconfig['name'] = "openvpn"; |
|
291 |
$pconfig['mode'] = $mode; |
|
292 |
$pconfig['id'] = $id; |
|
293 |
$pconfig['description'] = "OpenVPN ".$mode.": ".htmlspecialchars($setting['description']); |
|
294 |
$services[] = $pconfig; |
|
295 |
unset($pconfig); |
|
296 |
} |
|
297 |
} |
|
298 |
} |
|
299 |
} |
|
300 |
|
|
301 |
|
|
251 | 302 |
if($services) { |
252 | 303 |
foreach($services as $service) { |
253 | 304 |
if(!$service['name']) continue; |
254 | 305 |
if(!$service['description']) $service['description'] = get_pkg_descr($service['name']); |
255 | 306 |
echo '<tr><td class="listlr">' . $service['name'] . '</td>'; |
256 | 307 |
echo '<td class="listr">' . $service['description'] . '</td>'; |
257 |
if(is_service_running($service['name'], $ps) or is_process_running($service['name']) ) { |
|
308 |
if ($service['name'] == "openvpn") { |
|
309 |
$running = (is_pid_running($g['varrun_path'] . "/openvpn_{$service['mode']}{$service['id']}.pid") ); |
|
310 |
} else { |
|
311 |
$running = (is_service_running($service['name'], $ps) or is_process_running($service['name']) ); |
|
312 |
} |
|
313 |
if($running) { |
|
258 | 314 |
echo '<td class="listr"><center>'; |
259 | 315 |
echo "<img src=\"/themes/" . $g["theme"] . "/images/icons/icon_pass.gif\"> Running</td>"; |
260 |
$running = true; |
|
261 | 316 |
} else { |
262 | 317 |
echo '<td class="listbg"><center>'; |
263 | 318 |
echo "<img src=\"/themes/" . $g["theme"] . "/images/icons/icon_block.gif\"> <font color=\"white\">Stopped</td>"; |
264 |
$running = false; |
|
265 | 319 |
} |
266 | 320 |
echo '<td valign="middle" class="list" nowrap>'; |
267 | 321 |
if($running) { |
268 |
echo "<a href='status_services.php?mode=restartservice&service={$service['name']}'>"; |
|
322 |
if ($service['name'] == "openvpn") { |
|
323 |
echo "<a href='status_services.php?mode=restartservice&service={$service['name']}&vpnmode={$service['mode']}&id={$service['id']}'>"; |
|
324 |
} else { |
|
325 |
echo "<a href='status_services.php?mode=restartservice&service={$service['name']}'>"; |
|
326 |
} |
|
269 | 327 |
echo "<img title='Restart Service' border='0' src='./themes/".$g['theme']."/images/icons/icon_service_restart.gif'></a> "; |
270 |
echo "<a href='status_services.php?mode=stopservice&service={$service['name']}'>"; |
|
328 |
if ($service['name'] == "openvpn") { |
|
329 |
echo "<a href='status_services.php?mode=stopservice&service={$service['name']}&vpnmode={$service['mode']}&id={$service['id']}'>"; |
|
330 |
} else { |
|
331 |
echo "<a href='status_services.php?mode=stopservice&service={$service['name']}'> "; |
|
332 |
} |
|
271 | 333 |
echo "<img title='Stop Service' border='0' src='./themes/".$g['theme']."/images/icons/icon_service_stop.gif'> "; |
272 | 334 |
echo "</a>"; |
273 | 335 |
} else { |
274 |
echo "<a href='status_services.php?mode=startservice&service={$service['name']}'> "; |
|
336 |
if ($service['name'] == "openvpn") { |
|
337 |
echo "<a href='status_services.php?mode=startservice&service={$service['name']}&vpnmode={$service['mode']}&id={$service['id']}'>"; |
|
338 |
} else { |
|
339 |
echo "<a href='status_services.php?mode=startservice&service={$service['name']}'> "; |
|
340 |
} |
|
341 |
|
|
275 | 342 |
echo "<img title='Start Service' border='0' src='./themes/".$g['theme']."/images/icons/icon_service_start.gif'></a> "; |
276 | 343 |
} |
277 | 344 |
echo '</td>'; |
... | ... | |
280 | 347 |
} else { |
281 | 348 |
echo "<tr><td colspan=\"3\"><center>No services found.</td></tr>"; |
282 | 349 |
} |
350 |
|
|
283 | 351 |
?> |
284 | 352 |
</table> |
285 | 353 |
|
Also available in: Unified diff
Make OpenVPN usable in status_service.php