part way thru implementing ip network screen, field validation works
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 3 Jan 2010 22:01:41 +0000 (22:01 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 3 Jan 2010 22:01:41 +0000 (22:01 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@84 01035d8c-6547-0410-b346-abe4f91aad63

easy-asterisk-gui/Makefile
easy-asterisk-gui/ajamindex.html [new file with mode: 0644]
easy-asterisk-gui/easy.js [new file with mode: 0644]
easy-asterisk-gui/index.html [deleted file]
easy-asterisk-gui/set_network.sh
easy-asterisk-gui/test.sh [new file with mode: 0644]

index 8219ea80e9e0ad25d5ee78252a717671485935e0..42de4ab875361abf678b4c4da7e17726d76c358f 100644 (file)
@@ -4,6 +4,9 @@
 
 TESTIP=192.168.1.150
 
+#test:
+#      rcp set_network.sh get_network.sh root@$(TESTIP):/var/lib/asterisk/scripts
+#      rcp index.html root@$(TESTIP):/var/lib/asterisk/static-http/
+
 test:
-       rcp set_network.sh get_network.sh root@$(TESTIP):/var/lib/asterisk/scripts
-       rcp index.html root@$(TESTIP):/var/lib/asterisk/static-http/
+       rcp test.sh test1.sh easy.js easy1.js set_network.sh root@$(TESTIP):/www/cgi-bin
diff --git a/easy-asterisk-gui/ajamindex.html b/easy-asterisk-gui/ajamindex.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>
diff --git a/easy-asterisk-gui/easy.js b/easy-asterisk-gui/easy.js
new file mode 100644 (file)
index 0000000..6f9690d
--- /dev/null
@@ -0,0 +1,67 @@
+var script_path = "cgi-bin/";
+
+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;
+}
+
+// http://moblog.bradleyit.com/2009/06/javascript-ip-address-validation.html
+
+function isIP(obj) {
+    var ary = obj.value.split(".");
+    var ip = true;
+
+    for (var i=0; i<4; i++) { 
+       ip = (!ary[i].match(/^\d{1,3}$/) || (Number(ary[i]) > 255)) ? false : ip; 
+    } 
+  
+    if (ip)
+       ip = (ary.length == 4); 
+
+    if (!ip) {    
+       // the value is NOT a valid IP address
+       obj.style.background = "red";
+       obj.select();
+    } 
+    else { obj.style.background = ""; } // the value IS a valid IP address
+
+    return ip;
+}
+
+function validateForm(thisForm) {
+    var valid = true;
+
+    with (thisForm) {
+       valid = isISP(ipaddress);
+    }
+
+    return !valid;
+}
+
+function localInit() {
+
+    if (init_dhcp == "yes") {
+       $('dhcp').checked = true;
+    }
+    else {
+       $('static').checked = true;
+       $('ipaddress').disabled = 0;
+       $('netmask').disabled = 0;
+       $('gateway').disabled = 0;
+       $('dns').disabled = 0;
+    }
+    $('ipaddress').value = init_ipaddress;
+    $('netmask').value = init_netmask;
+    $('gateway').value = init_gateway;
+    $('dns').value = init_dns;
+    $('networkapply').disabled = 0;    
+}
diff --git a/easy-asterisk-gui/index.html b/easy-asterisk-gui/index.html
deleted file mode 100644 (file)
index e6e078d..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-<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>
index 53a74e834d81b00b5ba6e7ed2ae51f6509b10560..95a6b7611294a71cac4254a65016ba1f42ceac62 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/sh -x
+#!/bin/sh
 # set_network.sh
 #
 # A system call from AJAM/Asterisk sets the network parameters of an IP0X using
@@ -8,6 +8,16 @@
 
 echo `date` " set_network.sh $1 $2 $3 $4 $5" >> /tmp/easy_gui.log
 
+cat << EOF
+<html>
+EOF
+env
+cat <<EOF
+</html>
+EOF
+
+exit
+
 if [ $1 == "yes" ]; then
 
   # DHCP
diff --git a/easy-asterisk-gui/test.sh b/easy-asterisk-gui/test.sh
new file mode 100644 (file)
index 0000000..7a63348
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+echo `date` " get_network.sh" >> /tmp/easy_gui.log
+
+if [ -f /etc/rc.d/S10network ]; then
+  dhcp=yes
+  ipaddress=`ifconfig eth0 | sed -n 's/.*inet addr:\(.*\)  Bcast.*/\1/p'`
+  netmask=`ifconfig eth0 | sed -n 's/.*Mask:\(.*\)\s*/\1/p'`
+  gateway=`route -n | awk '/^0.0.0.0/ {print $2}'`
+  dns=`cat /etc/resolv.conf | awk '/^nameserver/ {print $2}'`
+fi
+
+if [ -f /etc/rc.d/S10network-static ]
+then
+  dhcp=no  
+  ipaddress=`sed -n 's/IPADDRESS="\(.*\)"/\1/p' /etc/init.d/network-static`
+  netmask=`sed -n 's/NETMASK="\(.*\)"/\1/p' /etc/init.d/network-static`
+  gateway=`sed -n 's/GATEWAY="\(.*\)"/\1/p' /etc/init.d/network-static`
+  dns=`sed -n 's/DNS="\(.*\)"/\1/p' /etc/init.d/network-static`
+fi
+
+# Construct the web page -------------------------------
+
+echo "<script src="prototype.js"></script>"
+echo "<link href="astman.css" media="all" rel="Stylesheet" type="text/css" />"
+echo "<script>"
+echo 'var init_dhcp="'$dhcp'";'
+echo 'var init_ipaddress="'$ipaddress'";'
+echo 'var init_netmask="'$netmask'";'
+echo 'var init_gateway="'$gateway'";'
+echo 'var init_dns="'$dns'";'
+cat easy.js
+echo "</script>"
+
+cat << EOF
+<html>
+<title>Easy Asterisk GUI</title>
+<body onload="localInit()">
+<form action="/cgi-bin/set_network.sh" method="get">
+<table align="center" width=600>
+<tr>
+  <tr>
+     <td><input type="radio" id="static" name="dhcp" value="no" onClick="doStatic()">Static</td>
+     <td><input type="radio" id="dhcp"   name="dhcp" value="yes" onClick="doDHCP()">DHCP</td>
+  </tr>
+  <tr><td>IP Address:</td><td><input type="text" name="ipaddress" id="ipaddress" onBlur="isIP(this)" disabled=1></td></tr>
+  <tr><td>Netmask:</td><td><input type="text" name="netmask" id="netmask" onBlur="isIP(this)" disabled=1></td></tr>
+  <tr><td>Gateway:</td><td><input type="text" name="gateway" id="gateway" onBlur="isIP(this)" disabled=1></td></tr>
+  <tr><td>DNS:</td><td><input type="text" name="dns" id="dns" onBlur="isIP(this)" disabled=1></td></tr>
+  <tr><td><input id="networkapply" type="submit" value="Apply"></td></tr>
+</tr>
+</table>
+</form>
+</html>
+EOF