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>" 
+					+ "&nbsp;&nbsp;|&nbsp;&nbsp;<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();" >&nbsp;<img src="images/refresh.png" title=" Refresh " border=0 >&nbsp;</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;">
+			&nbsp;&nbsp;<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();">&nbsp;&nbsp;
+			<input type="button" id="cancel_a" value="Cancel" onclick="canelIaxyInfo();">
+		</TD>
+	</TR>
+	</TABLE>
+</div>
+</body>
+




More information about the asterisk-gui-commits mailing list