PABX da Simples IP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

566 lines
30 KiB

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="admin/css/validationEngine.jquery.css" type="text/css" media="screen" title="no title" charset="ISO-8859-1" />
<script type="text/javascript" src="admin/js/jquery-1.4.js"></script>
<script type="text/javascript" src="admin/js/jquery.blockUI.js?v2.29"></script>
<script src="admin/js/jquery.min.js" type="text/javascript"></script>
<script src="admin/js/jquery.validationEngine.js" type="text/javascript"></script>
<script src="admin/js/jquery.validationEngine-en.js" type="text/javascript"></script>
<script src="admin/js/pbxAjax.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$("#form1").validationEngine({
sucess: function() {
document.form1.submit();
},
failure: function() {}
})
});
function seleciona_tudo(val) {
for (i = 0; i < document.form1.elements.length; i++) {
if (document.form1.elements[i].type == "checkbox") {
if (document.form1.elements[i].name == "allow[]") {
document.form1.elements[i].checked = val;
}
}
}
}
function TodosMarcados() {
for (i = 0; i < document.form1.elements.length; i++) {
if (document.form1.elements[i].type == "checkbox") {
if (document.form1.elements[i].name == "allow[]") {
if ((document.form1.elements[i].name != 'marcaTodos') && (!document.form1.elements[i].checked)) {
return 0;
}
}
}
}
return 1;
}
function SetContext(user) {
var usuario = '';
for (var i = 0; i < user.length; i++) {
if (!(user.substr(i, 1) == ' ')) {
usuario += user.substr(i, 1);
}
}
if (document.getElementById('acao').value.toUpperCase() == 'INSERI') {
if (user) {
document.getElementById('context').value = 'entrada-' + usuario;
} else {
document.getElementById('context').value = "";
}
}
document.getElementById('username').value = usuario;
}
function valida_voice() {
for (i = 0; i < document.form1.elements.length; i++) {
if (document.form1.elements[i].name == "gera_voice") {
if (document.form1.elements[i].checked == 0) {
document.form1.v_numero.value = '';
document.form1.v_numero.disabled = false;
} else {
document.form1.v_numero.value = '';
document.form1.v_numero.disabled = true;
}
}
}
}
function repeat() {
document.getElementById("fromdomain").value = document.getElementById("permit").value;
}
</script>
<link href="admin/css/forms.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php
$acao = $_GET["acao"];
$acao2 = $_GET["acao2"];
$org_id = GetOrganizacao();
$param = sprintf('&numRamal=%s&pgn=%s&bloco=%s&pg=%s', $_REQUEST['numRamal'], $_REQUEST['pgn'], $_REQUEST['bloco'], $_REQUEST['pg']);
$msg = '';
if ($acao2 == "salva") {
if (md5($_SESSION['SSKeepPassword']) == $_POST["secret"]) {
$secret = $_SESSION['SSKeepPassword'];
} else {
$secret = trim($_POST["secret"]);
}
$id = $_POST["id"];
$nome = LimpaString($_POST["nome"], true);
$nome_asterisk = "$org_id$nome";
$nomeOld = trim($_POST["nomeOld"]);
$type = trim($_POST["type"]);
$qualify = trim($_POST["qualify"]);
$port = trim($_POST["port"]);
$pickupgroup = trim($_POST["pickupgroup"]);
$permit = trim($_POST["permit"]);
$nat = trim($_POST["nat"]);
$mailbox = trim($_POST["mailbox"]);
$host = trim($_POST["host"]);
$dtmfmode = trim($_POST["dtmfmode"]);
$context = trim($_POST["context"]);
$context_asterisk = "$org_id$context";
$registro = trim($_POST["registro"]);
$canreinvite = 'no';
$callerid = trim($_POST["callerid"]);
$callgroup = trim($_POST["callgroup"]);
$accountcode = trim($_POST["accountcode"]);
$call_limit = trim($_POST["call-limit"]);
$disallow = 'all';
$deny = $_POST["deny"];
$fromuser = $_POST["fromuser"];
$fromdomain = $_POST["fromdomain"];
$insecure = $_POST["insecure"];
$t38pt_udptl = $_POST["t38pt_udptl"];
$max_ligacoes = $_POST["max_ligacoes"];
$username = $_POST['username'];
$pedido_registro = $_POST['pedido_registro'];
$contrato = $_POST['contrato'] ? $_POST['contrato'] : '0';
$portabilidade = !$_POST['portabilidade'] ? '0' : $_POST['portabilidade'];
$allow = $_POST["allow"];
//Recupera valores dos checkboxs.
$allow2 = '';
$g = 0;
if (isset($allow)) {
foreach ($allow as $al) {
$g++;
$allow2 .= $al;
if ((count($allow) > 1) and (count($allow) > $g)) {
$allow2 .= ',';
}
}
}
$existeRamal = $nomeOld <> $nome ? _VerificaNomeTronco($dbcon, $nome) : false;
if ($existeRamal) {
$msg = $existeRamal;
} else {
if ($acao == "inseri") {
$query = " INSERT INTO pbx_troncos_sip (nome, username, secret, \"type\", context, callerid, host, port,
deny, permit, qualify, nat, canreinvite, disallow, allow, dtmfmode, fromuser, fromdomain, max_ligacoes,
pedido_registro, registro, contrato, portabilidade, org_id, nome_asterisk, context_asterisk)
VALUES ('$nome', '$username', '$secret', '$type', '$context', '$callerid', '$host', '$port', '0.0.0.0/0.0.0.0',
'$permit', '$qualify', '$nat', '$canreinvite', 'all', '$allow2', '$dtmfmode', '$fromuser', '$fromdomain',
'$max_ligacoes', '$pedido_registro', '$registro', '$contrato', '$portabilidade', $org_id, '$nome_asterisk', '$context_asterisk');";
pg_query($dbcon, $query);
}
if ($acao == "edita") {
$query = " UPDATE pbx_troncos_sip
SET nome = '$nome', username='$username', secret='$secret', \"type\"='$type', context='$context', callerid='$callerid',
host='$host', port='$port', deny='0.0.0.0/0.0.0.0', permit='$permit', qualify='$qualify', nat='$nat', canreinvite='$canreinvite',
disallow='all', allow='$allow2', dtmfmode='$dtmfmode', fromuser='$fromuser', fromdomain='$fromdomain', max_ligacoes='$max_ligacoes',
pedido_registro='$pedido_registro', registro='$registro', contrato='$contrato', portabilidade = '$portabilidade', nome_asterisk = '$nome_asterisk',
context_asterisk = '$context_asterisk'
WHERE id=$id and org_id = $org_id";
pg_query($dbcon, $query);
}
if (!$msg) {
CommandAsterisk2($dbcon, 'TIPO', $nome_asterisk, "TRONCO");
CommandAsterisk2($dbcon, 'NOME_APP', $nome_asterisk, $nome);
CommandAsterisk2($dbcon, 'ORG_TRONCO', $nome_asterisk, $nome);
CommandAsterisk2($dbcon, 'CONTEXT', $nome_asterisk, $context);
CommandAsterisk2($dbcon, 'ORG_ID', $nome_asterisk, $org_id);
//executa inser<EFBFBD><EFBFBD>o na base interna do asterisk
//CommandAsterisk2($dbcon,'TRONCO',$nome,'SIP/'.$nome);//gera arquivos e executa o reload dos dados no asterisk
gera_arquivos($dbcon, 'SIP_RAMAIS');
echo "<script type=\"text/javascript\">
//fecha a janela presa no meio do sistema
fecha_popup(0,'index.php?idProg=10014&pbxRequest=1$param&acao=$acao');
</script>";
}
}
}
if ($msg) {
echo "<script type=\"text/javascript\">alert('$msg');</script>";
$dados = array();
foreach ($_POST as $key => $value)
$dados[$key] = ($key == 'allow') ? $allow2 : $value;
} else {
if ($acao == "edita") {
$id = $_GET["id"] ?? "0";
$query = "SELECT * FROM pbx_troncos_sip where id=$id";
$result = pg_query($dbcon, $query);
$dados = pg_fetch_array($result);
} else {
$query = "SELECT * FROM pbx_troncos_sip where id is null";
$result = pg_query($dbcon, $query);
$dados = pg_fetch_array($result);
$dados["allow"] = 'ulaw,alaw';
}
}
$id = !$dados["id"] ? 0 : $dados["id"];
$nome = $dados["nome"];
$nomeOld = isset($dados["nomeOld"]) ? $dados["nomeOld"] : $dados["nome"];
$type = $dados["type"];
$_SESSION['SSKeepPassword'] = $dados["secret"];
$secret = md5($dados["secret"]);
$qualify = $dados["qualify"];
$port = $dados["port"];
$pickupgroup = $dados["pickupgroup"];
$permit = $dados["permit"];
$nat = trim($dados["nat"]);
$mailbox = $dados["mailbox"];
$host = $dados["host"];
$dtmfmode = $dados["dtmfmode"];
$context = $dados["context"];
$registro = $dados["registro"];
$canreinvite = $dados["canreinvite"];
$callerid = $dados["callerid"];
$callgroup = $dados["callgroup"];
$accountcode = $dados["accountcode"];
$call_limit = $dados["call-limit"];
$allow = $dados["allow"];
$dtmfmode = $dados["dtmfmode"];
$deny = $dados["deny"];
$fromuser = ($acao == "edita") ? $dados["fromuser"] : 1;
$fromdomain = $dados["fromdomain"];
$insecure = $dados["insecure"];
$t38pt_udptl = $dados["t38pt_udptl"];
$disallow = $dados["disallow"];
$max_ligacoes = $dados["max_ligacoes"];
$username = $dados["username"];
$pedido_registro = $dados['pedido_registro'];
$contrato = $dados['contrato'];
$portabilidade = $dados['portabilidade'];
$displayValue = ($acao == 'edita') || (!empty($msg));
?>
<form name="form1" method="post" action="index.php?idProg=11014&pbxRequest=1&acao=<?= $acao; ?>&acao2=salva<?= $param ?>" id="form1">
<table border="1" align="center" cellpadding="0" cellspacing="0" class="tabela">
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA" class="labels" background="img/button03.gif">
<td class="cabecalho">
<div align="center">CADASTRO DE TRONCOS SIP </div>
</td>
</tr>
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA">
<td bgcolor="#EAEAEA" class="labels">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<div align="left">
<fieldset>
<legend class="labels">Nome:</legend>
<input name="nome" type="text" class="validate[required,length[0,100]] caixas" id="nome" value="<?= ($displayValue) ? $nome : null; ?>" size="15" maxlength="100" />
<input name="id" type="hidden" id="id" value="<?= ($displayValue) ? $id : null; ?>" />
<input name="acao" type="hidden" id="acao" value="<?= $acao; ?>" />
<input name="nomeOld" type="hidden" id="nomeOld" value="<?= $nomeOld; ?>" />
</fieldset>
</div>
</td>
<td>
<div align="left">
<fieldset>
<legend class="labels">
<span class="style5">Senha SIP:</span>
</legend>
<input name="secret" type="password" class="caixas" id="secret" value="<?= ($displayValue) ? $secret : null; ?>" size="10" maxlength="100" />
</fieldset>
</div>
</td>
<td>
<div align="left">
<fieldset>
<legend class="labels"><span class="style5">Tarifa<EFBFBD><EFBFBD>o</span></legend>
<select name="contrato" id="contrato" style="width: 150px;">
<?= PbxContratos($contrato); ?>
</select>
</fieldset>
</div>
</td>
<td>
<div align="left">
<fieldset>
<legend class="labels"><span class="style5">Portabilidade</span></legend>
<select name="portabilidade" id="portabilidade" style="width: 150px;">
<?= PbxOperadoras($portabilidade, 0, 'oper_spid'); ?>
</select>
</fieldset>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA">
<td bgcolor="#EAEAEA" class="labels">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<fieldset>
<legend class="labels">
<span class="style5">Codecs Habilitados:</span>
</legend>
<span class="labels2">
<?php
$numCodec = 0;
foreach (GetCodecs() as $codec) {
$check = ((strpos($allow, $codec) !== false)) ? ' checked="checked"' : '';
echo sprintf('<input name="allow[]" type="checkbox" id="allow%s" value="%s"%s>', ++$numCodec, $codec, $check);
echo ucfirst($codec);
}
?>
<input name="marcaTodos" type="checkbox" id="marcaTodos" value="all" onclick="seleciona_tudo(this.checked);" />
all</span>
</fieldset>
</td>
</tr>
</table>
</td>
</tr>
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA">
<td bgcolor="#EAEAEA" class="labels">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<div align="left">
<fieldset>
<legend class="labels">Tipo:</legend>
<span class="style5">
<input name="type" type="radio" value="user" <?= ($displayValue) && ($type == 'user') ? "checked" : null; ?> />
</span>
Faz liga&ccedil;&otilde;es
<span class="style5">
<input name="type" type="radio" value="peer" <?= ($displayValue) && ($type == 'peer') ? "checked" : null; ?> />
Recebe Liga&ccedil;&otilde;es
<input name="type" type="radio" value="friend" <?= ($displayValue) && ($type == 'friend') ? "checked" : null; ?> <?= (!$displayValue) ? "checked" : null; ?> />
Ambos
</span>
</fieldset>
</div>
</td>
<td>
<div align="left">
<fieldset>
<legend class="labels">
<span class="style5">Monitorar:</span>
</legend>
<span class="style5">
<input name="qualify" type="radio" value="yes" <?= ($displayValue) && ($qualify == 'yes') ? "checked" : null; ?> <?= (!$displayValue) ? "checked" : null; ?> />
Sim
<input name="qualify" type="radio" value="no" <?= ($displayValue) && ($qualify == 'no') ? "checked" : null; ?> />
N&atilde;o<span class="labels2"></span></span>
</fieldset>
</div>
</td>
<td>
<div align="left">
<fieldset>
<legend class="labels">
<span class="style5">Nat:</span>
</legend>
<span class="style5">
<input name="nat" type="radio" value="yes" <?= ($displayValue) && ($nat == 'yes') ? "checked" : null; ?> <?= (!$displayValue) ? "checked" : null; ?> />
Sim
<input name="nat" type="radio" value="no" <?= ($displayValue) && ($nat == 'no') ? "checked" : null; ?> />
N&atilde;o</span>
</fieldset>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA">
<td bgcolor="#EAEAEA" class="labels">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<fieldset>
<legend class="labels">Servidor:</legend>
<input name="permit" type="text" class="caixas" id="permit" value="<?= ($displayValue) ? $permit : null; ?>" size="30" maxlength="100" <?= ($acao == "inseri") ? 'onchange="repeat()"' : null; ?> />
</fieldset>
</td>
<td>
<fieldset>
<legend class="labels">Porta:</legend>
<input name="port" type="text" class="validate[required,custom[onlyNumber]] caixas" id="port" value="<?= ($displayValue) ? $port : "5060"; ?>" size="8" maxlength="10" />
<span class="style5"></span>
</fieldset>
</td>
<td>
<fieldset>
<legend class="labels">Usu&aacute;rio:</legend>
<input name="username" type="text" size="15" class="validate[required] caixas" id="username" value="<?= ($displayValue) ? $username : null; ?>" <?= ($displayValue) ? 'readonly' : null; ?> onchange="SetContext(this.value);" />
</fieldset>
</td>
<td>
<div align="left">
<fieldset>
<legend class="labels"><span class="style5">Habilitar From User :</span></legend>
<span class="style5">
<input name="fromuser" type="radio" value="1" <?= ($fromuser) ? "checked" : null; ?> />
Sim
<input name="fromuser" type="radio" value="0" <?= (!$fromuser) ? "checked" : null; ?> />
N&atilde;o</span>
</fieldset>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA">
<td bordercolor="#EAEAEA" bgcolor="#EAEAEA" class="labels">
<div align="right"></div>
<div align="right">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<div align="left">
<fieldset>
<legend class="labels"><span class="style5">Endere<EFBFBD>o IP:</span></legend>
<input name="host" type="text" class="caixas" id="host" value="<?= ($displayValue) ? $host : "dynamic"; ?>" size="20" maxlength="100" />
<span class="labels2"></span>
</fieldset>
</div>
</td>
<td>
<div align="left">
<fieldset>
<legend class="labels"><span class="style5">Bina:</span></legend>
<input name="callerid" type="text" class="caixas" id="callerid" value="<?= ($displayValue) ? $callerid : null; ?>" size="20" maxlength="30" />
<span class="labels2"></span>
</fieldset>
</div>
</td>
<td>
<div align="left">
<fieldset>
<legend class="labels">Modo DTMF:</legend>
<select name="dtmfmode" class="validate[required] caixas" id="dtmfmode">
<option value="rfc2833" <?= ($dados['dtmfmode'] == 'rfc2833') ? "selected" : null; ?>>rfc2833</option>
<option value="inband" <?= ($dados['dtmfmode'] == 'inband') ? "selected" : null; ?>>inband</option>
<option value="info" <?= ($dados['dtmfmode'] == 'info') ? "selected" : null; ?>>info</option>
<option value="auto" <?= ($dados['dtmfmode'] == 'auto') ? "selected" : null; ?>>auto</option>
</select>
<span class="style5"></span>
</fieldset>
</div>
</td>
</tr>
</table>
</div>
</td>
</tr>
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA">
<td bordercolor="#EAEAEA" bgcolor="#EAEAEA" class="labels">
<div align="right"></div>
<div align="right">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<div align="left">
<fieldset>
<legend class="labels"><span class="style5">Dom<EFBFBD>nio:</span></legend>
<input name="fromdomain" type="text" class="caixas" id="fromdomain" value="<?= ($displayValue) ? $fromdomain : null; ?>" size="20" maxlength="100" />
<span class="labels2"></span>
</fieldset>
</div>
</td>
<td>
<div align="left">
<fieldset>
<legend class="labels"><span class="style5">Contexto:</span></legend>
<input name="context" type="text" class="validate[required] caixas" id="context" value="<?= ($displayValue) ? $context : null; ?>" size="20" maxlength="30" />
<span class="labels2"></span>
</fieldset>
</div>
</td>
<td>
<div align="left">
<fieldset>
<legend class="labels">Limite de Liga&ccedil;&atilde;o:</legend>
<input name="max_ligacoes" type="text" class="validate[required,custom[onlyNumber]] caixas" id="max_ligacoes" value="<?= ($displayValue) ? $max_ligacoes : "50"; ?>" size="10" maxlength="10" />
<span class="style5"></span>
</fieldset>
</div>
</td>
</tr>
</table>
</div>
</td>
</tr>
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA">
<td bgcolor="#EAEAEA" class="labels">
<div align="right"></div> <span class="style5">
</span>
<div align="right">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td></td>
</tr>
<tr>
<td>
<div align="left">
<fieldset>
<legend class="labels"><span class="style5">Registro:</span></legend>
<input name="registro" type="text" class="caixas" id="registro" value="<?= ($displayValue) ? $registro : "usuario_contrato:senha_contrato@endereco_servidor/usuario_local"; ?>" size="60" maxlength="100" />
</fieldset>
</div>
</td>
<td>
<div align="left">
<fieldset>
<legend class="labels"><span class="style5">Pedido Registro :</span></legend>
<span class="style5">
<input name="pedido_registro" type="radio" value="yes" <?= ($displayValue) && ($pedido_registro == 'yes') ? "checked" : null; ?> />
Sim
<input name="pedido_registro" type="radio" value="no" <?= ($displayValue) && ($pedido_registro == 'no') ? "checked" : null; ?> <?= (!$displayValue) ? "checked" : null; ?> />
N&atilde;o</span>
</fieldset>
</div>
</td>
<td>&nbsp;</td>
</tr>
</table>
</div>
</td>
</tr>
<tr bordercolor="#EAEAEA" bgcolor="#EAEAEA">
<td>
<div align="center">
<span class="style1"></span>
<span class="style1"></span>
<span class="style1"></span>
<span class="style1">
<input name="Submit2" type="button" class="labels" value="Fechar" id="Submit2" onclick="fecha_popup();" />
<input name="Submit" type="submit" class="labels" value="Salvar" />
</span>
</div>
</td>
</tr>
</table>
</form>
<script type="text/javascript">
if (TodosMarcados()) {
document.getElementById('marcaTodos').checked = 'checked';
}
</script>
</body>
</html>