http://downloads.netgear.com/files/GPL/DM111PSP_v3.61d_GPL.tar.gz
[bcm963xx.git] / userapps / broadcom / cfm / html / scinflt.html
1 <html>
2    <head>
3       <meta HTTP-EQUIV='Pragma' CONTENT='no-cache'>
4       <link rel="stylesheet" href='stylemain.css' type='text/css'>
5          <link rel="stylesheet" href='colors.css' type='text/css'>
6             <script language="javascript" src="util.js"></script>
7             <script language="javascript">
8 <!-- hide
9 var ifCount = 0;
10
11 function btnApply() {
12    var loc = 'scinflt.cmd?action=add';
13    var okChk = 0;
14
15    with ( document.forms[0] ) {
16       if ( txtfltname.value == '' ) {
17          msg = 'Please enter incoming IP filtering name.';
18          alert(msg);
19          return;
20       }
21       
22       if ( isValidName(txtfltname.value) == false ) {
23          msg = 'Please enter valid incoming IP filtering name: No special characters.';
24          alert(msg);
25          return;
26       }      
27
28       if ( srcaddr.value == "" && srcmask.value == "" && srcport.value == "" &&
29            dstaddr.value == "" && dstmask.value == "" && dstport.value == "" &&
30            protocol.selectedIndex == 0 ) {
31          msg = 'At least one condition must be specified.'
32          alert(msg);
33          return;
34       }      
35
36       if ( srcaddr.value != "" && isValidIpAddress(srcaddr.value) == false ) {
37          msg = 'Source address "' + srcaddr.value + '" is invalid IP address.';
38          alert(msg);
39          return;
40       }
41
42       if ( srcmask.value != "" && isValidSubnetMask(srcmask.value) == false ) {
43          msg = 'Source subnet mask "' + srcmask.value + '" is invalid subnet mask.';
44          alert(msg);
45          return;
46       }
47
48       if ( srcaddr.value == "" && srcmask.value != "" ) {
49          msg = 'Cannot have source subnet mask without source IP address.';
50          alert(msg);
51          return;
52       }
53
54       if ( srcport.value != "" && isValidPort(srcport.value) == false ) {
55          msg = 'Source port "' + srcport.value + '" is invalid port number or port range.';
56          alert(msg);
57          return;
58       }
59
60       if ( dstaddr.value != "" && isValidIpAddress(dstaddr.value) == false ) {
61          msg = 'Destination address "' + dstaddr.value + '" is invalid IP address.';
62          alert(msg);
63          return;
64       }
65
66       if ( dstmask.value != "" && isValidSubnetMask(dstmask.value) == false ) {
67          msg = 'Destination subnet mask "' + dstmask.value + '" is invalid subnet mask.';
68          alert(msg);
69          return;
70       }
71
72       if ( dstaddr.value == "" && dstmask.value != "" ) {
73          msg = 'Cannot have destination subnet mask without destination IP address.';
74          alert(msg);
75          return;
76       }
77
78       if ( dstport.value != "" && isValidPort(dstport.value) == false ) {
79          msg = 'Destination port "' + dstport.value + '" is invalid port number or port range.';
80          alert(msg);
81          return;
82       }
83       
84       if ( (srcport.value != "" || dstport.value != "") && 
85            (protocol.selectedIndex == 0 || protocol.selectedIndex == 4) ) {
86          msg = 'TCP or UDP Protocol must be selected together with port number';
87          alert(msg);
88          return;
89       }       
90
91       // wan interfaces
92       if (ifCount == 1) {
93          if (ifChk.checked)
94             okChk = 1;
95       }
96       else {
97          for (i = 0; i < ifCount; i++) 
98             if (ifChk[i].checked)
99                okChk++;
100       }
101       if (!okChk) {
102          alert('At least one configured Bridge interface must be selected.');
103          return;
104       }    
105       loc += '&wanIf=';
106       if (chkAll.checked)
107          loc += 'ALL';
108       else {
109          var first = true;
110          if (ifCount == 1)
111             loc += ifChk.value
112          else {
113            for (i = 0; i < ifCount; i++)
114             if (ifChk[i].checked) {
115                if (!first)
116                   loc += '|';
117                loc += ifChk[i].value;
118                first = false;
119             }
120          }   
121       }
122       
123       // incoming IP filter name
124       loc += '&fltName=' + encodeUrl(txtfltname.value);
125
126       // protocol
127       idx = protocol.selectedIndex;
128       val = protocol.options[idx].value;
129       loc += '&protocol=' + val;
130
131       // source address
132       if ( srcaddr.value != "" )
133          loc += '&srcAddr=' + srcaddr.value;
134
135       // source subnet mask
136       if ( srcmask.value != "" )
137          loc += '&srcMask=' + srcmask.value;
138
139       // source port
140       if ( srcport.value != "" )
141          loc += '&srcPort=' + srcport.value;
142
143       // destination address
144       if ( dstaddr.value != "" )
145          loc += '&dstAddr=' + dstaddr.value;
146
147       // destination subnet mask
148       if ( dstaddr.value != "" )
149          loc += '&dstMask=' + dstmask.value;
150
151       // destination port
152       if ( dstport.value != "" )
153          loc += '&dstPort=' + dstport.value;
154    }
155
156    var code = 'location="' + loc + '"';
157    eval(code);
158 }
159
160 function toggle(cb) {
161    var chkCount = 0;
162    with ( document.forms[0] ) {
163       if (ifCount == 1)
164          chkAll.checked = cb.checked;
165       else {      
166          for (i = 0; i < ifCount; i++)
167             if (ifChk[i].checked)
168                chkCount++;
169          if (chkCount == ifCount)
170             chkAll.checked = true;
171          else
172             chkAll.checked = false;
173       }
174    }
175 }
176
177 function toggleIfs(cb) {
178    var chkStatus = false;
179    with ( document.forms[0] ) {
180       if (chkAll.checked)
181          chkStatus = true;
182       if (ifCount == 1)
183          ifChk.checked = chkStatus;
184       else
185          for (i = 0; i < ifCount; i++)
186             ifChk[i].checked = chkStatus;
187    }
188 }
189
190 // done hiding -->
191       </script>
192    </head>
193    <body>
194       <blockquote>
195          <form>
196             <b>Add IP Filter -- Incoming</b><br>
197             <br>
198             The screen allows you to create a filter rule to identify incoming IP traffic 
199             by specifying a new filter name and at least one condition below. All of the 
200             specified conditions in this filter rule must be satisfied for the rule to take 
201             effect. Click 'Save/Apply' to save and activate the filter.<br>
202             <br>
203             <table border="0" cellpadding="0" cellspacing="0">
204                <tr>
205                   <td>Filter Name:</td>
206                   <td><input type='text' size="22" name="txtfltname"></td>
207                </tr>
208                <tr>
209                   <td colspan="2">&nbsp;</td>
210                </tr>
211                <tr>
212                   <td>Protocol:</td>
213                   <td><select name='protocol' size="1">
214                         <option value="4">
215                         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp
216                         <option value="0">
217                         TCP/UDP
218                         <option value="1">
219                         TCP
220                         <option value="2">
221                         UDP
222                         <option value="3">
223                         ICMP
224                      </select></td>
225                </tr>
226                <tr>
227                   <td>Source IP address:</td>
228                   <td><input type='text' size="22" name="srcaddr"></td>
229                </tr>
230                <tr>
231                   <td>Source Subnet Mask:</td>
232                   <td><input type='text' size="22" name="srcmask"></td>
233                </tr>
234                <tr>
235                   <td>Source Port (port or port:port):</td>
236                   <td><input type='text' size="22" name="srcport"></td>
237                </tr>
238                <tr>
239                   <td>Destination IP address:</td>
240                   <td><input type='text' size="22" name="dstaddr"></td>
241                </tr>
242                <tr>
243                   <td>Destination Subnet Mask:</td>
244                   <td><input type='text' size="22" name="dstmask"></td>
245                </tr>
246                <tr>
247                   <td>Destination Port (port or port:port):</td>
248                   <td><input type='text' size="22" name="dstport"></td>
249                </tr>
250             </table>
251             <br>
252             <b>WAN&nbsp;Interfaces&nbsp;(Configured in Routing mode and with firewall enabled 
253                only)</b>
254             <br>
255             Select at least one or multiple WAN interfaces displayed below to apply this 
256             rule.
257             <br>
258             <br>
259             <table>
260                <tr>
261                   <input type='checkbox' name='chkAll' checked onclick='toggleIfs(this)'>&nbsp;&nbsp;Select&nbsp;All</tr>
262                <tr>
263                   <script language="javascript">
264 <!-- hide 
265 {
266    var i = 0;
267    var interfaceInfo = '<%ejGetOther(wanInterfaceInfo, firewall)%>';
268    var interfaces = interfaceInfo.split('|');
269
270    for ( i = 0; i < interfaces.length; i++ ) {
271       var names = interfaces[i].split('/');
272       document.writeln("<tr> <input type='checkbox' name='ifChk' checked value=" + 
273                         names[1] + '>' + '&nbsp;&nbsp;' + interfaces[i] + "</tr>");
274       ifCount++;
275    }
276 }
277 // done hiding -->
278 </script>
279                </tr>
280             </table>
281             <br><br>
282             <center><input type='button' onClick='btnApply()' value='Save/Apply'></center>
283          </form>
284       </blockquote>
285    </body>
286 </html>