Merge commit 'origin/tomato-RT' into tomato-shibby
[tomato.git] / release / src / router / www / tools-shell.asp
blob001e724c9225266300e891080168e9f3bbde22b4
1 <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0//EN'>
2 <!--
3 Tomato GUI
5 For use with Tomato Firmware only.
6 No part of this file may be used without permission.
7 -->
8 <html>
9 <head>
10 <meta http-equiv='content-type' content='text/html;charset=utf-8'>
11 <meta name='robots' content='noindex,nofollow'>
12 <title>[<% ident(); %>] Tools: System Commands</title>
13 <link rel='stylesheet' type='text/css' href='tomato.css'>
14 <link rel='stylesheet' type='text/css' href='color.css'>
15 <script type='text/javascript' src='tomato.js'></script>
17 <!-- / / / -->
19 <style type='text/css'>
20 textarea {
21 font: 12px monospace;
22 width: 99%;
23 height: 12em;
25 </style>
27 <script type='text/javascript' src='debug.js'></script>
28 <script type='text/javascript'>
30 // <% nvram(''); %> // http_id
32 var cmdresult = '';
33 var cmd = null;
35 function verifyFields(focused, quiet)
37 return 1;
40 function escapeText(s)
42 function esc(c) {
43 return '&#' + c.charCodeAt(0) + ';';
45 return s.replace(/[&"'<>]/g, esc).replace(/\n/g, ' <br>').replace(/ /g, '&nbsp;');
48 function spin(x)
50 E('execb').disabled = x;
51 E('_f_cmd').disabled = x;
52 E('wait').style.visibility = x ? 'visible' : 'hidden';
53 if (!x) cmd = null;
56 function updateResult()
58 E('result').innerHTML = '<tt>' + escapeText(cmdresult) + '</tt>';
59 cmdresult = '';
60 spin(0);
63 function execute()
65 // Opera 8 sometimes sends 2 clicks
66 if (cmd) return;
67 spin(1);
69 cmd = new XmlHttp();
70 cmd.onCompleted = function(text, xml) {
71 eval(text);
72 updateResult();
74 cmd.onError = function(x) {
75 cmdresult = 'ERROR: ' + x;
76 updateResult();
79 var s = E('_f_cmd').value;
80 cmd.post('shell.cgi', 'action=execute&command=' + escapeCGI(s.replace(/\r/g, '')));
81 cookie.set('shellcmd', escape(s));
84 function init()
86 var s;
87 if ((s = cookie.get('shellcmd')) != null) E('_f_cmd').value = unescape(s);
89 </script>
91 </head>
93 <body onload='init()'>
94 <form action='javascript:{}'>
95 <table id='container' cellspacing=0>
96 <tr><td colspan=2 id='header'>
97 <div class='title'>Tomato</div>
98 <div class='version'>Version <% version(); %></div>
99 </td></tr>
100 <tr id='body'><td id='navi'><script type='text/javascript'>navi()</script></td>
101 <td id='content'>
102 <div id='ident'><% ident(); %></div>
104 <!-- / / / -->
106 <div class='section-title'>Execute System Commands</div>
107 <div class='section'>
108 <script type='text/javascript'>
109 createFieldTable('', [
110 { title: 'Command', name: 'f_cmd', type: 'textarea', wrap: 'off', value: '' }
112 </script>
113 <div style='float:left'><input type='button' value='Execute' onclick='execute()' id='execb'></div>
114 </div>
116 <div style="visibility:hidden;text-align:right" id="wait">Please wait... <img src='spin.gif' style="vertical-align:top"></div>
117 <pre id='result'></pre>
119 <!-- / / / -->
121 </td></tr>
122 <tr><td id='footer' colspan=2>&nbsp;</td></tr>
123 </table>
124 </form>
125 </body>
126 </html>