diff options
author | jim-p <jimp@pfsense.org> | 2013-03-22 14:05:26 -0400 |
---|---|---|
committer | jim-p <jimp@pfsense.org> | 2013-03-22 14:05:26 -0400 |
commit | ab1cf45537b0a96c39ddaaa57cd9a6ac742d39af (patch) | |
tree | a357b01b17c2bfe023fe064bdbbf419551a68456 /etc | |
parent | 8b88ac79acd828fc37bc61c0fdd31c31c36c32ec (diff) | |
download | pfsense-ab1cf45537b0a96c39ddaaa57cd9a6ac742d39af.zip pfsense-ab1cf45537b0a96c39ddaaa57cd9a6ac742d39af.tar.gz |
Add PHP shell playback script to control services from the command line (works like Status > Services)
Diffstat (limited to 'etc')
-rw-r--r-- | etc/inc/service-utils.inc | 1 | ||||
-rw-r--r-- | etc/phpshellsessions/svc | 83 |
2 files changed, 84 insertions, 0 deletions
diff --git a/etc/inc/service-utils.inc b/etc/inc/service-utils.inc index 333c120..6ee15a3 100644 --- a/etc/inc/service-utils.inc +++ b/etc/inc/service-utils.inc @@ -37,6 +37,7 @@ pfSense_BUILDER_BINARIES: /bin/pgrep /bin/sh /usr/bin/killall pfSense_MODULE: utils */ +require_once("globals.inc"); require_once("captiveportal.inc"); require_once("openvpn.inc"); require_once("ipsec.inc"); diff --git a/etc/phpshellsessions/svc b/etc/phpshellsessions/svc new file mode 100644 index 0000000..5770c02 --- /dev/null +++ b/etc/phpshellsessions/svc @@ -0,0 +1,83 @@ +require_once("config.inc"); +require_once("util.inc"); +require_once("service-utils.inc"); + +function usage() { + echo "Usage: playback svc <action> <service name> [service-specific options]\n\n"; + echo "Examples:\n"; + echo "playback svc stop dhcpd\n"; + echo "playback svc restart openvpn client 2\n"; + echo "playback svc stop captiveportal zone1\n"; + echo "\n"; +} + +global $g, $config, $argv, $command_split; + +if(is_array($command_split)) + $args = array_slice($command_split, 2); +else + $args = array_slice($argv, 3); + +if (empty($args[0])) { + usage(); +} + +$extras = array(); + +// start, stop, restart +$action = $args[0]; + +// dhcpd, openvpn, etc. +$svc_name = $args[1]; + +// Handle servive-specific options. +switch ($svc_name) { + case "openvpn": + if (in_array($args[2], array("server", "client"))) { + $extras['vpnmode'] = $args[2]; + } else { + echo "Invalid OpenVPN mode (server, client)\n"; + return; + } + if (is_numeric($args[3])) { + $extras['id'] = $args[3]; + } else { + echo "Invalid OpenVPN ID, must be numeric\n"; + return; + } + $vpnsvc = find_service_by_openvpn_vpnid($extras['id']); + if (empty($vpnsvc)) { + echo "No OpenVPN client or server found with that ID.\n"; + return; + } + break; + case "captiveportal": + if (is_validaliasname($args[2])) { + $extras['zone'] = $args[2]; + } else { + echo "Invalid Captive Portal Zone.\n"; + return; + } + $cpzone = find_service_by_cp_zone($extras['zone']); + if (empty($cpzone)) { + echo "No Captive Portal Zone found with that name.\n"; + return; + } + break; +} + +echo "Attempting to issue {$action} to {$svc_name} service...\n"; + +switch ($action) { + case "restart": + $savemsg = service_control_restart($svc_name, $extras); + break; + case "start": + $savemsg = service_control_start($svc_name, $extras); + break; + case "stop": + $savemsg = service_control_stop($svc_name, $extras); + break; +} + +echo "\n{$savemsg}\n"; |