mirror of
https://github.com/pfsense/pfsense.git
synced 2025-10-26 11:38:35 +00:00
Make OpenVPN usable in status_service.php
This commit is contained in:
parent
9feb1986ef
commit
cd72ded386
@ -94,47 +94,47 @@ function start_service($name) {
|
||||
}
|
||||
|
||||
function stop_service($name) {
|
||||
global $config;
|
||||
if($config['installedpackages']['service']) {
|
||||
foreach($config['installedpackages']['service'] as $service) {
|
||||
if(strtolower($service['name']) == strtolower($name)) {
|
||||
if($service['rcfile']) {
|
||||
if($service['prefix']) {
|
||||
$prefix =& $service['prefix'];
|
||||
} else {
|
||||
$prefix = "/usr/local/etc/rc.d/";
|
||||
}
|
||||
mwexec_bg($prefix . $service['rcfile'] . " stop");
|
||||
}
|
||||
if($service['stopcmd']) {
|
||||
eval($service['stopcmd']);
|
||||
}
|
||||
if(!($service['rcfile'] or $service['stopcmd'])) {
|
||||
mwexec_bg("/usr/bin/killall {$service['executable']}");
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* finally if we get here lets simply kill the service name */
|
||||
mwexec_bg("/usr/bin/killall {$name}");
|
||||
global $config;
|
||||
if($config['installedpackages']['service']) {
|
||||
foreach($config['installedpackages']['service'] as $service) {
|
||||
if(strtolower($service['name']) == strtolower($name)) {
|
||||
if($service['rcfile']) {
|
||||
if($service['prefix']) {
|
||||
$prefix =& $service['prefix'];
|
||||
} else {
|
||||
$prefix = "/usr/local/etc/rc.d/";
|
||||
}
|
||||
mwexec_bg($prefix . $service['rcfile'] . " stop");
|
||||
}
|
||||
if($service['stopcmd']) {
|
||||
eval($service['stopcmd']);
|
||||
}
|
||||
if(!($service['rcfile'] or $service['stopcmd'])) {
|
||||
mwexec_bg("/usr/bin/killall {$service['executable']}");
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* finally if we get here lets simply kill the service name */
|
||||
mwexec_bg("/usr/bin/killall {$name}");
|
||||
}
|
||||
|
||||
function restart_service($name) {
|
||||
global $config;
|
||||
global $config;
|
||||
stop_service($name);
|
||||
start_service($name);
|
||||
if($config['installedpackages']['service']) {
|
||||
foreach($config['installedpackages']['service'] as $service) {
|
||||
if(strtolower($service['name']) == strtolower($name)) {
|
||||
if($service['restartcmd']) {
|
||||
eval($service['restartcmd']);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if($config['installedpackages']['service']) {
|
||||
foreach($config['installedpackages']['service'] as $service) {
|
||||
if(strtolower($service['name']) == strtolower($name)) {
|
||||
if($service['restartcmd']) {
|
||||
eval($service['restartcmd']);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function is_process_running($process) {
|
||||
@ -142,6 +142,12 @@ function is_process_running($process) {
|
||||
return $running;
|
||||
}
|
||||
|
||||
function is_pid_running($pidfile) {
|
||||
$pid = trim(file_get_contents($pidfile));
|
||||
$running = (trim(shell_exec("ps axwu | grep '\b{$pid}\b' | grep -v 'grep'")) != '');
|
||||
return $running;
|
||||
}
|
||||
|
||||
function is_dhcp_running($interface) {
|
||||
$interface = convert_friendly_interface_to_real_interface_name($interface);
|
||||
$status = find_dhclient_process($interface);
|
||||
@ -165,8 +171,8 @@ function is_service_running($service, $ps = "") {
|
||||
}
|
||||
*/
|
||||
if(is_array($config['installedpackages']['service'])) {
|
||||
foreach($config['installedpackages']['service'] as $aservice) {
|
||||
if(strtolower($service) == strtolower($aservice['name'])) {
|
||||
foreach($config['installedpackages']['service'] as $aservice) {
|
||||
if(strtolower($service) == strtolower($aservice['name'])) {
|
||||
if(!$aservice['executable']) return false;
|
||||
/*
|
||||
if(count(preg_grep("/{$aservice['executable']}/i", $ps))) {
|
||||
@ -175,10 +181,13 @@ function is_service_running($service, $ps = "") {
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
return is_process_running($aservice['executable']) ? true : false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($service == "openvpn") {
|
||||
} else {
|
||||
return is_process_running($aservice['executable']) ? true : false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@ -57,11 +57,24 @@ if($_GET['mode'] == "restartservice" and $_GET['service']) {
|
||||
if(file_exists('/usr/local/etc/rc.d/miniupnpd.sh'))
|
||||
mwexec('/usr/local/etc/rc.d/miniupnpd.sh restart');
|
||||
break;
|
||||
case 'racoon':
|
||||
exec("killall -9 racoon");
|
||||
sleep(1);
|
||||
vpn_ipsec_force_reload();
|
||||
break;
|
||||
case 'racoon':
|
||||
exec("killall -9 racoon");
|
||||
sleep(1);
|
||||
vpn_ipsec_force_reload();
|
||||
break;
|
||||
case 'openvpn':
|
||||
$vpnmode = $_GET['vpnmode'];
|
||||
if (($vpnmode == "server") or ($vpnmode == "client")) {
|
||||
$id = $_GET['id'];
|
||||
if (is_numeric($id)) {
|
||||
$pidfile = $g['varrun_path'] . "/openvpn_{$vpnmode}{$id}.pid";
|
||||
killbypid($pidfile);
|
||||
sleep(1);
|
||||
$configfile = $g['varetc_path'] . "/openvpn_{$vpnmode}{$id}.conf";
|
||||
mwexec_bg("openvpn --config $configfile");
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
restart_service($_GET['service']);
|
||||
break;
|
||||
@ -85,16 +98,26 @@ if($_GET['mode'] == "startservice" and $_GET['service']) {
|
||||
if(file_exists('/usr/local/etc/rc.d/miniupnpd.sh'))
|
||||
mwexec('/usr/local/etc/rc.d/miniupnpd.sh start');
|
||||
break;
|
||||
case 'racoon':
|
||||
exec("killall -9 racoon");
|
||||
sleep(1);
|
||||
vpn_ipsec_force_reload();
|
||||
break;
|
||||
case 'racoon':
|
||||
exec("killall -9 racoon");
|
||||
sleep(1);
|
||||
vpn_ipsec_force_reload();
|
||||
break;
|
||||
case 'openvpn':
|
||||
$vpnmode = $_GET['vpnmode'];
|
||||
if (($vpnmode == "server") or ($vpnmode == "client")) {
|
||||
$id = $_GET['id'];
|
||||
if (is_numeric($id)) {
|
||||
$configfile = $g['varetc_path'] . "/openvpn_{$vpnmode}{$id}.conf";
|
||||
mwexec_bg("openvpn --config $configfile");
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
start_service($_GET['service']);
|
||||
break;
|
||||
}
|
||||
$savemsg = "{$_GET['service']} has been started.";
|
||||
$savemsg = "{$_GET['service']} has been started.";
|
||||
sleep(5);
|
||||
}
|
||||
|
||||
@ -107,13 +130,13 @@ if($_GET['mode'] == "stopservice" && $_GET['service']) {
|
||||
case 'choparp':
|
||||
killbyname("choparp");
|
||||
break;
|
||||
case 'dhcpd':
|
||||
case 'dhcpd':
|
||||
killbyname("dhcpd");
|
||||
break;
|
||||
case 'dhcrelay':
|
||||
killbypid("{$g['varrun_path']}/dhcrelay.pid");
|
||||
break;
|
||||
case 'dnsmasq':
|
||||
break;
|
||||
case 'dhcrelay':
|
||||
killbypid("{$g['varrun_path']}/dhcrelay.pid");
|
||||
break;
|
||||
case 'dnsmasq':
|
||||
killbypid("{$g['varrun_path']}/dnsmasq.pid");
|
||||
break;
|
||||
case 'miniupnpd':
|
||||
@ -123,18 +146,29 @@ if($_GET['mode'] == "stopservice" && $_GET['service']) {
|
||||
break;
|
||||
case 'ntpd':
|
||||
killbyname("ntpd");
|
||||
break;
|
||||
case 'sshd':
|
||||
break;
|
||||
case 'sshd':
|
||||
killbyname("sshd");
|
||||
break;
|
||||
case 'racoon':
|
||||
exec("killall -9 racoon");
|
||||
break;
|
||||
case 'racoon':
|
||||
exec("killall -9 racoon");
|
||||
break;
|
||||
case 'openvpn':
|
||||
$vpnmode = $_GET['vpnmode'];
|
||||
if (($vpnmode == "server") or ($vpnmode == "client")) {
|
||||
$id = $_GET['id'];
|
||||
if (is_numeric($id)) {
|
||||
$pidfile = $g['varrun_path'] . "/openvpn_{$vpnmode}{$id}.pid";
|
||||
killbypid($pidfile);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
stop_service($_GET['service']);
|
||||
stop_service($_GET['service']);
|
||||
break;
|
||||
}
|
||||
$savemsg = "{$_GET['service']} " . gettext("has been stopped.");
|
||||
sleep(5);
|
||||
$savemsg = "{$_GET['service']} " . gettext("has been stopped.");
|
||||
sleep(5);
|
||||
}
|
||||
|
||||
/* batch mode, allow other scripts to call this script */
|
||||
@ -235,43 +269,76 @@ if(isset($config['proxyarp']['proxyarpnet'])) {
|
||||
}
|
||||
|
||||
if($config['installedpackages']['miniupnpd']['config'][0]['enable']) {
|
||||
$pconfig['name'] = "miniupnpd";
|
||||
$pconfig['description'] = gettext("UPnP Service");
|
||||
$services[] = $pconfig;
|
||||
unset($pconfig);
|
||||
$pconfig['name'] = "miniupnpd";
|
||||
$pconfig['description'] = gettext("UPnP Service");
|
||||
$services[] = $pconfig;
|
||||
unset($pconfig);
|
||||
}
|
||||
|
||||
if (isset($config['ipsec']['enable'])) {
|
||||
$pconfig['name'] = "racoon";
|
||||
$pconfig['description'] = gettext("IPSEC VPN");
|
||||
$services[] = $pconfig;
|
||||
unset($pconfig);
|
||||
$pconfig['name'] = "racoon";
|
||||
$pconfig['description'] = gettext("IPSEC VPN");
|
||||
$services[] = $pconfig;
|
||||
unset($pconfig);
|
||||
}
|
||||
|
||||
foreach (array('server', 'client') as $mode) {
|
||||
if (is_array($config['installedpackages']["openvpn$mode"]['config'])) {
|
||||
foreach ($config['installedpackages']["openvpn$mode"]['config'] as $id => $settings) {
|
||||
$setting = $config['installedpackages']["openvpn$mode"]['config'][$id];
|
||||
if (!$setting['disable']) {
|
||||
$pconfig['name'] = "openvpn";
|
||||
$pconfig['mode'] = $mode;
|
||||
$pconfig['id'] = $id;
|
||||
$pconfig['description'] = "OpenVPN ".$mode.": ".htmlspecialchars($setting['description']);
|
||||
$services[] = $pconfig;
|
||||
unset($pconfig);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($services) {
|
||||
foreach($services as $service) {
|
||||
if(!$service['name']) continue;
|
||||
if(!$service['description']) $service['description'] = get_pkg_descr($service['name']);
|
||||
echo '<tr><td class="listlr">' . $service['name'] . '</td>';
|
||||
echo '<td class="listr">' . $service['description'] . '</td>';
|
||||
if(is_service_running($service['name'], $ps) or is_process_running($service['name']) ) {
|
||||
if ($service['name'] == "openvpn") {
|
||||
$running = (is_pid_running($g['varrun_path'] . "/openvpn_{$service['mode']}{$service['id']}.pid") );
|
||||
} else {
|
||||
$running = (is_service_running($service['name'], $ps) or is_process_running($service['name']) );
|
||||
}
|
||||
if($running) {
|
||||
echo '<td class="listr"><center>';
|
||||
echo "<img src=\"/themes/" . $g["theme"] . "/images/icons/icon_pass.gif\"> Running</td>";
|
||||
$running = true;
|
||||
} else {
|
||||
echo '<td class="listbg"><center>';
|
||||
echo "<img src=\"/themes/" . $g["theme"] . "/images/icons/icon_block.gif\"> <font color=\"white\">Stopped</td>";
|
||||
$running = false;
|
||||
}
|
||||
echo '<td valign="middle" class="list" nowrap>';
|
||||
if($running) {
|
||||
echo "<a href='status_services.php?mode=restartservice&service={$service['name']}'>";
|
||||
if ($service['name'] == "openvpn") {
|
||||
echo "<a href='status_services.php?mode=restartservice&service={$service['name']}&vpnmode={$service['mode']}&id={$service['id']}'>";
|
||||
} else {
|
||||
echo "<a href='status_services.php?mode=restartservice&service={$service['name']}'>";
|
||||
}
|
||||
echo "<img title='Restart Service' border='0' src='./themes/".$g['theme']."/images/icons/icon_service_restart.gif'></a> ";
|
||||
echo "<a href='status_services.php?mode=stopservice&service={$service['name']}'>";
|
||||
if ($service['name'] == "openvpn") {
|
||||
echo "<a href='status_services.php?mode=stopservice&service={$service['name']}&vpnmode={$service['mode']}&id={$service['id']}'>";
|
||||
} else {
|
||||
echo "<a href='status_services.php?mode=stopservice&service={$service['name']}'> ";
|
||||
}
|
||||
echo "<img title='Stop Service' border='0' src='./themes/".$g['theme']."/images/icons/icon_service_stop.gif'> ";
|
||||
echo "</a>";
|
||||
} else {
|
||||
echo "<a href='status_services.php?mode=startservice&service={$service['name']}'> ";
|
||||
if ($service['name'] == "openvpn") {
|
||||
echo "<a href='status_services.php?mode=startservice&service={$service['name']}&vpnmode={$service['mode']}&id={$service['id']}'>";
|
||||
} else {
|
||||
echo "<a href='status_services.php?mode=startservice&service={$service['name']}'> ";
|
||||
}
|
||||
|
||||
echo "<img title='Start Service' border='0' src='./themes/".$g['theme']."/images/icons/icon_service_start.gif'></a> ";
|
||||
}
|
||||
echo '</td>';
|
||||
@ -280,6 +347,7 @@ if($services) {
|
||||
} else {
|
||||
echo "<tr><td colspan=\"3\"><center>No services found.</td></tr>";
|
||||
}
|
||||
|
||||
?>
|
||||
</table>
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user