summaryrefslogtreecommitdiffstats
path: root/usr/local/www/xmlrpc.php
diff options
context:
space:
mode:
authorColin Smith <colin@pfsense.org>2005-03-24 22:36:48 +0000
committerColin Smith <colin@pfsense.org>2005-03-24 22:36:48 +0000
commit50d4901819507fb08837a9d6e45fa7cb5961bfb8 (patch)
tree1aa2307b1d895047ec605038743a4fdeb6826d13 /usr/local/www/xmlrpc.php
parente55f5da69d61ad99a413f3c0b548a2026642fdff (diff)
downloadpfsense-50d4901819507fb08837a9d6e45fa7cb5961bfb8.zip
pfsense-50d4901819507fb08837a9d6e45fa7cb5961bfb8.tar.gz
Stub in XMLRPC support (basic md5 authentication, signatures, and wrapper for backup_config_section and restore_config_section). Methods currently exposed are pfsense.backup_config_section and pfsense.restore_config_section.
Diffstat (limited to 'usr/local/www/xmlrpc.php')
-rwxr-xr-xusr/local/www/xmlrpc.php82
1 files changed, 82 insertions, 0 deletions
diff --git a/usr/local/www/xmlrpc.php b/usr/local/www/xmlrpc.php
new file mode 100755
index 0000000..5e37b42
--- /dev/null
+++ b/usr/local/www/xmlrpc.php
@@ -0,0 +1,82 @@
+#!/usr/local/bin/php
+<?php
+/*
+ xmlrpc.php
+ Copyright (C) 2005 Colin Smith
+ 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.
+*/
+
+require_once("xmlrpc_server.inc");
+require_once("config.inc");
+require_once("functions.inc");
+
+/*
+ * backup_config_section_xmlrpc: XMLRPC wrapper for backup_config_section.
+ * This method must be called with two parameters: a string containing the md5 of
+ * the local system's password followed by a string containing the section to be backed up.
+ */
+$backup_config_section_sig = array(array($xmlrpcString, $xmlrpcString, $xmlrpcString));
+function backup_config_section_xmlrpc($params) {
+ global $config;
+ if($params->getNumParams() != 2) return; // Make sure we have 2 params.
+ $param1 = $params->getParam(0);
+ $md5 = $param1->scalarval();
+ if($md5 != md5($config['system']['password'])) return; // Basic authentication.
+ $param2 = $params->getParam(1);
+ $section = $param2->scalarval();
+ $val = new XML_RPC_Value(backup_config_section($section), 'string');
+ return new XML_RPC_Response($val);
+}
+
+/*
+ * restore_config_section_xmlrpc: XMLRPC wrapper for restore_config_section.
+ * This method must be called with three parameters: a string containing the md5 of
+ * the local system's password, a string containing the section to be restored,
+ * and a string containing the returned value of backup_config_section() for that
+ * section. This function returns
+ */
+$restore_config_section_sig = array(array($xmlrpcBoolean, $xmlrpcString, $xmlrpcString, $xmlrpcString));
+function restore_config_section_xmlrpc($params) {
+ global $config;
+ if($params->getNumParams() != 3) return; // Make sure we have 3 params.
+ $param1 = $params->getParam(0);
+ $md5 = $param1->scalarval();
+ if($md5 != md5($config['system']['password'])) return; // Basic authentication.
+ $param2 = $params->getParam(1);
+ $section - $param2->scalarval();
+ $param3 = $params->getParam(2);
+ $new_contents = $param3->scalarval();
+ restore_config_section($section, $new_contents);
+ return new XML_RPC_Response(new XML_RPC_Value(true, 'boolean'));
+}
+
+$server = new XML_RPC_Server(
+ array(
+ 'pfsense.backup_config_section' => array('function' => 'backup_config_section_xmlrpc',
+ 'signature' => $backup_config_section_sig),
+ 'pfsense.restore_config_section' => array('function' => 'restore_config_section_xmlrpc',
+ 'signature' => $restore_config_section_sig)
+ )
+);
+?>
OpenPOWER on IntegriCloud