Merge commit 'origin/tomato-RT' into tomato-shibby
[tomato.git] / release / src / router / www / new-arpbind.asp
blobce24de741c8396db43b2ad3f712fcd1118367d57
1 <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0//EN'>
2 <!--
3 Tomato GUI
4 Copyright (C) 2006-2008 Jonathan Zarate
5 http://www.polarcloud.com/tomato/
7 For use with Tomato Firmware only.
8 No part of this file may be used without permission.
9 -->
10 <html>
11 <head>
12 <meta http-equiv='content-type' content='text/html;charset=utf-8'>
13 <meta name='robots' content='noindex,nofollow'>
14 <title>[<% ident(); %>] New: ARP Binding</title>
15 <link rel='stylesheet' type='text/css' href='tomato.css'>
16 <link rel='stylesheet' type='text/css' href='color.css'>
17 <script type='text/javascript' src='tomato.js'></script>
19 <!-- / / / -->
20 <style type='text/css'>
21 #arpg-grid {
22 width: 300px;
24 #arpg-grid .co1,
25 #arpg-grid .co2 {
26 width: 150px;
29 </style>
31 <script type='text/javascript' src='debug.js'></script>
33 <script type='text/javascript'>
35 // <% nvram("new_arpbind_enable,new_arpbind_only,new_arpbind_list"); %>
37 var arpg = new TomatoGrid();
39 arpg.exist = function(f, v)
41 var data = this.getAllData();
42 for (var i = 0; i < data.length; ++i) {
43 if (data[i][f] == v) return true;
45 return false;
48 arpg.existMAC = function(mac)
50 if (mac == "00:00:00:00:00:00") return false;
51 return this.exist(0, mac);
54 arpg.existIP = function(ip)
56 if (ip == "0.0.0.0") return true;
57 return this.exist(1, ip);
60 arpg.dataToView = function(data) {
61 return [data[0], data[1]];
64 arpg.verifyFields = function(row, quiet)
66 var ok = 1;
67 var f = fields.getAll(row);
68 var s;
70 if (v_macz(f[0], quiet)) {
71 if (this.existMAC(f[0].value)) {
72 ferror.set(f[0], 'Duplicate MAC address', quiet);
73 ok = 0;
76 else ok = 0;
78 if (v_ip(f[1], quiet)) {
79 if(this.existIP(f[1].value)) {
80 ferror.set(f[1], 'Duplicate IP address', quiet);
81 ok = 0;
84 else ok = 0;
86 return ok;
89 arpg.resetNewEditor = function() {
90 var f;
92 f = fields.getAll(this.newEditor);
93 ferror.clearAll(f);
95 f[0].value = '00:00:00:00:00:00';
96 f[1].value = '0.0.0.0';
100 arpg.setup = function()
102 this.init('arpg-grid', '', 50,
103 [{ type: 'text', maxlen: 17 }, { type: 'text', maxlen: 15 }]);
104 this.headerSet(['MAC Address', 'IP Address']);
105 var s = nvram.new_arpbind_list.split('>');
106 for (var i = 0; i < s.length; ++i) {
107 var t = s[i].split('<');
108 if (t.length == 2) this.insertData(-1, t);
110 this.showNewEditor();
111 this.resetNewEditor();
114 function save()
116 if (arpg.isEditing()) return;
118 var data = arpg.getAllData();
119 var arpbindlist = '';
120 var i;
122 if (data.length != 0) arpbindlist += data[0].join('<');
123 for (i = 1; i < data.length; ++i) {
124 arpbindlist += '>' + data[i].join('<');
127 var fom = E('_fom');
128 fom.new_arpbind_enable.value = E('_f_new_arpbind_enable').checked ? 1 : 0;
129 fom.new_arpbind_only.value = E('_f_new_arpbind_only').checked ? 1 : 0;
130 fom.new_arpbind_list.value = arpbindlist;
131 form.submit(fom, 1);
134 function init()
136 arpg.recolor();
138 </script>
139 </head>
140 <body onload='init()'>
141 <form id='_fom' method='post' action='tomato.cgi'>
142 <table id='container' cellspacing=0>
143 <tr><td colspan=2 id='header'>
144 <div class='title'>Tomato</div>
145 <div class='version'>Version <% version(); %></div>
146 </td></tr>
147 <tr id='body'><td id='navi'><script type='text/javascript'>navi()</script></td>
148 <td id='content'>
149 <div id='ident'><% ident(); %></div>
151 <!-- / / / -->
153 <input type='hidden' name='_nextpage' value='new-arpbind.asp'>
154 <input type='hidden' name='_service' value='arpbind-restart'>
156 <input type='hidden' name='new_arpbind_enable'>
157 <input type='hidden' name='new_arpbind_only'>
158 <input type='hidden' name='new_arpbind_list'>
160 <div class='section-title'>ARP Binding</div>
161 <div class='section'>
162 <script type='text/javascript'>
163 createFieldTable('', [
164 { title: 'Enable ARP Binding', name: 'f_new_arpbind_enable', type: 'checkbox', value: nvram.new_arpbind_enable != '0' },
165 { title: 'Limit unlisted machines', name: 'f_new_arpbind_only', type: 'checkbox', value: nvram.new_arpbind_only != '0' }
167 </script>
168 <br>
169 <table class='tomato-grid' id='arpg-grid'></table>
170 </div>
173 <!-- / / / -->
175 </td></tr>
176 <tr><td id='footer' colspan=2>
177 <span id='footer-msg'></span>
178 <input type='button' value='Save' id='save-button' onclick='save()'>
179 <input type='button' value='Cancel' id='cancel-button' onclick='reloadPage();'>
180 </td></tr>
181 </table>
182 </form>
183 <script type='text/javascript'>arpg.setup();</script>
184 </body>
185 </html>