Exemple #1
0
function get_phone_data($macaddress, $qpass = false, $nonepass = false)
{
    global $host, $sag, $tmp;
    //   if(filemtime($tmp.'provcache-!!') > time()-600) {
    //        $provdata = unserialize(file_get_contents($tmp.'provcache-!!'));
    //        if (! is_array($provdata)) {
    //            {global $debug; $debug[] = array(level=>false,status=>'problem',file=>__FILE__.":".__LINE__,log=>'('. __FUNCTION__ .') '." Loaderror: ".$tmp."provcache-!!");}
    //            return(false);
    //        }
    //    } else {
    $ret = get_all_dbs($host);
    foreach ($ret['res'] as $key => $value) {
        if (stristr($value, 'account/')) {
            $res = get_entry($value, '/_design/devices/_view/listing_by_macaddress');
            //print_r($res);
            if ($res['err']) {
                show_debug("Get macaddress_view Error:" . $res['err']);
                continue;
            } else {
                //                    if(! $ph_dat['devices']) $ph_dat['devices'] = json_decode(json_encode($res['res']->rows), true);
                foreach ($res['res']->rows as $mac) {
                    $mac->value->account = $value;
                    $mac->value->mac = $mac->key;
                    $provdata[$mac->id] = $mac->value;
                }
            }
        }
    }
    //        file_put_contents($tmp.'provcache-!!',serialize($provdata));
    //    }
    //print_r($provdata);
    foreach ($provdata as $v) {
        if (stristr(str_replace(":", "", $macaddress), str_replace(":", "", $v->mac))) {
            $prov[] = $v;
        }
        /* array all devices if owner too  */
        if ($v->owner) {
            $devices[$v->owner] = $v;
        }
    }
    foreach ($prov as $k => $val) {
        //echo $prov[$k]->account." , ".$prov[$k]->pvt_account_id."\n";
        $ph_account = get_entry($prov[$k]->account, $prov[$k]->pvt_account_id);
        $ph_dat['account'][$k] = json_decode(json_encode($ph_account['res']), true);
        //print_r($ph_account);
        $ph_users[$k] = get_entry($prov[$k]->account, '/_design/users/_view/crossbar_listing');
        /* OBJECT2ARRAY */
        $ph_user[$k] = json_decode(json_encode($ph_users[$k]['res']->rows), true);
        //print_r($ph_user[$k]);
    }
    $ph_dat['devices'] = json_decode(json_encode($devices), true);
    //print_r($ph_dat['devices']);
    //print_r($prov);
    // return fase if qpass enabled and wrong ['provision_enabled']
    //{global $debug; $debug[] = array(level=>'d',status=>'info',file=>__FILE__.":".__LINE__,log=>'('. __FUNCTION__ .') '." DEBUG: ".$ph_dat['account'][0]['provision']['provision_enabled']." == false || ".$ph_dat['account'][0]['provision']['urlpass']." == false || ".$ph_dat['account'][0]['provision']['urlpass']." != $qpass) && $nonepass");}
    if (($ph_dat['account'][0]['provision']['provision_enabled'] == false || $ph_dat['account'][0]['provision']['urlpass'] == false || $ph_dat['account'][0]['provision']['urlpass'] != $qpass) && $nonepass == false) {
        /* fraud? */
        sleep(20);
        return false;
    }
    $ph_dat['prov'] = json_decode(json_encode($prov), true);
    // take template of the first account ## get account and userdata (f_path = /ui/snom/3xx/300)
    $ph_dat['template'] = get_groundsettings(array('0' => 'ui', '1' => $prov[0]->provision->endpoint_brand, '2' => $prov[0]->provision->endpoint_family, '3' => $prov[0]->provision->endpoint_model), 'object');
    /* OBJECT2ARRAY */
    foreach ($ph_user as $account => $users) {
        foreach ($users as $k => $v) {
            $ph_dat['users'][$account][$v['id']] = $v;
        }
    }
    global $debug;
    $debug[] = array(level => 'd', status => 'info', file => __FILE__ . ":" . __LINE__, log => '(' . __FUNCTION__ . ') ' . " Get Phone & Userdata from bigCouch");
    //print_r($ph_dat);
    //exit;
    return $ph_dat;
}
 $dbconfig = db_config();
 // min seconds for core reload (because don't to quickly reload the core)
 $fs = count($dbconfig['ecallmgr']->default->fs_nodes);
 do_log("Nodes possible to register:" . $fs, 'v', __FILE__, __FUNCTION__, __LINE__);
 $myip4 = get_ip(4);
 $conti = false;
 foreach ($dbconfig['ecallmgr']->default->fs_nodes as $key => $nam) {
     $name = explode("@", $nam);
     if (gethostbyname($name[1]) == $myip4) {
         $conti = 1;
         $match = $key;
     }
 }
 if ($conti) {
     do_log("Our part of {$fs} is " . $dbconfig['ecallmgr']->default->fs_nodes[$match], 'v', __FILE__, __FUNCTION__, __LINE__);
     $ret = get_all_dbs($host);
     foreach ($ret['res'] as $key => $value) {
         if (stristr($value, 'numbers/')) {
             $res = get_entry($value, '/_design/numbers/_view/regexternal_modified');
             if ($res['err']) {
                 do_log("Get regexternal_view Error:" . $res['err']);
                 continue;
             } else {
                 foreach ($res['res']->rows as $num) {
                     $num->value->db = $value;
                     $result[$num->id] = $num->value;
                 }
             }
         }
     }
     foreach ($result as $value) {