screen to set IP, but has problems with more than one event arriving
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 3 Jan 2010 05:55:47 +0000 (05:55 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 3 Jan 2010 05:55:47 +0000 (05:55 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@82 01035d8c-6547-0410-b346-abe4f91aad63

easy-asterisk-gui/index.html [new file with mode: 0644]

diff --git a/easy-asterisk-gui/index.html b/easy-asterisk-gui/index.html
new file mode 100644 (file)
index 0000000..e6e078d
--- /dev/null
@@ -0,0 +1,379 @@
+<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 script_path = "/var/lib/asterisk/scripts/";
+
+       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;
+                       $('networkapply').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;
+                       $('networkapply').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();
+                       $('channellist').innerHTML += 'demo.logins<br>';
+                        doGetIP1();
+                       }
+               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.getIP2 = function(msgs) {
+               $('channellist').innerHTML += 'demo.getIP2<br>';
+                //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.networkApply = function(msgs) {
+               $('statusbar').innerHTML = msgs[0].headers['message'];
+        }
+
+       demo.transferred = function(msgs) {
+               $('statusbar').innerHTML = "Transferred " + transferredchan;
+       }
+
+       demo.getIP1  = function(msgs) {
+               //astmanEngine.sendRequest('action=getconfig&filename=network.conf',demo.getip);
+               $('channellist').innerHTML += 'demo.getIP1<br>';
+               astmanEngine.sendRequest('action=getconfig&filename=network.conf', demo.getIP2);
+        }
+
+
+       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 doNetworkApply() {
+               $('statusbar').innerHTML = "<i>Set Network...</i>";
+
+               cmd = script_path + 'set_network.sh ';
+
+               if ($('dhcp').checked)
+                 cmd += 'yes';
+                else
+                  cmd += 'no ' + $('ipaddress').value + ' ' + $('netmask').value  + ' ' 
+                      + $('gateway').value  + ' ' + $('dns').value; 
+
+               url = 'action=originate&channel=' + encodeURIComponent('Local/executecommand@default') + '&' +
+                      'Variable=' + encodeURIComponent('command=' + cmd) + '&application=noop&60000';
+               
+               $('statusbar').innerHTML = cmd;
+               astmanEngine.sendRequest(url, demo.networkApply)
+       }
+
+       function doGetIP2() {
+               $('channellist').innerHTML += 'doGetIP2<br>';
+               astmanEngine.sendRequest('action=getconfig&filename=network.conf',demo.getIP2);
+       }
+
+       function doGetIP1() {
+               $('channellist').innerHTML += 'doGetIP1<br>';
+               cmd = script_path + 'get_network.sh';
+               url = 'action=originate&channel=' + encodeURIComponent('Local/executecommand@default') + '&' +
+                      'Variable=' + encodeURIComponent('command=' + cmd) + '&application=noop&60000';          
+               astmanEngine.sendRequest(url,demo.getIP1);
+       }
+
+       function doStatic() {
+               $('ipaddress').disabled = 0;
+               $('netmask').disabled = 0;
+               $('gateway').disabled = 0;
+               $('dns').disabled = 0;
+        }
+
+       function doDHCP() {
+               $('ipaddress').disabled = 1;
+               $('netmask').disabled = 1;
+               $('gateway').disabled = 1;
+               $('dns').disabled = 1;
+        }
+
+       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);
+                       /*
+                       for (i=0;i<msgs.length;i++) {
+                               for(j=0;j<msgs[i].names.length;j++) {
+                                 nm = msgs[i].names[j];
+                                 $('channellist').innerHTML += nm + '=' + msgs[i].headers[nm] + ', ';
+                                 $('channellist').innerHTML += '<br>';
+                               }
+                               $('channellist').innerHTML += '<br>';
+                       }
+                       */
+                       astmanEngine.pollEvents();
+               }
+               updateButtons();
+       }
+       
+       function localajaminit() {
+               astmanEngine.setURL('../rawman');
+               astmanEngine.setEventCallback(demo.eventcb);
+               //astmanEngine.setDebug($('ditto'));
+               clearChannelList();
+               astmanEngine.sendRequest('action=ping', demo.pongs);
+       }
+</script>
+
+<title>Easy Asterisk&trade; GUI</title>
+<body onload="localajaminit()">
+<table align="center" width=600>
+<tr valign="top"><td>
+<table align="left">
+<tr><td colspan="2"><h2>Easy Asterisk&trade; GUI</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></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="doGetIP1()" id="getIP1" value="Get IP 1"></td>
+       <td><input type="submit" onClick="doGetIP2()" id="getIP2" value="Get IP 2"></td>
+</tr>
+</table>
+</td></tr>
+
+<tr>
+  <tr>
+     <td><input type="radio" id="static" name="staticdhcp" disabled=1 onClick="doStatic()">Static</td>
+     <td><input type="radio" id="dhcp" name="staticdhcp" disabled=1 onClick="doDHCP()">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="networkapply" value="Apply" disabled=1 onClick="doNetworkApply()"></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>