summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www/services_captiveportal_vouchers.php
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2016-08-16 19:12:50 -0300
committerRenato Botelho <renato@netgate.com>2016-08-16 19:12:50 -0300
commit200728c95f11ba4de107716345a67efab662dadb (patch)
tree0dfc2e150a7967098cce9b39c68afb8cee9fe6b6 /src/usr/local/www/services_captiveportal_vouchers.php
parent80f38d81f00c2e4c1a4c0f787eb62942184143d3 (diff)
downloadpfsense-200728c95f11ba4de107716345a67efab662dadb.zip
pfsense-200728c95f11ba4de107716345a67efab662dadb.tar.gz
Ticket #3734: Convert remaining xmlrpc_client.inc consumers to use XML_RPC2
Diffstat (limited to 'src/usr/local/www/services_captiveportal_vouchers.php')
-rw-r--r--src/usr/local/www/services_captiveportal_vouchers.php98
1 files changed, 52 insertions, 46 deletions
diff --git a/src/usr/local/www/services_captiveportal_vouchers.php b/src/usr/local/www/services_captiveportal_vouchers.php
index d5bad02..5180bb8 100644
--- a/src/usr/local/www/services_captiveportal_vouchers.php
+++ b/src/usr/local/www/services_captiveportal_vouchers.php
@@ -291,7 +291,7 @@ if ($_POST) {
if ($newvoucher['vouchersyncpass'] && $newvoucher['vouchersyncusername'] &&
$newvoucher['vouchersyncport'] && $newvoucher['vouchersyncdbip']) {
// Synchronize the voucher DB from the master node
- require_once("xmlrpc.inc");
+ require_once("XML/RPC2/Client.php");
$protocol = "http";
if (is_array($config['system']) && is_array($config['system']['webgui']) && !empty($config['system']['webgui']['protocol']) &&
@@ -303,6 +303,7 @@ if ($_POST) {
} else {
$url = "http://{$newvoucher['vouchersyncdbip']}";
}
+ $url .= ":{$newvoucher['vouchersyncport']}/xmlrpc.php";
$execcmd = <<<EOF
\$toreturn = array();
@@ -311,71 +312,76 @@ if ($_POST) {
EOF;
- /* assemble xmlrpc payload */
- $params = array(
- XML_RPC_encode($newvoucher['vouchersyncpass']),
- XML_RPC_encode($execcmd)
+ $options = array(
+ 'prefix' => 'pfsense.',
+ 'sslverify' => false,
+ 'connectionTimeout' => 240
);
- $port = $newvoucher['vouchersyncport'];
- log_error(sprintf(gettext("voucher XMLRPC sync data %s:%d"), $url, $port));
- $msg = new XML_RPC_Message('pfsense.exec_php', $params);
- $cli = new XML_RPC_Client('/xmlrpc.php', $url, $port);
- $cli->setCredentials($newvoucher['vouchersyncusername'], $newvoucher['vouchersyncpass']);
- $resp = $cli->send($msg, "250");
- if (!is_object($resp)) {
- $error = sprintf(gettext("A communications error occurred while attempting CaptivePortalVoucherSync XMLRPC sync with %s:%d (pfsense.exec_php)."), $url, $port);
- log_error($error);
- file_notice("CaptivePortalVoucherSync", $error, gettext("Communications error occurred"), "");
- $input_errors[] = $error;
- } elseif ($resp->faultCode()) {
- $cli->setDebug(1);
- $resp = $cli->send($msg, "250");
- $error = sprintf(gettext("An error code was received while attempting CaptivePortalVoucherSync XMLRPC sync with %s:%d - Code %d: %s"), $url, $port, $resp->faultCode(), $resp->faultString());
+
+ log_error(sprintf(gettext("voucher XMLRPC sync data %s"), $url));
+ $cli = XML_RPC2_Client::create($url, $options);
+ if (!is_object($cli)) {
+ $error = sprintf(gettext("A communications error occurred while attempting CaptivePortalVoucherSync XMLRPC sync with %s (pfsense.exec_php)."), $url);
log_error($error);
- file_notice("CaptivePortalVoucherSync", $error, gettext("Error code received"), "");
+ file_notice("sync_settings", $error, "Settings Sync", "");
$input_errors[] = $error;
} else {
- log_error(sprintf(gettext("The Captive Portal voucher database has been synchronized with %s:%d (pfsense.exec_php)."), $url, $port));
+ try {
+ $resp = $cli->exec_php($newvoucher['vouchersyncpass'], $execcmd);
+ } catch (XML_RPC2_FaultException $e) {
+ // The XMLRPC server returns a XMLRPC error
+ $error = 'Exception calling XMLRPC method exec_php #' . $e->getFaultCode() . ' : ' . $e->getFaultString();
+ log_error($error);
+ file_notice("CaptivePortalVoucherSync", $error, "Communications error occurred", "");
+ $input_errors[] = $error;
+ } catch (Exception $e) {
+ // Other errors (HTTP or networking problems...)
+ $error = 'Exception calling XMLRPC method exec_php #' . $e->getMessage();
+ log_error($error);
+ file_notice("CaptivePortalVoucherSync", $error, gettext("Error code received"), "");
+ $input_errors[] = $error;
+ }
}
+
if (!$input_errors) {
- $toreturn = XML_RPC_Decode($resp->value());
- if (!is_array($toreturn)) {
- if ($toreturn == "Authentication failed") {
+ if (!is_array($resp)) {
+ if ($resp == "Authentication failed") {
$input_errors[] = gettext("Could not synchronize the voucher database: Authentication Failed.");
}
} else {
+ log_error(sprintf(gettext("The Captive Portal voucher database has been synchronized with %s (pfsense.exec_php)."), $url));
// If we received back the voucher roll and other information then store it.
- if ($toreturn['voucher']['roll']) {
- $newvoucher['roll'] = $toreturn['voucher']['roll'];
+ if ($resp['voucher']['roll']) {
+ $newvoucher['roll'] = $resp['voucher']['roll'];
}
- if ($toreturn['voucher']['rollbits']) {
- $newvoucher['rollbits'] = $toreturn['voucher']['rollbits'];
+ if ($resp['voucher']['rollbits']) {
+ $newvoucher['rollbits'] = $resp['voucher']['rollbits'];
}
- if ($toreturn['voucher']['ticketbits']) {
- $newvoucher['ticketbits'] = $toreturn['voucher']['ticketbits'];
+ if ($resp['voucher']['ticketbits']) {
+ $newvoucher['ticketbits'] = $resp['voucher']['ticketbits'];
}
- if ($toreturn['voucher']['checksumbits']) {
- $newvoucher['checksumbits'] = $toreturn['voucher']['checksumbits'];
+ if ($resp['voucher']['checksumbits']) {
+ $newvoucher['checksumbits'] = $resp['voucher']['checksumbits'];
}
- if ($toreturn['voucher']['magic']) {
- $newvoucher['magic'] = $toreturn['voucher']['magic'];
+ if ($resp['voucher']['magic']) {
+ $newvoucher['magic'] = $resp['voucher']['magic'];
}
- if ($toreturn['voucher']['exponent']) {
- $newvoucher['exponent'] = $toreturn['voucher']['exponent'];
+ if ($resp['voucher']['exponent']) {
+ $newvoucher['exponent'] = $resp['voucher']['exponent'];
}
- if ($toreturn['voucher']['publickey']) {
- $newvoucher['publickey'] = $toreturn['voucher']['publickey'];
+ if ($resp['voucher']['publickey']) {
+ $newvoucher['publickey'] = $resp['voucher']['publickey'];
}
- if ($toreturn['voucher']['privatekey']) {
- $newvoucher['privatekey'] = $toreturn['voucher']['privatekey'];
+ if ($resp['voucher']['privatekey']) {
+ $newvoucher['privatekey'] = $resp['voucher']['privatekey'];
}
- if ($toreturn['voucher']['descrmsgnoaccess']) {
- $newvoucher['descrmsgnoaccess'] = $toreturn['voucher']['descrmsgnoaccess'];
+ if ($resp['voucher']['descrmsgnoaccess']) {
+ $newvoucher['descrmsgnoaccess'] = $resp['voucher']['descrmsgnoaccess'];
}
- if ($toreturn['voucher']['descrmsgexpired']) {
- $newvoucher['descrmsgexpired'] = $toreturn['voucher']['descrmsgexpired'];
+ if ($resp['voucher']['descrmsgexpired']) {
+ $newvoucher['descrmsgexpired'] = $resp['voucher']['descrmsgexpired'];
}
- $savemsg = sprintf(gettext('Voucher database has been synchronized from %1$s:%2$s'), $url, $port);
+ $savemsg = sprintf(gettext('Voucher database has been synchronized from %1$s'), $url);
$config['voucher'][$cpzone] = $newvoucher;
write_config();
OpenPOWER on IntegriCloud