diff options
author | Stephen Beaver <sbeaver@netgate.com> | 2015-12-17 07:39:55 -0500 |
---|---|---|
committer | Stephen Beaver <sbeaver@netgate.com> | 2015-12-17 07:39:55 -0500 |
commit | a43edc8cc00352e60b6ab7b61bc5a3d67c237543 (patch) | |
tree | 8a0ef3415949af63f20d4820fa9a5abe5335801d /src/etc | |
parent | 860c4a00d7cba51e576bea6e4534ca31c50b0212 (diff) | |
parent | 61fce4a6f6f61f25356708df4175d28892a04b4c (diff) | |
download | pfsense-a43edc8cc00352e60b6ab7b61bc5a3d67c237543.zip pfsense-a43edc8cc00352e60b6ab7b61bc5a3d67c237543.tar.gz |
Merge pull request #2263 from phil-davis/r016
Diffstat (limited to 'src/etc')
-rw-r--r-- | src/etc/inc/openvpn.inc | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/etc/inc/openvpn.inc b/src/etc/inc/openvpn.inc index da666e3..9dc83c5 100644 --- a/src/etc/inc/openvpn.inc +++ b/src/etc/inc/openvpn.inc @@ -1611,6 +1611,42 @@ function openvpn_get_client_status($client, $socket) { return $client; } +function openvpn_kill_client($port, $remipp) { + global $g; + + //$tcpsrv = "tcp://127.0.0.1:{$port}"; + $tcpsrv = "unix://{$g['varetc_path']}/openvpn/{$port}.sock"; + $errval = null; + $errstr = null; + + /* open a tcp connection to the management port of each server */ + $fp = @stream_socket_client($tcpsrv, $errval, $errstr, 1); + $killed = -1; + if ($fp) { + stream_set_timeout($fp, 1); + fputs($fp, "kill {$remipp}\n"); + while (!feof($fp)) { + $line = fgets($fp, 1024); + + $info = stream_get_meta_data($fp); + if ($info['timed_out']) { + break; + } + + /* parse header list line */ + if (strpos($line, "INFO:") !== false) { + continue; + } + if (strpos($line, "SUCCESS") !== false) { + $killed = 0; + } + break; + } + fclose($fp); + } + return $killed; +} + function openvpn_refresh_crls() { global $g, $config; |