blob: d4013b0f732813d84f9ef8119eb0d921f89cfc6a [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001
2(function($) {
3
4 $.fn.objWifiPortTrigger = function() {
5
6 this.onLoad = function(flag) {
7 if(flag) {
8 LoadWebPage("html/wifi/wifiPortTrigger.html");
9
10 $("#lt_portTrigger_btnAdd").click(function() {
11 AddPortTriggerEntry();
12 });
13
14 $("#lt_portTrigger_btnDelete").click(function() {
15 DelPortTriggerEntry();
16 });
17
18 } //end flag
19
20 GetFWPortTriggerInfo();
21 }
22
23 function DelPortTriggerEntry() {
24 var entryIdxList = "";
25 $("tbody tr td :checked").each(function() {
26 var entryIdx = $(this).parents("tr").prevAll("tr").length + 1;
27 entryIdxList = entryIdxList + entryIdx + ",";
28 });
29
30 if(""==entryIdxList) {
31 return;
32 }
33
34 var entryMap = new Map();
35 entryMap.put("RGW/firewall/del_port_trigger_index",entryIdxList);
36 var retXml = PostXml("firewall","delete_port_trigger_entry",entryMap);
37 if("OK" == $(retXml).find("setting_response").text()) {
38 GetFWPortTriggerInfo();
39 } else {
40 alert("delete port map entry failed.");
41 }
42 }
43
44
45 function AddPortTriggerEntry() {
46 ShowDlg("divPortTriggerSetDlg",300,100);
47
48 $("#lt_btnSave").click(function() {
49
50 if(!IsPort(GetPortFromElement("txtOutPort")) || !IsPort(GetPortFromElement("txtInPort"))) {
51 $("#lPortTriggerSetError").show();
52 $("#lPortTriggerSetError").text(jQuery.i18n.prop("lt_PortFormatError"));
53 return;
54 }
55
56 if(!IsRuleName( $("#txtPortTriggerRule").val())) {
57 $("#lPortTriggerSetError").show();
58 $("#lPortTriggerSetError").text(jQuery.i18n.prop("lt_RuleNameError"));
59 return;
60 }
61
62
63 var entryId = $("tbody tr").size() + 1;
64 var preTag = "RGW/firewall/port_trigger/entry_list/entry_" + entryId;
65 var entryMap = new Map();
66 entryMap.put(preTag+"/rule_name", $("#txtPortTriggerRule").val());
67 entryMap.put(preTag+"/out_port",GetPortFromElement("txtOutPort"));
68 entryMap.put(preTag+"/in_port",GetPortFromElement("txtInPort"));
69 entryMap.put(preTag+"/out_proto", $("#selPortTriggerOutProtocol").val());
70 entryMap.put(preTag+"/in_proto", $("#selPortTriggerInProtocol").val());
71 entryMap.put(preTag+"/enabled", $("#selPortTriggerStatus").val());
72
73 CloseDlg();
74 var retXml = PostXml("firewall","add_port_trigger_entry",entryMap);
75 if("OK" == $(retXml).find("setting_response").text()) {
76 GetFWPortTriggerInfo();
77 } else {
78 alert("edit port mapping entry failed.");
79 }
80
81 });
82 }
83
84
85 function GetFWPortTriggerInfo() {
86 $("#tbodyPortTrigger").empty();
87 $("#DeleteAllIpEntry").attr("checked",false);
88 $("#lt_portTrigger_btnDelete").hide();
89
90 var retXml = PostXml("firewall","fw_get_port_trigger_info");
91
92 var bFoundEntry = true;
93 var idx = 1;
94 while(bFoundEntry) {
95 var entryIdx = "entry_" + idx;
96 bFoundEntry = false;
97 $(retXml).find(entryIdx).each(function() {
98 bFoundEntry = true;
99 var rule = $(this).find("rule_name").text();
100 var outPort = $(this).find("out_port").text();
101 var inPort = $(this).find("in_port").text();
102 var outProto = $(this).find("out_proto").text();
103 var inProto = $(this).find("in_proto").text();
104 var enabled = $(this).find("enabled").text();
105 var portEntryInfo = rule + ";" + outPort + ";" + inPort + ";" + outProto + ";"
106 + inProto + ";" + enabled;
107
108 var strStatus="";
109 if(1 == enabled) {
110 strStatus = jQuery.i18n.prop("lt_optEnableSwitch");
111 } else {
112 strStatus = jQuery.i18n.prop("lt_optDisabledSwitch");
113 }
114
115 var htmlTxt = "<tr style='cursor: pointer;'name='" + portEntryInfo + "'><td>" + rule + "</td><td>"
116 + outPort + "</td><td>" + inPort + "</td><td>" + outProto + "</td><td>" + inProto + "</td><td>"
117 + strStatus + "</td> <td><input type='checkbox'></td></tr>";
118 $("#tbodyPortTrigger").append(htmlTxt);
119 });
120 ++idx;
121 $("tbody tr:last td:lt(6)").click(function() {
122 var entryIdx = $(this).parents("tr").prevAll("tr").length;
123 ModifyPortTriggerEntry(entryIdx);
124 });
125 }
126
127 $("#DeleteAllIpEntry").click(function() {
128 if($(this).attr("checked")) {
129 $("tbody :checkbox").attr("checked",true);
130 } else {
131 $("tbody :checkbox").attr("checked",false);
132 }
133 if($("tbody :checked").length>0) {
134 $("#lt_portTrigger_btnDelete").show();
135 } else {
136 $("#lt_portTrigger_btnDelete").hide();
137 }
138 });
139
140 $("tbody :checkbox").click(function() {
141 if($("tbody :checked").length == $("tbody tr").length) {
142 $("#DeleteAllIpEntry").attr("checked",true);
143 } else {
144 $("#DeleteAllIpEntry").attr("checked",false);
145 }
146 if($("tbody :checked").length>0) {
147 $("#lt_portTrigger_btnDelete").show();
148 } else {
149 $("#lt_portTrigger_btnDelete").hide();
150 }
151 });
152 }
153
154 function ModifyPortTriggerEntry(entryIdx) {
155 ShowDlg("divPortTriggerSetDlg",300,100);
156 var entryId = entryIdx + 1;
157 var selector = "tbody tr:eq(" + entryIdx+ ")";
158 var portTriggerEntryInfo = $(selector).attr("name").split(";");
159
160 $("#txtPortTriggerRule").val(portTriggerEntryInfo[0]);
161 SetPortToElement("txtOutPort",portTriggerEntryInfo[1]);
162 SetPortToElement("txtInPort",portTriggerEntryInfo[2]);
163 $("#selPortTriggerOutProtocol").val(portTriggerEntryInfo[3]);
164 $("#selPortTriggerInProtocol").val(portTriggerEntryInfo[4]);
165 $("#selPortTriggerStatus").val(portTriggerEntryInfo[5]);
166
167
168 $("#lt_btnSave").click(function() {
169
170 if(!IsPort(GetPortFromElement("txtOutPort")) || !IsPort(GetPortFromElement("txtInPort"))) {
171 $("#lPortTriggerSetError").show();
172 $("#lPortTriggerSetError").text(jQuery.i18n.prop("lt_PortFormatError"));
173 return;
174 }
175
176 if(!IsRuleName( $("#txtPortTriggerRule").val())) {
177 $("#lPortTriggerSetError").show();
178 $("#lPortTriggerSetError").text(jQuery.i18n.prop("lt_RuleNameError"));
179 return;
180 }
181
182
183 if(portTriggerEntryInfo[0] == $("#txtPortTriggerRule").val() && portTriggerEntryInfo[1] == GetPortFromElement("txtOutPort")
184 && portTriggerEntryInfo[2] == GetPortFromElement("txtInPort")&& portTriggerEntryInfo[3] == $("#selPortTriggerOutProtocol").val()
185 && portTriggerEntryInfo[4] == $("#selPortTriggerInProtocol").val() && portTriggerEntryInfo[5] == $("#selPortTriggerStatus").val()) {
186 CloseDlg();
187 return;
188 }
189
190 var preTag = "RGW/firewall/port_trigger/entry_list/entry_" + entryId;
191 var entryMap = new Map();
192 entryMap.put(preTag+"/rule_name", $("#txtPortTriggerRule").val());
193 entryMap.put(preTag+"/out_port",GetPortFromElement("txtOutPort"));
194 entryMap.put(preTag+"/in_port",GetPortFromElement("txtInPort"));
195 entryMap.put(preTag+"/out_proto", $("#selPortTriggerOutProtocol").val());
196 entryMap.put(preTag+"/in_proto", $("#selPortTriggerInProtocol").val());
197 entryMap.put(preTag+"/enabled", $("#selPortTriggerStatus").val());
198
199 CloseDlg();
200 var retXml = PostXml("firewall","edit_port_trigger_entry",entryMap);
201 if("OK" == $(retXml).find("setting_response").text()) {
202 GetFWPortTriggerInfo();
203 } else {
204 alert("edit port mapping entry failed.");
205 }
206 });//$("#lt_btnSave").click(function(){
207 }
208
209 return this;
210 }
211})(jQuery);
212
213
214
215
216