// login using your favorite php session management and read data from the login function
// login_credentials can overwrite many defaults, see SoapEngine->SoapEngine() function
if ($adminonly) {
$login_credentials=array(
'login_type' => 'admin',
'reseller' => $reseller,
'customer' => $customer,
'extra_form_elements' => array()
);
} else {
$login_credentials=array(
'login_type' => 'reseller',
'soap_username' => $soapUsername,
'soap_password' => $soapPassword,
'reseller' => $reseller,
'customer' => $customer,
'extra_form_elements' => array()
);
}
// login_credentials can overwite SoapEngine->ports
$login_credentials['ports']['customers'] = array(
'records_class' => 'Customers',
'name' => 'Login accounts',
'soap_class' => 'WebService_NGNPro_CustomerPort',
'category' => 'general',
'description' => 'Manage login accounts, customer information and properties. Customer id can be assigned to entities like SIP domains and ENUM ranges. Use _ or % to match one or more characters. '
);
require_once("ngnpro_client.phtml");
require("/etc/cdrtool/ngnpro_engines.inc");
$extraFormElements=array();
////////////////////////////////
// How to create a SIP record //
////////////////////////////////
$sip_engine = 'sip_accounts@engine';
$this->SipSoapEngine = new SoapEngine($sip_engine, $soapEngines, $login_credentials);
$this->enumRecords = new $_enum_class($this->EnumSoapEngine);
$enumMapping = array('tld' => $tld,
'number' => $number,
'type' => 'sip',
'mapto' => 'sip:user@example.com',
'owner' => $owner,
'customer' => $customer,
'reseller' => $reseller
);
$this->enumRecords->addRecord($enumMapping);
*/
class SoapEngine
{
public $version = 1;
public $adminonly = 0;
public $customer = 0;
public $reseller = 0;
public $login_type = 'reseller';
public $allowedPorts = array();
public $timeout = 5;
public $exception = array();
public $result = false;
public $extraFormElements = array();
public $default_enum_tld = 'e164.arpa';
public $default_timezone = 'Europe/Amsterdam';
public $default_sip_proxy = "";
public $default_msrp_relay = "";
public $ports = array(
'sip_accounts' => array(
'records_class' => 'SipAccounts',
'name' => 'SIP accounts',
'soap_class' => 'WebService_NGNPro_SipPort',
'category' => 'sip',
'description' => 'Manage SIP accounts and their settings. Click on the SIP account to access the settings page. Use _ or % to match one or more characters. ',
),
'customers' => array(
'records_class' => 'Customers',
'name' => 'Owner Accounts',
'soap_class' => 'WebService_NGNPro_CustomerPort',
'category' => 'general',
'description' => 'Manage accounts with address information and other properties. SIP domains and ENUM ranges can be assigned to accounts. Use _ or % to match one or more characters. '
),
'sip_domains' => array(
'records_class' => 'SipDomains',
'name' => 'SIP domains',
'soap_class' => 'WebService_NGNPro_SipPort',
'category' => 'sip',
'description' => 'Manage SIP domains (e.g example.com) served by the SIP Proxy. Use _ or % to match one or more characters. '
),
'trusted_peers' => array(
'records_class' => 'TrustedPeers',
'name' => 'Trusted peers',
'soap_class' => 'WebService_NGNPro_SipPort',
'category' => 'sip',
'description' => 'Manage trusted parties that are allowed to route sessions through the SIP proxy without digest authentication. ',
'resellers_only'=> true
),
'enum_numbers' => array(
'records_class' => 'EnumMappings',
'name' => 'ENUM numbers',
'soap_class' => 'WebService_NGNPro_EnumPort',
'category' => 'dns',
'description' => 'Manage E164 numbers used for incoming calls and their mappings (e.g. +31123456789 map to sip:user@example.com). Use _ or % to match one or more characters. '
),
'enum_ranges' => array(
'records_class' => 'EnumRanges',
'name' => 'ENUM ranges',
'soap_class' => 'WebService_NGNPro_EnumPort',
'category' => 'dns',
'description' => 'Manage E164 number ranges that hold individual phone numbers. Use _ or % to match one or more characters. '
),
'dns_zones' => array(
'records_class' => 'DnsZones',
'name' => 'DNS zones',
'soap_class' => 'WebService_NGNPro_DnsPort',
'category' => 'dns',
'description' => 'Manage DNS zones. Use _ or % to match one or more characters. '
),
'dns_records' => array(
'records_class' => 'DnsRecords',
'name' => 'DNS records',
'soap_class' => 'WebService_NGNPro_DnsPort',
'category' => 'dns',
'description' => 'Manage DNS records. Use _ or % to match one or more characters. '
),
'pstn_carriers' => array(
'records_class' => 'Carriers',
'name' => 'PSTN carriers',
'soap_class' => 'WebService_NGNPro_SipPort',
'category' => 'pstn',
'description' => 'Manage outbound carriers for PSTN traffic. Click on Carier to edit its attributes. ',
'resellers_only'=> true
),
'pstn_gateways' => array(
'records_class' => 'Gateways',
'name' => 'PSTN gateways',
'soap_class' => 'WebService_NGNPro_SipPort',
'category' => 'pstn',
'description' => 'Manage outbound PSTN gateways. Click on Gateway to edit its attributes. ',
'resellers_only'=> true
),
'pstn_routes' => array(
'records_class' => 'Routes',
'name' => 'PSTN routes',
'soap_class' => 'WebService_NGNPro_SipPort',
'category' => 'pstn',
'description' => 'Manage outbound PSTN routes. A prefix must be formated as 00+E164, an empty prefix matches all routes. ',
'resellers_only'=> true
),
'gateway_rules' => array(
'records_class' => 'GatewayRules',
'name' => 'PSTN rules',
'soap_class' => 'WebService_NGNPro_SipPort',
'category' => 'pstn',
'description' => 'Manage translation rules for PSTN gateways. Rules are applied against 00+E164 prefix. Click on Rule to edit its attributes. ',
'resellers_only'=> true
),
'email_aliases' => array(
'records_class' => 'EmailAliases',
'name' => 'Email aliases',
'soap_class' => 'WebService_NGNPro_DnsPort',
'category' => 'dns',
'description' => 'Manage email aliases. Use _ or % to match one or more characters. '
),
'url_redirect' => array(
'records_class' => 'UrlRedirect',
'name' => 'URL redirect',
'soap_class' => 'WebService_NGNPro_DnsPort',
'category' => 'dns',
'description' => 'Manage WEB URL redirections. Use _ or % to match one or more characters. '
),
'sip_aliases' => array(
'records_class' => 'SipAliases',
'name' => 'SIP aliases',
'soap_class' => 'WebService_NGNPro_SipPort',
'category' => 'sip',
'description' => 'Manage redirections for SIP addresses e.g. redirect user1@example1.com (alias) to user2@example2.com (target). Use _ or % to match one or more characters. '
)
);
/**
* service is port@engine where:
*
* - port is an available NGNPro service
* - engine is a connection to an NGNPro server
*
* - soapEngines is an array of NGNPro connections and
* settings belonging to them:
*
* $soapEngines = array(
* 'mdns' => array(
* 'name' => 'Managed DNS',
* 'username' => 'soapadmin',
* 'password' => 'passwd',
* 'url' => 'http://example.com:9200/'
* )
* );
*/
public function __construct($service, $soapEngines, $login_credentials = array())
{
$this->login_credentials = &$login_credentials;
if (is_array($this->login_credentials['ports'])) {
$_ports = array();
foreach (array_keys($this->ports) as $_key) {
if (in_array($_key, array_keys($this->login_credentials['ports']))) {
if (strlen($this->login_credentials['ports'][$_key]['records_class'])) {