<?php
// https://cloudsoftphoneprovdev.voipswer.com/ExternalProvisioning.php?cloud_username=fvermeire&cloud_password=QndWTurb

// Manual Cloud Softphone
// https://doc.acrobits.net/cloudsoftphone/qr_api.html

header("Access-Control-Allow-Origin: *");
header("Content-type: text/xml");

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

error_reporting(E_ALL);

include_once 'config/config.php';
include_once 'config/database.php';
include_once 'objects/contacts.php';
include_once 'objects/Provisioning.php';

$database = new Database();
$db = $database->getConnection($_SESSION['host'], $_SESSION['username'], $_SESSION['password'], $_SESSION['db']);

$xmlError = '<error>';
$xmlError .= '<message>Something went wrong</message>';
$xmlError .= '</error>';

if (!isset($_GET['cloud_username']) || !isset($_GET['cloud_password']))
{
    print ($xmlError);
    die();
}

$cloud_username = $_GET['cloud_username'];
$cloud_password = $_GET['cloud_password'];
$cloudId = $_GET['cloud_id'];

$provObject = new Provisioning($db);
$provObject->initialScreen = (isset($_GET['initialScreen'])) ? $_GET['initialScreen'] : 1;

$CSP_Users = $provObject->Prov($cloud_username, $cloud_password, $cloudId, $database);

/*
echo "<pre>";
print_r($CSP_Users);
echo "</pre>";
*/

/*
if ($provObject->isEnabled == false)
{
    http_response_code($provObject->returnCode);
    $xmlError = '<error>';
    $xmlError .= '<message>CloudSoftphone is not enabled.</message>';
    $xmlError .= '</error>';
    print ($xmlError);
    die();
}
else
*/
if ($provObject->isAllowed == false)
{
    http_response_code($provObject->returnCode);
    $xmlError = '<error>';
    $xmlError .= '<message>Maximum allowed of ' . $provObject->maxInitialScreen . ' activation' . (($provObject->maxInitialScreen) ? '' : 's') . ' reached.</message>';
    $xmlError .= '</error>';
    print ($xmlError);
    die();
}

$xml = "";
if ($provObject->returnCode == 200 || $CSP_Users->IsEnabled == 0)
{
    $xml .= '<account>';
    $xml .= '<username>' . $CSP_Users->SipUser . '</username>';
    $xml .= '<password>' . $CSP_Users->SipPassword . '</password>';

    //added by kd
    $xml .= '<cloudusername>' . $CSP_Users->CloudUsername . '</cloudusername>';
    $xml .= '<cloudpassword>' . $CSP_Users->CloudPassword . '</cloudpassword>';
    //

    if ($CSP_Users->IsEnabled == 0)
    {
        $xml .= '<host>HOST_DOES_NOT_EXISTS.be.voipswer.com</host>';
    } else {
        $xml .= '<host>' . $CSP_Users->Host . '</host>';
    }

    $xml .= '<extProvInterval>5</extProvInterval>';
    $xml .= '<codecOrder>' . $CSP_Users->CodecOrder . '</codecOrder>';
    $xml .= '<codecOrder3G>' . $CSP_Users->CodecOrder3G . '</codecOrder3G>';

    if (isset($CSP_Users->Title) && strlen($CSP_Users->Title) > 0)
    {
        $xml .= '<title>' . $CSP_Users->Title . '</title>';
    }

    $xml .= $provObject->ReadBlfToXml($CSP_Users->SipUserId);

    $xml .= '</account>';
}
else
{
    $xml .= "<error>";
    $xml .= "<message>Error</message>";
    $xml .= "</error>";
}

http_response_code($provObject->returnCode);

print ($xml);
