Modificando el freePBX para soporte SIP => MD5 y callerid

Modificando el freePBX para soporte SIP => MD5 y callerid

Posted Marzo 2nd, 2009 by manzurek

Editar el archivo
vi /var/www/asterisk/admin/modules/core/functions.inc.php

Estoy usando freePBX 2.5, ahora vamos a la
linea 2348

//add to sip table
function core_devices_addsip($account) {
global $db;
global $currentFile;

foreach ($_REQUEST as $req=>$data) {
if ( substr($req, 0, 8) == 'devinfo_' ) {
$keyword = substr($req, 8);
if ( $keyword == 'dial' && $data == '' ) {
$sipfields[] = array($account, $keyword, 'SIP/'.$account);
} elseif ($keyword == 'mailbox' && $data == '') {
$sipfields[] = array($account,'mailbox',$account.'@device');
} elseif ($keyword == 'md5secret' && $data != '') {
$sipfields[] = array($account, 'md5secret', md5($account.':asterisk:'.$data));

} else {
$sipfields[] = array($account, $keyword, $data);
}
}
}

if ( !is_array($sipfields) ) { // left for compatibilty....lord knows why !
$sipfields = array(
//array($account,'account',$account),
array($account,'accountcode',(isset($_REQUEST['accountcode']))?$_REQUEST['accountcode']:''),
array($account,'secret',(isset($_REQUEST['secret']))?$_REQUEST['secret']:''),
array($account,'md5secret', (isset($_REQUEST['md5secret']))? $_REQUEST['md5secret']:''),
array($account,'canreinvite',(isset($_REQUEST['canreinvite']))?$_REQUEST['canreinvite']:'no'),
array($account,'context',(isset($_REQUEST['context']))?$_REQUEST['context']:'from-internal'),
array($account,'dtmfmode',(isset($_REQUEST['dtmfmode']))?$_REQUEST['dtmfmode']:''),
array($account,'host',(isset($_REQUEST['host']))?$_REQUEST['host']:'dynamic'),
array($account,'type',(isset($_REQUEST['type']))?$_REQUEST['type']:'friend'),
array($account,'mailbox',(isset($_REQUEST['mailbox']) && !empty($_REQUEST['mailbox']))?$_REQUEST['mailbox']:$account.'@device'),
array($account,'username',(isset($_REQUEST['username']))?$_REQUEST['username']:$account),
array($account,'nat',(isset($_REQUEST['nat']))?$_REQUEST['nat']:'yes'),
array($account,'port',(isset($_REQUEST['port']))?$_REQUEST['port']:'5060'),
array($account,'qualify',(isset($_REQUEST['qualify']))?$_REQUEST['qualify']:'yes'),
array($account,'callgroup',(isset($_REQUEST['callgroup']))?$_REQUEST['callgroup']:''),
array($account,'pickupgroup',(isset($_REQUEST['pickupgroup']))?$_REQUEST['pickupgroup']:''),
array($account,'deny',(isset($_REQUEST['deny']))?$_REQUEST['deny']:''),
array($account,'permit',(isset($_REQUEST['permit']))?$_REQUEST['permit']:''),
array($account,'disallow',(isset($_REQUEST['disallow']))?$_REQUEST['disallow']:''),
array($account,'allow',(isset($_REQUEST['allow']))?$_REQUEST['allow']:''),
//array($account,'record_in',(isset($_REQUEST['record_in']))?$_REQUEST['record_in']:'On-Demand'),
//array($account,'record_out',(isset($_REQUEST['record_out']))?$_REQUEST['record_out']:'On-Demand'),
array($account,'callerid',(isset($_REQUEST['callerid']))?$_REQUEST['callerid']:'')
);
}

// Very bad
$sipfields[] = array($account,'account',$account);
//$sipfields[] = array($account,'callerid',(isset($_REQUEST['description']) && $_REQUEST['description'])?$_REQUEST['description']." <".$account.'>':'device'." <".$account.'>');

Ahora un poco mas abajo en la
linea 4601

// sip
$tmparr = array();
$tmparr['secret'] = array('value' => '', 'level' => 0, 'jsvalidation' => 'isEmpty() && !confirm("'.$msgConfirmSecret.'")', 'failvalidationmsg' => $msgInvalidSecret);
$tmparr['md5secret'] = array('value' => '', 'level' => 0);
$tmparr['dtmfmode'] = array('value' => 'rfc2833', 'level' => 0, 'jsvalidation' => 'isEmpty()', 'failvalidationmsg' => $msgInvalidDTMFMODE );
$tmparr['canreinvite'] = array('value' => 'no', 'level' => 1);
$tmparr['context'] = array('value' => 'from-internal', 'level' => 1);
$tmparr['host'] = array('value' => 'dynamic', 'level' => 1);
$tmparr['type'] = array('value' => 'friend', 'level' => 1);
$tmparr['nat'] = array('value' => 'yes', 'level' => 1);
$tmparr['port'] = array('value' => '5060', 'level' => 1);
$tmparr['qualify'] = array('value' => 'yes', 'level' => 1);
$tmparr['callgroup'] = array('value' => '', 'level' => 1);
$tmparr['pickupgroup'] = array('value' => '', 'level' => 1);
$tmparr['callerid'] = array('value' => '', 'level' => 1);
$tmparr['disallow'] = array('value' => '', 'level' => 1);
$tmparr['allow'] = array('value' => '', 'level' => 1);
$tmparr['dial'] = array('value' => '', 'level' => 1);
$tmparr['accountcode'] = array('value' => '', 'level' => 1);
$tmparr['mailbox'] = array('value' => '', 'level' => 1);
$tmparr['deny'] = array('value' => '0.0.0.0/0.0.0.0', 'level' => 1);
$tmparr['permit'] = array('value' => '0.0.0.0/0.0.0.0', 'level' => 1);
$currentcomponent->addgeneralarrayitem('devtechs', 'sip', $tmparr);
unset($tmparr);

Con los cambios realizados, ejecutar amportal restart y al momento de crear una extension SIP, tendremos habilitados los casilleros para el md5secret y el callerid que antes no podiamos editarlos

ver imagen

Saludos,