diff options
author | Renato Botelho <renato@netgate.com> | 2016-08-16 19:12:50 -0300 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2016-08-16 19:12:50 -0300 |
commit | 200728c95f11ba4de107716345a67efab662dadb (patch) | |
tree | 0dfc2e150a7967098cce9b39c68afb8cee9fe6b6 /src/usr/local/www/services_captiveportal_vouchers.php | |
parent | 80f38d81f00c2e4c1a4c0f787eb62942184143d3 (diff) | |
download | pfsense-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.php | 98 |
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(); |