diff options
Diffstat (limited to 'src/etc/inc/zeromq.inc')
-rw-r--r-- | src/etc/inc/zeromq.inc | 340 |
1 files changed, 0 insertions, 340 deletions
diff --git a/src/etc/inc/zeromq.inc b/src/etc/inc/zeromq.inc deleted file mode 100644 index 6b513d3..0000000 --- a/src/etc/inc/zeromq.inc +++ /dev/null @@ -1,340 +0,0 @@ -<?php -/* - zeromq.inc - part of the pfSense project (https://www.pfsense.org) - Copyright 2010 Scott Ullrich <sullrich@gmail.com> - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. -*/ - -define('ZEROMQ_AUTH_FAIL', 'authfail'); -define('ZEROMQ_TRUE', 'true'); -define('ZEROMQ_FASLE', 'false'); - -$do_not_include_config_gui_inc = true; -require_once("auth.inc"); - -//$debug = true; - -/* zeromq_send: Send a message to a member node */ -function zeromq_send($protocol = "tcp", $ipaddress = "127.0.0.1", $port = "8888", - $method, $params, $username, $password) { - - global $debug; - - /* Set calling function and auth information */ - $xmlparams = array( - $username, - $password, - $method, - $params - ); - - /* Create new queue object */ - $queue = new ZMQSocket(new ZMQContext(), ZMQ::SOCKET_REQ, "MySock1"); - $queue->connect("{$protocol}://{$ipaddress}:{$port}"); - - /* Assign socket 1 to the queue, send and receive */ - $result = $queue->send(serialize($xmlparams))->recv(); - - /* xmlrpc_params_to_php() the result and return */ - $unserializedresult = unserialize($result); - - /* Return the result to the caller */ - return $unserializedresult; -} - -function zeromq_server($protocol = "tcp", $ipaddress = "127.0.0.1", $port = "8888") { - global $debug; - if (!$ipaddress || !$port) { - if ($debug) { - echo "ERROR: You must pass, proto, ipaddress and port\n"; - } - return; - } - if ($debug) { - echo "Creating ZMQSocket()\n"; - } - $server = new ZMQSocket(new ZMQContext(), ZMQ::SOCKET_REP); - if ($debug) { - echo "Binding to {$protocol}://{$ipaddress}:{$port}\n"; - } - $server->bind("{$protocol}://{$ipaddress}:{$port}"); - if ($debug) { - echo "Entering while() loop\n"; - } - while ($msg = $server->recv()) { - // Convert the XML to a PHP array - $message = unserialize($msg); - if ($debug) { - echo "Message received:\n"; - print_r($message); - } - switch ($message[2]) { - case "pfsense.exec_shell": - $function_to_call = "exec_shell_zeromq"; - break; - case "pfsense.exec_php": - $function_to_call = "exec_php_zeromq"; - break; - case "pfsense.filter_configure": - $function_to_call = "filter_configure_zeromq"; - break; - case "pfsense.interfaces_carp_configure": - $function_to_call = "interfaces_carp_configure_zeromq"; - break; - case "pfsense.backup_config_section": - $function_to_call = "backup_config_section_zeromq"; - break; - case "pfsense.restore_config_section": - $function_to_call = "restore_config_section_zeromq"; - break; - case "pfsense.merge_config_section": - $function_to_call = "merge_config_section_zeromq"; - break; - case "pfsense.merge_installedpackages_section_zeromq": - $function_to_call = "merge_installedpackages_section_zeromq"; - break; - case "pfsense.check_firmware_version": - $function_to_call = "check_firmware_version_zeromq"; - break; - case "pfsense.reboot": - $function_to_call = "reboot_zeromq"; - break; - case "pfsense.get_notices": - $function_to_call = "get_notices_zeromq"; - break; - } - if (!$function_to_call) { - if ($debug) { - echo "ERROR: Could not find a function to call"; - } - return; - } else { - if ($debug) { - echo "Invoking function {$message[2]}()\n;"; - } - } - /* Call function that is being invoked */ - $result = $function_to_call($message); - /* echo back the result */ - $server->send($result); - } -} - -function zeromq_auth($params) { - global $config, $g, $debug; - - $username = $params[0]; - $passwd = $params[1]; - - $user = getUserEntry($username); - if (!$user) { - if ($debug) { - echo "Could not locate user $username with getUserEntry()\n"; - } - return false; - } - - if (is_account_disabled($username) || is_account_expired($username)) { - if ($debug) { - echo "Returning account expired/disabled\n"; - } - return false; - } - - if ($user['password']) { - $passwd = crypt($passwd, $user['password']); - if ($passwd == $user['password']) { - return true; - } - } - - if ($user['md5-hash']) { - $passwd = md5($passwd); - if ($passwd == $user['md5-hash']) { - return true; - } - } - - if ($debug) { - echo "zeromq_auth() fall through == false\n"; - } - - return false; -} - -function exec_php_zeromq($raw_params) { - global $config, $g, $debug; - $params = $raw_params; - if (zeromq_auth($raw_params) == false) { - if ($debug) { - echo "Auth failed in exec_shell_zeromq()\n"; - } - return ZEROMQ_AUTH_FAIL; - } - $exec_php = $params[3]; - if ($debug) { - echo "Running exec_php_zeromq(): {$exec_php}\n"; - } - eval($exec_php); - if ($toreturn) { - return serialize($toreturn); - } else { - return ZEROMQ_FASLE; - } -} - -function exec_shell_zeromq($raw_params) { - global $config, $g, $debug; - $params = $raw_params; - if (zeromq_auth($raw_params) == false) { - if ($debug) { - echo "Auth failed in exec_shell_zeromq()\n"; - } - return ZEROMQ_AUTH_FAIL; - } - $shell_cmd = $params[3]; - if ($debug) { - echo "Running exec_shell_zeromq(): {$shell_cmd}\n"; - } - mwexec($shell_cmd); - return ZEROMQ_FASLE; -} - -function backup_config_section_zeromq($raw_params) { - global $config, $g, $debug; - $params = $raw_params; - if (zeromq_auth($raw_params) == false) { - return ZEROMQ_AUTH_FAIL; - } - $val = array_intersect_key($config, array_flip($params[3])); - return serialize($val); -} - -function restore_config_section_zeromq($raw_params) { - global $config, $g, $debug; - $params = $raw_params; - if (zeromq_auth($raw_params) == false) { - return ZEROMQ_AUTH_FAIL; - } - $config = array_merge($config, $params[3]); - $mergedkeys = implode(",", array_keys($params[3])); - write_config(sprintf(gettext("Merged in config (%s sections) from ZeroMQ client."), $mergedkeys)); - return ZEROMQ_FASLE; -} - -function merge_installedpackages_section_zeromq($raw_params) { - global $config, $g, $debug; - $params = $raw_params; - if (zeromq_auth($raw_params) == false) { - return ZEROMQ_AUTH_FAIL; - } - $config['installedpackages'] = array_merge($config['installedpackages'], $params[0]); - $mergedkeys = implode(",", array_keys($params[3])); - write_config(sprintf(gettext("Merged in config (%s sections) from ZeroMQ client."), $mergedkeys)); - return ZEROMQ_FASLE; -} - -function merge_config_section_zeromq($raw_params) { - global $config, $g, $debug; - $params = $raw_params; - if (zeromq_auth($raw_params) == false) { - return ZEROMQ_AUTH_FAIL; - } - $config = array_merge_recursive_unique($config, $params[0]); - $mergedkeys = implode(",", array_keys($params[3])); - write_config("Merged in config ({$mergedkeys} sections) from ZeroMQ client."); - return ZEROMQ_FASLE; -} - -function filter_configure_zeromq($raw_params) { - global $config, $g, $debug; - $params = $raw_params; - if (zeromq_auth($raw_params) == false) { - return ZEROMQ_AUTH_FAIL; - } - filter_configure(); - system_routing_configure(); - setup_gateways_monitor(); - relayd_configure(); - require_once("openvpn.inc"); - openvpn_resync_all(); - services_dhcpd_configure(); - if (isset($config['dnsmasq']['enable'])) { - services_dnsmasq_configure(); - } elseif (isset($config['unbound']['enable'])) { - services_unbound_configure(); - } - local_sync_accounts(); - return ZEROMQ_FASLE; -} - -function interfaces_carp_configure_zeromq($raw_params) { - global $config, $g, $debug; - $params = $raw_params; - if (zeromq_auth($raw_params) == false) { - return ZEROMQ_AUTH_FAIL; - } - interfaces_sync_setup(); - interfaces_vips_configure(); - return ZEROMQ_FASLE; -} - -function check_firmware_version_zeromq($raw_params) { - global $config, $g, $debug; - $params = $raw_params; - if (zeromq_auth($raw_params) == false) { - return ZEROMQ_AUTH_FAIL; - } - return serialize(check_firmware_version(false)); -} - -function reboot_zeromq($raw_params) { - global $config, $g, $debug; - $params = $raw_params; - if (zeromq_auth($raw_params) == false) { - return ZEROMQ_AUTH_FAIL; - } - mwexec_bg("/etc/rc.reboot"); - return ZEROMQ_FASLE; -} - -function get_notices_zeromq($raw_params) { - global $config, $g, $debug; - $params = $raw_params; - if (zeromq_auth($raw_params) == false) { - return ZEROMQ_AUTH_FAIL; - } - if (!function_exists("get_notices")) { - require("notices.inc"); - } - if (!$params) { - $toreturn = get_notices(); - } else { - $toreturn = get_notices($params); - } - return serialize($toreturn); -} - -?> |