_settings_err('Failed to assign nobody account to phone ' . $mac);
    }
}
# get host for user
#
$host = @gs_prov_get_host_for_user_id($db, $user_id);
if (!$host) {
    _settings_err('Failed to find host.');
}
$pbx = $host;
# $host might be changed if SBC configured
# who is logged in at that phone?
#
$user = @gs_prov_get_user_info($db, $user_id);
if (!is_array($user)) {
    _settings_err('DB error.');
}
# store the current firmware version in the database:
#
@$db->execute('UPDATE `phones` SET ' . '`firmware_cur`=\'' . $db->escape($fw_vers_nrml) . '\' ' . 'WHERE `mac_addr`=\'' . $db->escape($mac) . '\'');
# firmware update
#
$firmware_prefix = '';
if (!gs_get_conf('GS_GRANDSTREAM_PROV_FW_UPDATE')) {
    gs_log(GS_LOG_DEBUG, 'Grandstream firmware update not enabled');
} elseif (in_array($phone_model, array('bt200', 'bt201', 'gxp280', 'gxp1200', 'gxp2000', 'gxp2010', 'gxp2020', 'gxv3000', 'gxv3005'), true)) {
    # get phone_id
    $phone_id = (int) $db->executeGetOne('SELECT `id` FROM `phones` WHERE `mac_addr`=\'' . $db->escape($mac) . '\'');
    # do we have to update to a default version?
    #
    $fw_was_upgraded_manually = (int) $db->executeGetOne('SELECT `fw_manual_update` ' . 'FROM `phones` ' . 'WHERE `id`=' . $phone_id);
Пример #2
0
 if (!is_array($users[$i])) {
     _settings_err('DB error.');
 }
 $user['id'] = $users[$i]['id'];
 $users[$i]['name'] = $user['name'];
 $users[$i]['mailbox'] = $user['mailbox'];
 $users[$i]['secret'] = $user['secret'];
 $users[$i]['nobody_index'] = $user['nobody_index'];
 $users[$i]['user'] = $user['user'];
 $users[$i]['firstname'] = $user['firstname'];
 $users[$i]['lastname'] = $user['lastname'];
 # get host for user
 #
 $users[$i]['host'] = @gs_prov_get_host_for_user_id($db, $user['id']);
 if (!$users[$i]['host']) {
     _settings_err('Failed to find host.');
 }
 $pbx = $users[$i]['host'];
 # $host might be changed if SBC configured
 # store the current firmware version in the database:
 #
 @$db->execute('UPDATE `phones` SET ' . '`firmware_cur`=\'' . $db->escape($fw_vers_nrml) . '\' ' . 'WHERE `mac_addr`=\'' . $db->escape($mac_addr) . '\'');
 # store the user's current IP address in the database:
 #
 @$db->execute('UPDATE `users` SET ' . '`current_ip`=\'' . $db->escape($requester['phone_ip']) . '\' ' . 'WHERE `id`=\'' . (int) $user['id'] . '\'');
 # get SIP proxy to be set as the phone's outbound proxy
 #
 $sip_proxy_and_sbc = gs_prov_get_wan_outbound_proxy($db, $requester['phone_ip'], $user['id']);
 if ($sip_proxy_and_sbc['sip_server_from_wan'] != '') {
     $users[$i]['host'] = $sip_proxy_and_sbc['sip_server_from_wan'];
 }
Пример #3
0
    $user_id = @gs_prov_assign_default_nobody($db, $mac, null);
    if ($user_id < 1) {
        _settings_err("Failed to assign nobody account to phone " . $mac);
    }
}
//--- get host for user
$host = @gs_prov_get_host_for_user_id($db, $user_id);
if (!$host) {
    _settings_err("Failed to find host.");
}
$pbx = $host;
//--- $host might be changed if SBC configured
//--- who is logged in at that phone?
$user = @gs_prov_get_user_info($db, $user_id);
if (!is_array($user)) {
    _settings_err("DB error.");
}
//--- get polycom'ized language string from user lang pref
$user_polycomlang = @_polycom_astlang_to_polycomlang($user['language']);
//--- store the current phonetype and firmware version in the database:
@$db->execute("UPDATE `phones` SET " . "`firmware_cur`='" . $db->escape($fw_vers) . "', " . "`type`='" . $db->escape($phone_type) . "' " . "WHERE `mac_addr`='" . $db->escape($mac) . "'");
//--- store the user's current IP address in the database:
if (!@gs_prov_update_user_ip($db, $user_id, $requester["phone_ip"])) {
    gs_log(GS_LOG_WARNING, "Failed to store current IP addr of user ID " . $user_id);
}
//--- get callwaiting state
$callwaiting = (int) $db->executeGetOne("SELECT `active` FROM `callwaiting` WHERE `user_id`=" . $user_id);
//--- get SIP proxy to be set as the phone's outbound proxy
$sip_proxy_and_sbc = gs_prov_get_wan_outbound_proxy($db, $requester["phone_ip"], $user_id);
if ($sip_proxy_and_sbc["sip_server_from_wan"] != "") {
    $host = $sip_proxy_and_sbc["sip_server_from_wan"];
Пример #4
0
if (hexDec(subStr($mac, 0, 2)) % 2 == 1) {
    gs_log(GS_LOG_NOTICE, "Snom M9 provisioning: Invalid MAC address \"{$mac}\" (multicast address)");
    # don't explain this to the users
    _settings_err('No! See log for details.');
}
if ($mac === '000000000000') {
    gs_log(GS_LOG_NOTICE, "Snom M9 provisioning: Invalid MAC address \"{$mac}\" (huh?)");
    # don't explain this to the users
    _settings_err('No! See log for details.');
}
# make sure the phone is a Snom-M9:
#
if (subStr($mac, 0, 6) !== '000413' && subStr($mac, 0, 6) !== '00087B') {
    gs_log(GS_LOG_NOTICE, "Snom M9 provisioning: MAC address \"{$mac}\" is not a Snom M9 phone");
    # don't explain this to the users
    _settings_err('No! See log for details.');
}
$ua = trim(@$_SERVER['HTTP_USER_AGENT']);
if (preg_match('/^Mozilla\\/\\d\\.\\d\\s*\\(compatible;\\s*/i', $ua, $m)) {
    $ua = rTrim(subStr($ua, strLen($m[0])), ' )');
}
gs_log(GS_LOG_DEBUG, "Snom model {$ua} found.");
if (preg_match('/snom m9/i', $ua, $m)) {
    $phone_model = 'm9';
} else {
    $phone_model = 'unknown';
}
$phone_type = 'snom-' . $phone_model;
# e.g. "snom-m9"
# to be used when auto-adding the phone
gs_log(GS_LOG_DEBUG, "Snom phone \"{$mac}\" asks for settings (UA: ...\"{$ua}\") - model: {$phone_model}");
Пример #5
0
if (subStr($mac, 0, 6) !== '000413') {
    gs_log(GS_LOG_NOTICE, "Snom M9 provisioning: MAC address \"{$mac}\" is not a Snom M9 phone");
    # don't explain this to the users
    _settings_err('No! See log for details.');
}
$ua = trim(@$_SERVER['HTTP_USER_AGENT']);
if (!preg_match('/^Mozilla/i', $ua) || !preg_match('/snom\\sm9/i', $ua)) {
    gs_log(GS_LOG_WARNING, "Phone with MAC \"{$mac}\" (Snom) has invalid User-Agent (\"" . $ua . "\")");
    # don't explain this to the users
    //_settings_err( 'No! See log for details.' );
}
# connect to DB
$db = gs_db_slave_connect();
if (!$db) {
    gs_log(GS_LOG_WARNING, "Snom M9 phone asks for phonebook - Could not connect to DB");
    _settings_err('Could not connect to DB.');
}
ob_start();
echo '<?', 'xml version="1.0" encoding="utf-8"?', '>', "\n";
echo '<tbook complete="true">', "\n";
$pb_entrys = 1;
for ($i = 1; $i <= gs_get_conf('GS_SNOM_PROV_M9_ACCOUNTS'); ++$i) {
    # create virtual mac address
    $mac_addr = $i > 1 ? $mac . '-' . $i : $mac;
    # get user_id
    $user_id = (int) $db->executeGetOne('SELECT `u`.`id`
FROM
	`users` `u` JOIN
	`phones` `p` ON (`p`.`user_id`=`u`.`id`)
WHERE
	`u`.`current_ip`=\'' . $db->escape($requester['phone_ip']) . '\' AND