initial import
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 1 Jan 2010 01:49:54 +0000 (01:49 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 1 Jan 2010 01:49:54 +0000 (01:49 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@79 01035d8c-6547-0410-b346-abe4f91aad63

easy-asterisk-gui/ajamdemo.html [new file with mode: 0644]
easy-asterisk-gui/get_network.sh [new file with mode: 0755]

diff --git a/easy-asterisk-gui/ajamdemo.html b/easy-asterisk-gui/ajamdemo.html
new file mode 100644 (file)
index 0000000..4b911ab
--- /dev/null
@@ -0,0 +1,321 @@
+<script src="prototype.js"></script>
+<script src="astman.js"></script>
+<link href="astman.css" media="all" rel="Stylesheet" type="text/css" />
+
+<script>
+       var logins = new Object;
+       var logoffs = new Object;
+       var channels = new Object;
+       var pongs = new Object;
+       var loggedon = -1;
+       var selectedchan = null;
+       var hungupchan = "";
+       var transferedchan = "";
+       
+       var demo = new Object;
+       
+       function loggedOn() {
+               if (loggedon == 1)
+                       return;
+               loggedon = 1;
+               updateButtons();
+               $('statusbar').innerHTML = "<i>Retrieving channel status...</i>";
+               astmanEngine.pollEvents();
+               astmanEngine.sendRequest('action=status', demo.channels);
+       }
+       
+       function clearChannelList() {
+               $('channellist').innerHTML = "<i class='light'>Not connected</i>";
+       }
+
+       function loggedOff() {
+               if (loggedon == 0)
+                       return;
+               loggedon = 0;
+               selectedchan = null;
+               updateButtons();
+               astmanEngine.channelClear();
+               clearChannelList();
+       }
+       
+       function updateButtons()
+       {
+               if ($(selectedchan)) {
+                       $('transfer').disabled = 0;
+                       $('hangup').disabled = 0;
+               } else {
+                       $('transfer').disabled = 1;
+                       $('hangup').disabled = 1;
+                       selectedchan = null;
+               }
+               if (loggedon) {
+                       $('username').disabled = 1;
+                       $('secret').disabled = 1;
+                       $('logoff').disabled = 0;
+                       $('login').disabled = 1;
+                       $('refresh').disabled = 0;
+
+                       $('static').disabled = 0;
+                       $('dhcp').disabled = 0;
+                       $('ipaddress').disabled = 0;
+                       $('netmask').disabled = 0;
+                       $('gateway').disabled = 0;
+                       $('dns').disabled = 0;
+                       $('ipapply').disabled = 0;
+
+               } else {
+                       $('username').disabled = 0;
+                       $('secret').disabled = 0;
+                       $('logoff').disabled = 1;
+                       $('login').disabled = 0;
+                       $('refresh').disabled = 1;
+
+                       $('ipaddress').value = "";
+                       $('netmask').value = "";
+                       $('gateway').value = "";
+                       $('dns').value = "";
+
+                       $('static').disabled = 1;
+                       $('dhcp').disabled = 1;
+                       $('ipaddress').disabled = 1;
+                       $('netmask').disabled = 1;
+                       $('gateway').disabled = 1;
+                       $('dns').disabled = 1;
+                       $('ipapply').disabled = 1;
+               }
+       }
+       
+       demo.channelCallback = function(target) {
+               selectedchan = target;
+               updateButtons();
+       }
+       
+       demo.channels = function(msgs) {
+               resp = msgs[0].headers['response'];
+               if (resp == "Success") {
+                       loggedOn();
+               } else
+                       loggedOff();
+
+               for (i=1;i<msgs.length - 1;i++) 
+                       astmanEngine.channelUpdate(msgs[i]);
+               $('channellist').innerHTML = astmanEngine.channelTable(demo.channelCallback);
+               $('statusbar').innerHTML = "Ready";
+       }
+
+       demo.logins = function(msgs) {
+               $('statusbar').innerHTML = msgs[0].headers['message'];
+               resp = msgs[0].headers['response'];
+               if (resp == "Success") {
+                       loggedOn();
+                       doGetIP();
+                       }
+               else
+                       loggedOff();
+       };
+       
+       
+       demo.logoffs = function(msgs) {
+               $('statusbar').innerHTML = msgs[0].headers['message'];
+               loggedOff();
+       };
+
+       demo.system = function(msgs) {
+               $('statusbar').innerHTML = msgs[0].headers['message'];
+       };
+
+       demo.setstaticip = function(msgs) {
+               $('statusbar').innerHTML = msgs[0].headers['message'];
+       };
+
+       demo.getip = function(msgs) {
+               //$('statusbar').innerHTML = msgs[0].headers['message'];
+                //var n = msgs[0].names[3];
+               //$('statusbar').innerHTML = msgs[0].headers[n];
+               for (x=0;x<msgs[0].names.length;x++) {
+                 var line = msgs[0].headers[msgs[0].names[x]];
+                 line = line.toLowerCase();
+                 line = line.replace(/\"/g,"");
+                 line = line.replace(" ","");
+                 var split_line = line.split('=');
+                 if (split_line[0]=="dhcp") {
+                   if (split_line[1]=="yes") {
+                       $('dhcp').click();
+                        // grey out static IP fields but still load them
+                        // with values dhcp has set up
+                       $('ipaddress').disabled = 1;
+                       $('netmask').disabled = 1;
+                       $('gateway').disabled = 1;
+                       $('dns').disabled = 1;
+                   }
+                    else
+                       $('static').click();    
+                 }
+                 if (split_line[0]=="ipaddress") {
+                   $('ipaddress').value = split_line[1];
+                 }
+                 if (split_line[0]=="netmask") {
+                   $('netmask').value = split_line[1];
+                 }
+                 if (split_line[0]=="gateway") {
+                   $('gateway').value = split_line[1];
+                 }
+                 if (split_line[0]=="dns") {
+                   $('dns').value = split_line[1];
+                 }
+                 $('statusbar').innerHTML = split_line;
+               }
+
+       };
+
+       demo.hungup = function(msgs) {
+               $('statusbar').innerHTML = "Hungup " + hungupchan;
+       }
+       
+       demo.transferred = function(msgs) {
+               $('statusbar').innerHTML = "Transferred " + transferredchan;
+       }
+
+       function doHangup() {
+               hungupchan = selectedchan;
+               astmanEngine.sendRequest('action=hangup&channel=' + selectedchan, demo.hungup);
+       }
+
+       function doStatus() {
+               $('statusbar').innerHTML = "<i>Updating channel status...</i>";
+               astmanEngine.channelClear();
+               astmanEngine.sendRequest('action=status', demo.channels);
+       }       
+               
+       function doLogin() {
+               $('statusbar').innerHTML = "<i>Logging in...</i>";
+               astmanEngine.sendRequest('action=login&username=' + $('username').value + "&secret=" + $('secret').value, demo.logins);
+       }
+       
+       function doTransfer() {
+               var channel = astmanEngine.channelInfo(selectedchan);
+               var exten = prompt("Enter new extension for " + selectedchan);
+               var altchan;
+               if (exten) {
+                       if (channel.link) {
+                               if (confirm("Transfer " + channel.link + " too?"))
+                                       altchan = channel.link;
+                       }
+                       if (altchan) {
+                               transferredchan = selectedchan + " and " + altchan + " to " + exten;
+                               astmanEngine.sendRequest('action=redirect&channel=' + selectedchan + "&priority=1&extrachannel=" + altchan + "&exten=" + exten, demo.transferred);
+                       } else {
+                               transferredchan = selectedchan + " to " + exten;
+                               astmanEngine.sendRequest('action=redirect&channel=' + selectedchan + "&priority=1&exten=" + exten, demo.transferred);
+                       }
+               }
+       }
+       
+       function doLogoff() {
+               $('statusbar').innerHTML = "<i>Logging off...</i>";
+               astmanEngine.sendRequest('action=logoff', demo.logoffs);
+       }
+       
+       function doSystem() {
+               $('statusbar').innerHTML = "<i>System Call...</i>";
+               astmanEngine.sendRequest('action=originate&channel=Local%2Fexecutecommand%40default&Variable=command%3d%2Froot%2Fsys.sh%20myarg&application=noop&60000', demo.system);
+       }
+       
+       function doStaticIP() {
+               $('statusbar').innerHTML = "<i>Set Static IP...</i>";
+               astmanEngine.sendRequest('action=originate&channel=Local%2Fexecutecommand%40default&Variable=command%3d%2Froot%2Fset_static_ip.sh%20' + $('staticip').value + '&application=noop&60000', demo.setstaticip);
+       }
+
+       function doGetIP() {
+               $('statusbar').innerHTML = "<i>Get Static IP...</i>";
+               astmanEngine.sendRequest('action=getconfig&filename=network.conf',demo.getip);
+       }
+
+       demo.pongs  = function(msgs) {
+               resp = msgs[0].headers['response'];
+               if (resp == "Pong") {
+                       $('statusbar').innerHTML = "<i>Already connected...</i>";
+                       loggedOn();
+               } else {
+                       $('statusbar').innerHTML = "<i>Please login...</i>";
+                       loggedOff();
+               }
+       }
+       
+       demo.eventcb = function(msgs) {
+               var x;
+               if (loggedon) {
+                       for (i=1;i<msgs.length - 1;i++) {
+                               astmanEngine.channelUpdate(msgs[i]);
+                       }
+                       $('channellist').innerHTML = astmanEngine.channelTable(demo.channelCallback);
+                       astmanEngine.pollEvents();
+               }
+               updateButtons();
+       }
+       
+       function localajaminit() {
+               astmanEngine.setURL('../rawman');
+               astmanEngine.setEventCallback(demo.eventcb);
+               //astmanEngine.setDebug($('ditto'));
+               clearChannelList();
+               astmanEngine.sendRequest('action=ping', demo.pongs);
+       }
+</script>
+
+<title>Asterisk&trade; AJAM Demo</title>
+<body onload="localajaminit()">
+<table align="center" width=600>
+<tr valign="top"><td>
+<table align="left">
+<tr><td colspan="2"><h2>Asterisk&trade; AJAM Demo</h2></td>
+<tr><td>Username:</td><td><input id="username"></td></tr>
+<tr><td>Secret:</td><td><input type="password" id="secret"></td></tr>
+       <tr><td colspan=2 align="center">
+         <div id="statusbar">
+               <span style="margin-left: 4px;font-weight:bold">&nbsp;</span>
+         </div>
+       </td></tr>
+
+       <tr><td><input type="submit" id="login" value="Login" onClick="doLogin()"></td>
+       <td><input type="submit" id="logoff" value="Logoff" disabled=1 onClick="doLogoff()"></td></tr>
+</table>
+</td><td valign='bottom'>
+<table>
+<div style="margin-left:10;margin-right:50;margin-top:10;margin-bottom:20">
+<i>This is a demo of the Asynchronous Javascript Asterisk Manager interface.  You can login with a
+valid, appropriately permissioned manager username and secret.</i>
+</div>
+<tr>
+       <td><input type="submit" onClick="doStatus()" id="refresh" value="Refresh"></td>
+       <td><input type="submit" onClick="doTransfer()" id="transfer" value="Transfer..."></td>
+       <td><input type="submit" onClick="doHangup()" id="hangup" value="Hangup"></td>
+       <td><input type="submit" onClick="doSystem()" id="system" value="System"></td>
+       <td><input type="submit" onClick="doGetIP()" id="getIP" value="Get IP"></td>
+</tr>
+</table>
+</td></tr>
+
+<tr>
+  <tr>
+     <td><input type="radio" id="static" name="staticdhcp" disabled=1>Static</td>
+     <td><input type="radio" id="dhcp" name="staticdhcp" disabled=1>DHCP</td>
+  </tr>
+  <tr><td>IP Address:</td><td><input id="ipaddress" disabled=1></td></tr>
+  <tr><td>Netmask:</td><td><input id="netmask" disabled=1></td></tr>
+  <tr><td>Gateway:</td><td><input id="gateway" disabled=1 ></td></tr>
+  <tr><td>DNS:</td><td><input id="dns" disabled=1></td></tr>
+  <tr><td><input type="submit" id="ipapply" value="Apply" disabled=1 onClick="doIPApply()"></td></tr>
+</tr>
+
+<tr><td colspan=2>
+               <div id="channellist" class="chanlist">
+               </div>
+       </td></tr>
+<tr><td align="center" colspan=2>
+       <font size=-1><i>
+               Copyright (C) 2006 Digium, Inc.  Asterisk and Digium are trademarks of Digium, Inc.
+       </i></font>
+</td></tr>
+</table>
+</body>
diff --git a/easy-asterisk-gui/get_network.sh b/easy-asterisk-gui/get_network.sh
new file mode 100755 (executable)
index 0000000..f4d7262
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/sh -x
+# get_network.sh
+#
+# Extracts network config into /etc/asterisk/network.conf in a form
+# that the AJAM getconfig can read.
+
+F="/etc/asterisk/network.conf"
+echo "[network]" > $F
+
+if [ -f /etc/rc.d/S10network ]; then
+  echo "dhcp=yes" >> $F  
+  tmpipaddr=`ifconfig eth0 | sed -n 's/.*inet addr:\(.*\)\s*Bcast.*/\1/p'`
+  tmpnetmask=`ifconfig eth0 | sed -n 's/.*Mask:\(.*\)\s*/\1/p'`
+  tmpgateway=`route -n | awk '/^0.0.0.0/ {print $2}'`
+  tmpdns=`cat /etc/resolv.conf | awk '/^nameserver/ {print $2}'`
+  echo "ipaddress=$tmpipaddr" >> $F
+  echo "netmask=$tmpnetmask" >> $F
+  echo "gateway=$tmpgateway" >> $F
+  echo "dns=$tmpdns" >> $F
+fi
+
+if [ -f /etc/rc.d/S10network-static ]
+then
+  echo "dhcp=no" >> $F
+  
+  tmpipaddr=`sed -n 's/IPADDRESS="\(.*\)"/\1/p' /etc/init.d/network-static`
+  tmpnetmask=`sed -n 's/NETMASK="\(.*\)"/\1/p' /etc/init.d/network-static`
+  tmpgateway=`sed -n 's/GATEWAY="\(.*\)"/\1/p' /etc/init.d/network-static`
+  tmpdns=`sed -n 's/DNS="\(.*\)"/\1/p' /etc/init.d/network-static`
+  echo "ipaddress=$tmpipaddr" >> $F
+  echo "netmask=$tmpnetmask" >> $F
+  echo "gateway=$tmpgateway" >> $F
+  echo "dns=$tmpdns" >> $F          
+fi