pari: branch asterisknow r2198 - /branches/asterisknow/config/
SVN commits to the Asterisk-GUI project
asterisk-gui-commits at lists.digium.com
Thu Jan 24 16:12:12 CST 2008
Author: pari
Date: Thu Jan 24 16:12:12 2008
New Revision: 2198
URL: http://svn.digium.com/view/asterisk-gui?view=rev&rev=2198
Log:
New Feature: iaxy provisioning from the gui.
Some fine tunining is still needed,
but commiting to save what has been done so far.
Added:
branches/asterisknow/config/iaxyprov.html
Modified:
branches/asterisknow/config/cfgbasic.html
Change Statistics:
0 files changed
Modified: branches/asterisknow/config/cfgbasic.html
URL: http://svn.digium.com/view/asterisk-gui/branches/asterisknow/config/cfgbasic.html?view=diff&rev=2198&r1=2197&r2=2198
==============================================================================
--- branches/asterisknow/config/cfgbasic.html (original)
+++ branches/asterisknow/config/cfgbasic.html Thu Jan 24 16:12:12 2008
@@ -236,6 +236,7 @@
newpanel( ["Call Queues", "queues.html", "Call queues allow calls to be sequenced to one or more agents."]);
newpanel( ["Service Providers", "trunks.html", "Service Providers are outbound lines used to allow the system to make calls to the real world. Trunks can be VoIP lines or traditional telephony lines."]);
newpanel( ["Setup Hardware", "digital.html", "Configure & setup your T1/E1/Analog Cards."]);
+ //newpanel( ["Manage IAXys", "iaxyprov.html", "(beta) Provision your IAXys."]);
newpanel( ["mISDN Config", "misdn.html", "mISDN configuration from the asterisk GUI"]); // Uncomment when mISDN is completed.
newpanel( ["Calling Rules", "numberplan.html", "The Calling Rules define dialing permissions and least cost routing rules."]);
newpanel( ["Incoming Calls", "incoming.html", "Define how your incoming calls should be handled & configure DID (Direct inward Dialing)"]);
Added: branches/asterisknow/config/iaxyprov.html
URL: http://svn.digium.com/view/asterisk-gui/branches/asterisknow/config/iaxyprov.html?view=auto&rev=2198
==============================================================================
--- branches/asterisknow/config/iaxyprov.html (added)
+++ branches/asterisknow/config/iaxyprov.html Thu Jan 24 16:12:12 2008
@@ -1,0 +1,344 @@
+<!--
+ * Asterisk-GUI - an Asterisk configuration interface
+ *
+ * IAXys - provisioning and setup from the gui
+ *
+ * Copyright (C) 2006-2008, Digium, Inc.
+ *
+ * Pari Nannapaneni <pari at digium.com>
+ *
+ *
+ * See http://www.asterisk.org for more information about
+ * the Asterisk project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE file
+ * at the top of the source tree.
+ *
+ -->
+<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" />
+<style>
+
+ #iaxytable {
+ border: 1px solid #666666;
+ margin-top:40px;
+ margin-bottom:10px;
+ }
+
+ #iaxytable tr.frow {
+ background-color: #6b79a5;
+ color: #CED7EF;
+ }
+
+ #iaxytable tr.even {
+ background-color: #DFDFDF;
+ }
+
+ #iaxytable tr.odd{
+ background-color: #FFFFFF;
+ }
+
+ #iaxytable tr.even:hover, #iaxytable tr.odd:hover {
+ background-color: #a8b6e5;
+ }
+
+</style>
+<script>
+var IAXYS = {};
+var USERS = {};
+var CURRENT_IAXY ; // store the iaxy sno being edited
+
+var addnew_iaxy_dialog = function(){
+ _$('iaxsrl').style.display = '';
+ CURRENT_IAXY = 'new';
+ _$('editiaxy_sno').innerHTML = ' Add IAXy ';
+ _$('editiaxy_server').value = '' ;
+ _$('editiaxy_serial').value = '' ;
+ _$('editiaxy_username').selectedIndex = -1 ;
+ _$('editiaxy_password').innerHTML = '' ;
+ _$('editiaxy_port').value = '4569' ;
+ _$('editiaxy_codec').selectedIndex = 0 ;
+ _$('edit_iaxy').style.display = '';
+ _$('bg_transparent').style.display = '';
+}
+
+
+var parseIaxProv = function(iprv){
+ (function(){
+ /*
+ // iaxprov.conf is parsed into IAXYS object as below.
+ IAXYS = {
+ si-000364000126:{
+ server: '192.168.69.3',
+ altserver: '192.168.69.4',
+ user: 'username',
+ pass: 'password',
+ port: '4569',
+ codec: 'ulaw', // adpcm
+ flags: 'register,heartbeat'
+ }
+ }
+ */
+ for(var d in iprv){if(iprv.hasOwnProperty(d)){
+ if( !d.beginsWith('si-') ){ continue; }
+ if( !IAXYS.hasOwnProperty(d) ){ IAXYS[d] = {} ; }
+ var f = iprv[d];
+ for(var e in f){ if(f.hasOwnProperty(e)){
+ IAXYS[d][e] = f[e] ;
+ }}
+ }}
+ })();
+ config2json('users.conf', 1 , parseUsers );
+}
+
+
+var parseUsers = function(users){
+ // store all local usernames and passwords in USERS object
+ // ex: USERS = { '6000':'password_600', 'user2':'password_user2' };
+ (function(){
+ for(var d in users ){ if( users.hasOwnProperty(d) ) {
+ if(d == 'general' || d.beginsWith('trunk_') || d.beginsWith('span_') ) { continue; }
+ if( !users[d].hasOwnProperty('hasiax') || users[d]['hasiax'] != 'yes' ) { continue; }
+ USERS[d] = ( users[d].hasOwnProperty('secret') ) ? users[d]['secret'] : '';
+ ASTGUI.selectbox.append(_$('editiaxy_username'),d, d);
+ }}
+ })();
+ showtable() ;
+ parent.loadscreen(this);
+}
+
+
+var updateIaxyInfo = function(){
+
+ var after = function(){
+ setTimeout( function(){window.location.reload();}, 500 );
+ };
+
+ if( CURRENT_IAXY == 'new' ){
+ var new_iaxy = 'si-' + _$('editiaxy_serial').value;
+ var uname = _$('editiaxy_username').value ;
+ var chs = new listOfActions();
+ chs.filename('iaxprov.conf');
+ chs.build_action('newcat', 0 , new_iaxy , '' , '' );
+ chs.build_action('update', 0 , new_iaxy , 'server' , _$('editiaxy_server').value );
+ chs.build_action('update', 0 , new_iaxy , 'user' , uname);
+ chs.build_action('update', 0 , new_iaxy , 'pass' , USERS[uname] );
+ chs.build_action('update', 0 , new_iaxy , 'port' , _$('editiaxy_port').value );
+ chs.build_action('update', 0 , new_iaxy , 'codec' , _$('editiaxy_codec').value );
+ chs.build_action('update', 0 , new_iaxy , 'flags' , 'register,heartbeat' );
+ chs.callActions(after);
+ return;
+ }
+
+ var uname = _$('editiaxy_username').value ;
+ var chs = new listOfActions();
+ chs.filename('iaxprov.conf');
+ chs.build_action('update', 0 , CURRENT_IAXY , 'server' , _$('editiaxy_server').value );
+ chs.build_action('update', 0 , CURRENT_IAXY , 'user' , uname);
+ chs.build_action('update', 0 , CURRENT_IAXY , 'pass' , USERS[uname] );
+ chs.build_action('update', 0 , CURRENT_IAXY , 'port' , _$('editiaxy_port').value );
+ chs.build_action('update', 0 , CURRENT_IAXY , 'codec' , _$('editiaxy_codec').value );
+ chs.callActions(after);
+}
+
+
+var canelIaxyInfo = function(){
+ _$('edit_iaxy').style.display = 'none';
+ _$('bg_transparent').style.display = 'none';
+}
+
+
+var editIAXY = function(a){
+ _$('iaxsrl').style.display = 'none';
+ var ix = 'si-' + a ;
+ CURRENT_IAXY = ix;
+ _$('editiaxy_sno').innerHTML = ' IAXy : ' + a ;
+ _$('editiaxy_server').value = IAXYS[ix]['server'] ;
+ ASTGUI.selectbox.selectOption( _$('editiaxy_username') , IAXYS[ix]['user'] );
+
+ if ( !USERS.hasOwnProperty( IAXYS[ix]['user'] ) ) {
+ _$('editiaxy_password').innerHTML = '' ;
+ }else{
+ _$('editiaxy_password').innerHTML = ( IAXYS[ix]['pass'] == USERS[IAXYS[ix]['user']] ) ? IAXYS[ix]['pass'] : '<font color=red><strike><B>' + IAXYS[ix]['pass'] + '</B></strike></font> <BR> Click \'Update\' button below to update password' ;
+ }
+
+ _$('editiaxy_port').value = IAXYS[ix]['port'] ;
+ ASTGUI.selectbox.selectOption( _$('editiaxy_codec') , IAXYS[ix]['codec'] );
+ _$('bg_transparent').style.display = '';
+ _$('edit_iaxy').style.display = '';
+}
+
+var deleteIAXY = function(a){
+ if(!confirm("Delete IAXy '" + a + "' ?")){ return true; }
+
+ var uri = build_action('delcat', 0, 'si-' + a , '' , '');
+ makerequest('u', 'iaxprov.conf' , uri , function(t) {
+ gui_feedback("Iaxy \"" + a + "\" deleted !",'blue');
+ setTimeout( function(){window.location.reload();}, 500 );
+ });
+}
+
+function showtable(){ // navigates through the IAXYS object and presents as a table
+ var tbl = _$('iaxytable') ;
+ var add_fRow = function(){
+ var newRow = tbl.insertRow(-1);
+ newRow.className = "frow";
+
+ var newCell0 = newRow.insertCell(0);
+ newCell0.innerHTML = "IAXy Serial";
+
+ var newCell1 = newRow.insertCell(1);
+ newCell1.innerHTML = "User";
+
+ var newCell2 = newRow.insertCell(2);
+ newCell2.innerHTML = "password";
+
+ var newCell3 = newRow.insertCell(3);
+ newCell3.innerHTML = "Codec" ;
+ newCell3.align = "center";
+
+ var newCell4 = newRow.insertCell(4);
+ newCell4.innerHTML = "Server" ;
+ newCell4.align = "center";
+
+ var newCell5 = newRow.insertCell(5);
+ newCell5.innerHTML = "" ;
+ };
+
+ var addrow_totable = function(iaxy_sno, iaxy_data){
+ var newRow = tbl.insertRow(-1);
+ newRow.className = ((tbl.rows.length)%2==1)?"odd":"even";
+
+ var newCell0 = newRow.insertCell(0);
+ newCell0.innerHTML = '<B>' + iaxy_sno + '</B>' ;
+ newCell0.align = "center";
+
+ var newCell1 = newRow.insertCell(1);
+ newCell1.innerHTML = (USERS.hasOwnProperty( iaxy_data['user'] ))? iaxy_data['user']: '<font color=red>' + iaxy_data['user'] + '?</font>' ;
+ newCell1.align = "center";
+
+ var newCell2 = newRow.insertCell(2);
+ newCell2.innerHTML = ( iaxy_data['pass'] == USERS[iaxy_data['user']] ) ? iaxy_data['pass'] : '<font color=red><strike><B>' + iaxy_data['pass'] + '</B></strike></font>';
+
+ var newCell3 = newRow.insertCell(3);
+ newCell3.innerHTML = iaxy_data['codec'] ;
+ newCell3.align = "center";
+
+ var newCell4 = newRow.insertCell(4);
+ newCell4.innerHTML = iaxy_data['server'] ;
+ newCell4.align = "center";
+
+ var newCell5 = newRow.insertCell(5);
+ newCell5.innerHTML = "<span class=\"downbutton\" onclick=\"editIAXY( '"+ iaxy_sno + "');\">Edit</span>"
+ + " | <span class=\"downbutton\" onclick=\"deleteIAXY( '"+ iaxy_sno + "');\">Delete</span>";
+ newCell5.style.width = 90;
+ newCell5.align = "center";
+ };
+
+ ASTGUI.domActions.clear_table(tbl);
+ add_fRow();
+ for(var d in IAXYS){if(IAXYS.hasOwnProperty(d)){
+ addrow_totable(d.substr(3),IAXYS[d]);
+ }}
+
+ if( tbl.rows.length == 1 ){
+ tbl.innerHTML = "<tr><td align=center height=50 valign=middle>No IAXys configured !! </td></tr>";
+ }
+
+}
+
+window.onload = function(){
+ // parse iaxprov.conf and show all contexts in the format 'si-xxx' format
+ // load list of users/passwords from users.conf
+ //
+ ASTGUI.events.add( _$('editiaxy_username'), "change", function(){
+ try{ _$('editiaxy_password').innerHTML = USERS[_$('editiaxy_username').value] ; }catch(err){ }
+ });
+
+ top._$('mainscreen').width= 798 ;
+ config2json('iaxprov.conf', 1, parseIaxProv );
+
+}
+
+
+window.onunload = function(){
+ top._$('mainscreen').width= 540 ;
+}
+
+
+</script>
+<body bgcolor="#EFEFEF">
+<div style="font-size : 12px; padding : 4px 6px 4px 6px; border-style : solid none solid none; border-top-color : #BDC7E7; border-bottom-color : #182052; border-width : 1px 0px 1px 0px; background-color : #ef8700; color : #ffffff;">
+ <span style="margin-left: 4px;font-weight:bold;">IAXy Configuration (beta)</span>
+ <span style="cursor: pointer; cursor: hand;" onclick="window.location.reload();" > <img src="images/refresh.png" title=" Refresh " border=0 > </span>
+</div>
+
+<table id="iaxytable" cellpadding=5 cellspacing=1 border=0 align=center width=480></table>
+
+<table align=center border=0><tr><td>
+ <BR>
+ <input type=button onclick='addnew_iaxy_dialog();' value='Add IAXy'>
+</td></tr></table>
+
+<div id="bg_transparent" STYLE="display:none; position: absolute; left: 0; top: 0; width:100%; height:100%; background-color:#FFFFFF; filter:alpha(opacity=50); -moz-opacity:.50;opacity:.50; border-width: 0px; z-index:4">
+</div>
+
+<div id="edit_iaxy" STYLE=" display:none; position: absolute; left: 30; top: 40; width:500; height:250; background-color:#F4EFE5; border-width: 1px; border-color: #7E5538; border-style: solid; z-index:5">
+ <table width="100%" cellpadding=0 cellspacing=0 onmousedown="ASTGUI.startDrag(event , 'edit_iaxy');">
+ <TR bgcolor="#7E5538" style="background-image:url('images/title_gradient.gif');">
+ <TD Height="20" align="center" style="cursor: move">
+ <font style="color:#FFFFFF; font-size: 12px; font-weight:bold;">
+ <span id="editiaxy_sno"></span>
+ </font>
+ </TD>
+ <TD Height="20" align="right" style="cursor: move" width=20>
+ <A href="#" onclick="$('cancel_a').click();"><font style="color:#FFFFFF; font-size: 12px; font-weight:bold;">X</font></A>
+ </TD>
+ <TD width=4></TD>
+ </TR>
+ </table>
+
+ <TABLE align=center cellpadding=2 cellspacing=2 border=0>
+ <TR> <TD height=10 colspan=2></TD> </TR>
+ <TR id='iaxsrl'>
+ <TD align="right">Serial :</TD>
+ <TD><input id="editiaxy_serial" size=14></TD>
+ </TR>
+ <TR> <TD align="right">Server :</TD>
+ <TD><input id="editiaxy_server" size=14></TD>
+ </TR>
+ <TR> <TD align="right">Username:</TD>
+ <TD> <select id="editiaxy_username"></select> </TD>
+ </TR>
+
+ <TR> <TD align="right" valign=top>Password:</TD>
+ <TD> <span id="editiaxy_password"></span></TD>
+ </TR>
+
+ <TR> <TD align="right">Port:</TD>
+ <TD> <input id="editiaxy_port" size=14> </TD>
+ </TR>
+
+ <TR> <TD align="right">Codec:</TD>
+ <TD> <select id="editiaxy_codec">
+ <option value='ulaw'>ulaw</option>
+ <option value='adpcm'>adpcm</option>
+ </select>
+ </TD>
+ </TR>
+
+ <TR> <TD colspan=2 align=center height=50 valign=middle>
+ <input type="button" id="save_a" value="Update" onclick="updateIaxyInfo();">
+ <input type="button" id="cancel_a" value="Cancel" onclick="canelIaxyInfo();">
+ </TD>
+ </TR>
+ </TABLE>
+</div>
+</body>
+
More information about the asterisk-gui-commits
mailing list