luci-app-firewall: cleanup template markup
[oweals/luci.git] / applications / luci-app-firewall / luasrc / view / firewall / cbi_addrule.htm
1 <%
2         local fw = require "luci.model.firewall".init()
3         local wz = fw:get_zone("wan")
4         local lz = fw:get_zone("lan")
5         local zones = fw:get_zones()
6 %>
7
8 <% if wz then %>
9         <h4><%:Open ports on router%></h4>
10         <div class="table">
11                 <div class="tr cbi-section-table-titles">
12                         <div class="th"><%:Name%></div>
13                         <div class="th"><%:Protocol%></div>
14                         <div class="th"><%:External port%></div>
15                         <div class="th"></div>
16                 </div>
17                 <div class="tr">
18                         <div class="td">
19                                 <input type="text" class="cbi-input-text" id="_newopen.name" name="_newopen.name" placeholder="<%:New input rule%>" />
20                         </div>
21                         <div class="td">
22                                 <select class="cbi-input-select" id="_newopen.proto" name="_newopen.proto">
23                                         <option value="tcp udp">TCP+UDP</option>
24                                         <option value="tcp">TCP</option>
25                                         <option value="udp">UDP</option>
26                                         <option value="other"><%:Other...%></option>
27                                 </select>
28                         </div>
29                         <div class="td">
30                                 <input type="text" class="cbi-input-text" id="_newopen.extport" name="_newopen.extport" />
31                         </div>
32                         <div class="td bottom">
33                                 <input type="submit" class="cbi-button cbi-button-add" name="_newopen.submit" value="<%:Add%>" />
34                         </div>
35                 </div>
36         </div>
37 <% end %>
38 <% if #zones > 1 then %>
39         <h4><%:New forward rule%></h4>
40         <div class="table">
41                 <div class="tr cbi-section-table-titles">
42                         <div class="th"><%:Name%></div>
43                         <div class="th"><%:Source zone%></div>
44                         <div class="th"><%:Destination zone%></div>
45                         <div class="th"></div>
46                 </div>
47                 <div class="tr">
48                         <div class="td">
49                                 <input type="text" class="cbi-input-text" id="_newfwd.name" name="_newfwd.name" placeholder="<%:New forward rule%>" />
50                         </div>
51                         <div class="td">
52                                 <select class="cbi-input-text" id="_newfwd.src" name="_newfwd.src">
53                                         <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
54                                                 <option<%=ifattr(v:name() == "wan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
55                                         <%- end %>
56                                 </select>
57                         </div>
58                         <div class="td">
59                                 <select class="cbi-input-text" id="_newfwd.dest" name="_newfwd.dest">
60                                         <% local k, v; for k, v in ipairs(fw:get_zones()) do -%>
61                                                 <option<%=ifattr(v:name() == "lan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
62                                         <%- end %>
63                                 </select>
64                         </div>
65                         <div class="td bottom">
66                                 <input type="submit" class="cbi-button cbi-button-link" name="_newfwd.submit" value="<%:Add and edit...%>" />
67                         </div>
68                 </div>
69         </div>
70 <% else %>
71         <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
72 <% end %>
73
74 <% if wz then %>
75         <script type="text/javascript">//<![CDATA[
76                 cbi_validate_field('_newopen.extport', true, 'list(neg(portrange))');
77                 cbi_bind(document.getElementById('_newopen.extport'), 'blur',
78                         function() {
79                                 var n = document.getElementById('_newopen.name');
80                                 var p = document.getElementById('_newopen.proto');
81                                 var hints = {
82                                 /*  port    name     0=both, 1=tcp, 2=udp, 3=other */
83                                         22:   [ 'SSH',   1 ],
84                                         53:   [ 'DNS',   0 ],
85                                         80:   [ 'HTTP',  1 ],
86                                         443:  [ 'HTTPS', 1 ],
87                                 };
88
89                                 if (!this.className.match(/invalid/))
90                                 {
91                                         var hint = hints[this.value || 0];
92                                         if (hint)
93                                         {
94                                                 p.selectedIndex = hint[1];
95
96                                                 if (!n.value)
97                                                         n.value = hint[0];
98                                         }
99                                         else if (!n.value && this.value)
100                                         {
101                                                 n.value = 'Open' + this.value;
102                                         }
103                                 }
104                         });
105
106
107                 cbi_validate_field('cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>', true, 'uciname');
108         //]]></script>
109 <% end %>