Estoy desarrollando un sistema para editar archivos de configuracion Asterisk (http://www.asterisk.org), es un PBX open source para Voz sobre IP.
Entre otras cosas lo atractivo es poder hacer llamadas de larga distancia a un muy bajo costo. Pero para poder llamar a otra oficina se necesitan registrar las oficinas mutuamente, cada una en su servidor.
Ahora bien, para registrar la oficina GDL con la oficina MX, una de las dos debe iniciar el proceso de registro. Se ha definido que la mas nueva lo inice. Entonces GDL entraria al panel de administracion que estoy haciendo y al registrar la nueva oficina, necesito escribir una linea en un archivo del servidor de MX. Los permisos y la parte de la autentificacion no son problema de momento.
Al momento de registrar tengo esto en el servidor de GDL:
Código PHP:
function register($data) {
$editor = new editSipIax();
$hosts = array();
$hostE = array();
$user = $data['user'];
$keyName = $data['keyName'];
$hosts = explode("\n",$data['host']);
foreach($hosts as $h) {
$h = trim($h);
$hostE = explode(" ",$h);
foreach($hostE as $hs) {
$editor->preRegisterIax($user,$keyName,$hs);
$editor->save();
}
}
}
Código PHP:
function preRegisterIax($userName,$keyName,$host) {
$this->bufferIn();
$userName = strtolower($userName);
$host = strtolower($host);
$this->setFileName($this->alterFiles['preiax']['fileName']);
$this->open();
$this->setContext($this->alterFiles['preiax']['registers']);
$this->readContext();
$regNum = count($this->registers);
$this->registers[$regNum]['login'] = $userName;
$this->registers[$regNum]['torkey'] = $keyName;
$this->registers[$regNum]['host'] = $host;
$this->saveParameters();
$locHost = $this->getLocalParameter("host");
$link = "hostremoto.com/archivoremoto.php?host=$locHost&user=$userName&key=$keyName";
$link = urlencode($link);
$dat = file($link);
$this->bufferOut();
return true;
}
El archivo remoto, dejando de lado la autentificacion contiene lo siguiente:
Código PHP:
include_once('asterisk/editSipIax.conf');
$editor = new editSipIax();
$fp = 0;
$data = "":
$remoteHost = "";
$remoteUser = "";
$remoteKey = "";
$file2W = "";
$registerTime = "":
$dir = "":
$file2W = $editor->alterFiles['iaxpretends']['fileName'];
$dir = $editor->workinDir;
$remoteHost = $_GET['host'];
$remoteUser = $_GET['user'];
$remoteKey = $_GET['key'];
$registerTime = date("Y-m-d-H-i-s");
$remoteUser = $remoteUser != "" ? $remoteUser.":" : "";
$data = "register => ".$rempoteUser.$remoteKey."@".$remoteHost.":-)".$registerTime;
$fp = fopen($dir.$file2W,"a");
if(fwrite($fp,$data)) {
echo 'true';
}
else {
echo 'false';
}
ideas?
un saludo