📄 trunks.html.svn-base
字号:
<!-- * Configuration for "Service Providers (trunks)" * * Copyright (C) 2006 - 2007, Digium, Inc. * * Mark Spencer <markster@digium.com> * Pari Nannapaneni <pari@digium.com> * Brandon Kruse <bkruse@digium.com> * * All Rights Reserved. * * Distribution of this file is subject to the license * agreement you accepted when obtained and/or activated * the Digium product containing this file. *--><script src="scripts/prototype.js"></script><script src="scripts/astman.js"></script><script src="scripts/tooltip.js"></script><link href="stylesheets/schwing.css" media="all" rel="Stylesheet" type="text/css" /><script>var origwidth;var widgets = {};var provwidgets = {};var callbacks = new Object;var providercallbacks = new Object;var globalvars = new Object;var GROUPS = [];var NEWGROUPNUMBER;var fieldnames =[ 'disallow','allow','signalling','callerid','cancel','contact','context','delete','dialformat','fromdomain','fromuser','canreinvite','group','hasexten','hasiax','hassip','host','insecure', 'name','new','port','provider','registeriax','registersip','save','secret','trunkname','trunkstyleanalog','trunkstylecustomvoip', 'trunkstylevoip','username','zapchan'];var provfieldnames = ['providerdesc', 'providerlogo'];var opt_userandpass = ['voip_user', 'voip_pass', 'username', 'secret'];var opt_userandip = ['voip_user', 'voip_ip', 'username', 'ip'];var isnewtrunk;var dids_array = [];var old_trunkname;var used_fxos = {};used_fxos.oldvalue = "";used_fxos.newvalue = "";var PORTS_toCALIBRATE = {} ;var AUDIO_LEVELS = [];var PRITRUNKS = [];var MISDNTRUNKS = [];function load_mISDNtrunks(){ var parseMisdnConf = function(n){ try{ if( n == "ERROR: CONFIG FILE NOT FOUND"){ } // misdn.conf not found for( var l in n ){ if( n.hasOwnProperty(l) && l.beginsWith('trunk_m') && n[l]['hasmisdn'] =='yes' ){ var y = ( n[l]['trunkname'] ) ? n[l]['trunkname'] : l ; MISDNTRUNKS.push( y ); } }; }catch(err){ }finally{ parent.astmanEngine.config2list("extensions.conf", _$('hiddenglobals'), new Array, globalvars); } }; config2json("misdn.conf", 1, parseMisdnConf);}function add_didcontext(trunk){ var didcontext = asterisk_guiTDPrefix + trunk ; var uri = build_action('newcat', 0, didcontext ,"", ""); uri += build_action('append', 1, didcontext ,"include", "default"); makerequest('u', 'extensions.conf',uri, function(t){ });}function update_didcontext(old_trunk, new_trunk){ var old_didcontext = asterisk_guiTDPrefix + old_trunk ; var new_didcontext = asterisk_guiTDPrefix + new_trunk ; var uri = build_action('renamecat', 0, old_didcontext ,"", new_didcontext ); makerequest('u','extensions.conf', uri, function(t){ callbacks_savechanges_step2(); } );}function update_didcontext_andcid(old_trunk, new_trunk){ var old_didcontext = asterisk_guiTDPrefix + old_trunk ; var new_didcontext = asterisk_guiTDPrefix + new_trunk ; var uri = build_action('renamecat', 0, old_didcontext ,"", new_didcontext ); uri += build_action('renamecat', 1, old_didcontext + "_cid", "", new_didcontext + "_cid" ); makerequest('u','extensions.conf', uri, function(t){ callbacks_savechanges_step2(); } );}function delete_didcontext(trunk){ var didcontext = asterisk_guiTDPrefix + trunk ; var uri = build_action('delcat', 0, didcontext ,"", ""); makerequest('u','extensions.conf', uri, function(t){ } );}providercallbacks.postselect = function() { var _pl = _$('providerlink') ; try{ var f = _$('provider'); var g = f.stored_config.catbyname[f.value].fieldbyname['regurl'] ; _pl.href= ( g ) ? g :'#' ; _pl.target = ( g ) ? '_blank' : ''; }catch(e){ _pl.href= "#"; _pl.target = ""; }}providercallbacks.format = function(t) { return t.fieldbyname['providername'];}globalvars.format = function(t) { if ( t.name.substring(0,asterisk_guiTDPrefix.length) == asterisk_guiTDPrefix ){ dids_array.push( t.name.substring( asterisk_guiTDPrefix.length ) ); } if (t.name == "globals"){ return t.name ; } return null;}globalvars.loaded = function() { parent.astmanEngine.config2list("users.conf", _$('devices'), widgets, callbacks);} providercallbacks.loaded = function() { var p = _$('provider'); load_mISDNtrunks();}callbacks.format = function(t) { //if( t.fieldbyname['group'] && t.fieldbyname['zapchan']){ if( t.fieldbyname['group'] && t.name !='general' ){ if(GROUPS.contains(Number(t.fieldbyname['group']) )){ // what the hell, duplicate group ??? // we wish to address this situation in future }else{ GROUPS.push( Number(t.fieldbyname['group']) ); } } if(t.name.beginsWith('span_') && t.fieldbyname['signalling'].beginsWith('pri') ){ PRITRUNKS.push(t.name); return null; } if( t.name.beginsWith('span_') ){ return null; } if( InArray(dids_array, t.name) ){ // if(t.fieldbyname['zapchan']){ var s = t.fieldbyname['zapchan'].split(","); for(var u=0; u < s.length; u++){ used_fxos[s[u]] = true ; } } return t.fieldbyname['trunkname']; } return null;}callbacks.cancelnewcategory = function(){ ASTGUI.events.remove( _$('trunkstyleanalog') , 'click' , activateanalogvoip ); ASTGUI.events.remove( _$('trunkstylevoip') , 'click' , activateanalogvoip ); ASTGUI.events.remove( _$('trunkstylecustomvoip') , 'click' , activateanalogvoip ); hideSPdetails();}callbacks.cancelchanges = function(){ hideSPdetails();}callbacks.loaded = function() { var _devices = _$('devices'); _devices.disabled = true; ASTGUI.events.add( _$('new') , "click", showSPdetails ) ; loadServiceProvidersintotable(); preparemenus(); parent.loadscreen(this);}callbacks.postselect = function(){ if( _$('trunkstylecustomvoip').checked ){ // Custom VOIP var tmp = _$('trunkname').value.split("Custom - ") ; _$('customvoip_name').value = (tmp[1]) ? tmp[1] : (_$('trunkname').value) ? _$('trunkname').value : "No Comment/Trunk Name Set"; _$('customvoip_username').value = _$('username').value; _$('customvoip_secret').value = _$('secret').value; _$('customvoip_protocol').selectedIndex = ( _$('hassip').value == "yes" ) ? 1 : 0; _$('customvoip_host').value = _$('host').value; _$('customvoip_register').checked = ( _$('registeriax').value == "yes" || _$('registersip').value == "yes") ? true : false ; }else if ( _$('trunkstylevoip').checked ){ // VOIP _$('customvoip_name').value = ""; _$('customvoip_username').value = _$('username').value; _$('customvoip_secret').value = _$('secret').value; _$('customvoip_protocol').selectedIndex = 0; _$('customvoip_host').value =""; }}callbacks.delchanges = function(box, value) { deletesp_fromui(value); delete_didcontext(value); used_fxos.newvalue = ""; update_used_fxos(); var _hglobals = _$('hiddenglobals'); var oldvalue = _hglobals.stored_config.catbyname['globals'].fieldbyname[value]; if (oldvalue) { uri = build_action('delete', 0, 'globals', value, ""); apply_uri( _hglobals, uri); _hglobals.stored_config.catbyname['globals'].fieldbyname[value] = null; return true; }}callbacks.beforeSaving = function(){ var _tsv = _$('trunkstylevoip'); var _tsa = _$('trunkstyleanalog'); var _tscv = _$('trunkstylecustomvoip'); var _cv_un = _$('customvoip_username'); var _name = _$('name') ; var _dvcs_v = _$('devices').value ; var _msg1 = "When using VoIP, the username must not be empty!" ; var _msg2 = "No analog line hardware installed on the system"; var _msg3 = "When using Analog, at least one port must be selected."; var _msg4 = "Please enter a Comment for this Service Provider"; var _msg5 = "Please enter an IP for your NGT Sip Server!"; var provider_rl; var _provider_rl = _$('provider'); provider_rl = _provider_rl.stored_config.catbyname[_provider_rl.value]; /* ngt and bandwidth do not require passwords, its ip based. */ if ( _tsv.checked && !_$('username').value.length && _$('provider').value != "bandwidth" && _$('provider').value != "ngt") { gui_alert(_msg1); return false; } if ( _tsv.checked && !_$('ip').value.length && _$('provider').value == "ngt") { gui_alert(_msg5); return false; } /* If they chose ngt, and did not provide an IP address, error out. */ if(_tsv.checked && _$('provider').value == "ngt") { _$('fromuser').value = (_$('username').value) ? _$('username').value : 'NO USERNAME SPECIFIED!'; widgets['fromuser'] = _$('username'); /* Our makerequest uses this widget as its call for fromuser */ /* If provider is NGT, we need to change the host and IP right before we save, to our two input boxes, username and IP. */ _$('host').value = (_$('ip').value.length) ? _$('ip').value : 'NO IP SPECIFIED!' ; _$('insecure').value = 'very'; } if(_$('provider').value == "simplesignal" && _tsv.checked) { if(_tsv.checked) { _$('fromuser').value = _$('username').value; widgets['fromuser'] = _$('username'); /* Our makerequest uses this widget as its call for fromuser */ _$('fromdomain').value = (provider_rl.fieldbyname['host']) ? provider_rl.fieldbyname['host'] : 'type make samples in the gui source directory' ; _$('insecure').value = 'invite'; } } else { if(_tsv.checked) { _$('fromuser').value = (provider_rl.fieldbyname['fromuser']) ? provider_rl.fieldbyname['fromuser'] : '' ; _$('fromdomain').value = (provider_rl.fieldbyname['fromdomain']) ? provider_rl.fieldbyname['fromdomain'] : '' ; } } if(_$('provider').value == "VoicePulse-sip" && _tsv.checked) { /* save our fromuser field has the username field. */ _$('fromuser').value = _$('username').value; widgets['fromuser'] = _$('username'); _$('insecure').value = "very"; } if(_$('provider').value == "voilaip-sip" && _tsv.checked) { /* save our fromuser field has the username field. */ _$('fromuser').value = _$('username').value; widgets['fromuser'] = _$('username'); _$('insecure').value = "very"; _$('contact').value = _$('username').value; widgets['contact'] = _$('username'); } if ( _tsa.checked ) { var _zapchan = _$('zapchan'); if( _zapchan.options.length == 0 ){ gui_alert(_msg2); return false; } if (!_zapchan.value) { gui_alert( _msg3); return false; } } if ( _tscv.checked ) { var _csv_n = _$('customvoip_name'); if( _csv_n.value.length == 0 ){ gui_alert( _msg4); _csv_n.focus(); return false; } var _cv_h = _$('customvoip_host') ; if ( !_cv_h.value ) { gui_alert("Please enter a host name"); _cv_h.focus(); return false; } if ( !_cv_un.value ) { gui_alert("Please enter a Username"); _cv_un.focus(); return false; } } if( !_tsv.checked && !_tsa.checked && !_tscv.checked ){ gui_alert("A trunk must be Analog or VoIP or Custom VOIP"); return false; } if(_dvcs_v.length ==0 ){ try{ var _pvdr = _$('provider'); provider = _pvdr.stored_config.catbyname[_pvdr.value]; if( typeof provider.fieldbyname['trunk_username'] != "undefined" && _tsv.checked ){ _name.value = provider.fieldbyname['trunk_username']; } }catch(e){ } ifnewtrunk(); }else{ if( _$('custom_trunkname').value != _dvcs_v && _$('advanced_content').style.display == '' ){ _$('context').value = asterisk_guiTDPrefix + _$('custom_trunkname').value ; }else{ _$('context').value = asterisk_guiTDPrefix + _dvcs_v ; } } if(isnewtrunk ==1){ dids_array.push( _name.value ); }else{ if( _$('trunkstyleanalog').checked ){ used_fxos.oldvalue = _$('devices').stored_config.catbyname[_dvcs_v].fieldbyname['zapchan'] ; _$('context').value = asterisk_guiTDPrefix + _$('name').value ; var needcomma = 0 ; var count = 0 ; _$('trunkname').value = "" ; for (var x=0;x< _$('zapchan').options.length;x++) { if (_$('zapchan').options[x].selected) { if(needcomma){ _$('trunkname').value += "," } needcomma = 1 ; _$('trunkname').value += _$('zapchan').options[x].value ; count++ ; } } PORTS_toCALIBRATE.ports_string = _$('trunkname').value; used_fxos.newvalue = _$('trunkname').value; _$('trunkname').value = ((count > 1) ? "Ports ":"Port ") + _$('trunkname').value ; } old_trunkname = _dvcs_v ; if( _dvcs_v != _name.value ){ // if the trunk name is changed , change the name in dids_array for( var i=0 ; i < dids_array.length; i ++){ if( dids_array[i] == _dvcs_v ) { dids_array[i] = _name.value ; break; } } } }}callbacks.savechanges = function() { isAnalog = false; update_used_fxos(); var _hiddenglobals = _$('hiddenglobals') ; //if ( !( _$('trunkstylevoip').checked && _$('trunkstylecustomvoip').checked ) ) { isAnalog = true; } if ( _$('trunkstyleanalog').checked ) { isAnalog = true; parent.REQUIRE_RESTART = true;} if(isnewtrunk == 1){ //New Trunk created , add [DID_trunk_x] in extensions.conf add_didcontext(_$('name').value); if (_$('trunkstylevoip').checked) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -