1function myip_update()
2{
3	var cf = document.forms[0];
4
5	if((cf.myip_1.value.length>0)&&(cf.myip_2.value.length>0)&&(cf.myip_3.value.length>0)&&(cf.myip_4.value.length>0))
6	{
7		setDisabled(false, cf.mygw_1, cf.mygw_2, cf.mygw_3, cf.mygw_4);
8	}
9	else
10	{
11		setDisabled(true, cf.mygw_1, cf.mygw_2, cf.mygw_3, cf.mygw_4);
12	}
13}
14
15/*
16function pptp_servip_update()
17{
18	var disable=false;
19	var cf = document.forms[0];
20	var serv_array=cf.pptp_serv_ip.value.split('.');
21	if (serv_array.length == 4)
22	{
23		var flag = 0;
24		for (iptab=0; iptab<4; iptab++)
25			if (isNumeric(serv_array[iptab], 255))
26				flag++;
27		if (flag == 4)
28		{
29			if (checkipaddr(cf.pptp_serv_ip.value) == false)
30				disable=true;
31		}
32		else
33		{
34			disable=true;
35		}
36	}
37	else if (cf.pptp_serv_ip.value.length > 0)
38	{
39		disable=true;
40	}
41
42	setDisabled(disable, cf.myip_1, cf.myip_2, cf.myip_3, cf.myip_4);
43}
44*/
45function setDNS(cf)
46{
47	var dflag = cf.DNSAssign[0].checked;
48	setDisabled(dflag,cf.DAddr1,cf.DAddr2,cf.DAddr3,cf.DAddr4,cf.PDAddr1,cf.PDAddr2,cf.PDAddr3,cf.PDAddr4);
49	DisableFixedDNS = dflag;
50}
51
52function check_wizard_pptp(check,page)
53{
54	var cf=document.forms[0];
55	if(cf.pptp_username.value=="")
56	{
57		alert("<%796%>");
58		return false;
59	}
60	for(i=0;i<cf.pptp_username.value.length;i++)
61	{
62		if(isValidChar(cf.pptp_username.value.charCodeAt(i))==false)
63		{
64			alert("<%2382%>");
65			return false;
66		}
67	}
68	for(i=0;i<cf.pptp_passwd.value.length;i++)
69	{
70		if(isValidChar(cf.pptp_passwd.value.charCodeAt(i))==false)
71		{
72			alert("<%2383%>");
73			return false;
74		}
75	}
76	if(cf.pptp_idletime.value.length<=0)
77	{
78		alert("<%2384%>");
79		return false;
80	}
81	else if(!_isNumeric(cf.pptp_idletime.value))
82	{
83		alert("<%564%>");
84		return false;
85	}
86	cf.pptp_myip.value=cf.myip_1.value+'.'+cf.myip_2.value+'.'+cf.myip_3.value+'.'+cf.myip_4.value;
87	cf.pptp_mynetmask.value=cf.my_mask1.value+'.'+cf.my_mask2.value+'.'+cf.my_mask3.value+'.'+cf.my_mask4.value;
88	cf.pptp_gateway.value=cf.mygw_1.value+'.'+cf.mygw_2.value+'.'+cf.mygw_3.value+'.'+cf.mygw_4.value;
89
90	if( cf.pptp_myip.value != "..." )
91	{
92		if(checkipaddr(cf.pptp_myip.value)==false)
93		{
94			alert("<%568%>");
95			return false;
96		}
97		if(isSameSubNet(cf.pptp_myip.value,lan_subnet,lan_ip,lan_subnet) == true)
98		{
99			cf.conflict_wanlan.value=1;
100		}
101		if(isSameIp(cf.pptp_myip.value,lan_ip) == true)
102		{
103			cf.conflict_wanlan.value=1;
104		}
105		if(isSameSubNet(cf.pptp_myip.value,cf.pptp_mynetmask.value,lan_ip,cf.pptp_mynetmask.value) == true)
106		{
107			cf.conflict_wanlan.value=1;
108		}
109		if(isSameSubNet(cf.pptp_myip.value,cf.pptp_mynetmask.value,lan_ip,lan_subnet) == true)
110		{
111			cf.conflict_wanlan.value=1;
112		}
113	}
114	if( cf.pptp_mynetmask.value != "..." )
115	{
116		if(checksubnet(cf.pptp_mynetmask.value)==false)
117		{
118			alert("<%514%>");
119			return false;
120		}
121	}
122	else
123	{
124		cf.pptp_mynetmask.value="";
125	}
126	if(cf.pptp_myip.value=="...")
127	{
128		cf.pptp_myip.value="";
129		cf.pptp_gateway.value="";
130		cf.WANAssign.value=0;
131	}
132	else
133	{
134		cf.WANAssign.value=1;
135		if ( cf.pptp_gateway.value != "..." && checkgateway(cf.pptp_gateway.value) == false )
136		{
137			alert("<%515%>");
138			return false;
139		}
140
141		if(cf.pptp_mynetmask.value=="")
142		{
143			if( parseInt(cf.myip_1.value) < 128 )
144				cf.pptp_mynetmask.value="255.0.0.0";
145			else if(parseInt(cf.myip_1.value) < 192 )
146				cf.pptp_mynetmask.value="255.255.0.0";
147			else
148				cf.pptp_mynetmask.value="255.255.255.0";
149		}
150		if( cf.pptp_gateway.value != "..." )
151		{
152			if(isGateway(cf.pptp_myip.value,cf.pptp_mynetmask.value,cf.pptp_gateway.value) == false)
153			{
154				alert("<%515%>");
155				return false;
156			}
157			if(isSameIp(cf.pptp_myip.value,cf.pptp_gateway.value) == true)
158			{
159				alert("<%515%>");
160				return false;
161			}
162		}
163		else
164			cf.pptp_gateway.value="";
165	}
166
167	if(cf.pptp_serv_ip.value=="")
168	{
169		alert("<%618%>");
170		return false;
171	}
172	for(i=0;i<cf.pptp_serv_ip.value.length;i++)
173	{
174		if(isValidChar(cf.pptp_serv_ip.value.charCodeAt(i))==false)
175		{
176			alert("<%618%>");
177			return false;
178		}
179	}
180	if( cf.pptp_serv_ip.value == cf.pptp_myip.value )
181	{
182		alert("<%2385%>");
183		return false;
184	}
185
186	/*
187	var serv_array=cf.pptp_serv_ip.value.split('.');
188	if( serv_array.length==4 )
189	{
190		var flag = 0;
191		for( iptab=0; iptab<4; iptab++ )
192			if( isNumeric(serv_array[iptab], 255) )
193				flag++;
194		if( flag == 4 )
195		{
196			if ( checkipaddr(cf.pptp_serv_ip.value) == false )
197			{
198				alert("<%618%>");
199				return false;
200			}
201		}
202		else //if the serverip is not a correct ip, it is a FQDN. then the My IP Address MUST be blank to indicate DHCP is used to get the router's IP address
203		{
204			cf.WANAssign.value=0;
205			cf.pptp_myip.value="";
206			cf.pptp_gateway.value="";
207		}
208	}
209	else //if the serverip is not a correct ip, it is a FQDN. then the My IP Address MUST be blank to indicate DHCP is used to get the router's IP address
210	{
211		cf.WANAssign.value=0;
212		cf.pptp_myip.value="";
213		cf.pptp_gateway.value="";
214	}
215	*/
216	for(i=0;i<cf.pptp_conn_id.value.length;i++)
217	{
218		if(isValidChar(cf.pptp_conn_id.value.charCodeAt(i))==false)
219		{
220			alert("<%2386%>");
221			return false;
222		}
223	}
224	if (check == 1)
225	{
226		cf.run_test.value="test";
227		if( page == "wiz")
228			cf.action="ru_wan_flow.cgi";
229	}
230	else
231		cf.run_test.value="no";
232	if (cf.WANAssign.value == 1)
233	{
234		if(isSameSubNet(cf.pptp_myip.value,cf.pptp_mynetmask.value,cf.pptp_serv_ip.value,cf.pptp_mynetmask.value) != true)
235		{
236			if(isSameSubNet(cf.pptp_myip.value,cf.pptp_mynetmask.value,cf.pptp_gateway.value,cf.pptp_mynetmask.value) != true)
237			{
238				alert("<%515%>");
239				return false;
240			}
241		}
242	}
243	return true;
244}
245
246function check_pptp(cf,check)
247{
248	var wan_assgin = false;
249	if(check_wizard_pptp(check,"bas")==false)
250		return false;
251	cf.hidden_pptp_idle_time.value=cf.pptp_idletime.value;
252
253	if(cf.WANAssign.value == 1)
254		wan_assgin = true;
255
256	var server_addr_array = cf.pptp_serv_ip.value.split('.');
257	var i;
258	for( i=0; i<server_addr_array.length; i++ )
259	{
260		if( server_addr_array[i].length > 63 )
261		{
262			alert("<%618%>");
263			return false;
264		}
265	}
266
267	if(cf.DNSAssign[1].checked == true)
268	{
269		cf.pptp_dnsaddr1.value=cf.DAddr1.value+'.'+cf.DAddr2.value+'.'+cf.DAddr3.value+'.'+cf.DAddr4.value;
270		cf.pptp_dnsaddr2.value=cf.PDAddr1.value+'.'+cf.PDAddr2.value+'.'+cf.PDAddr3.value+'.'+cf.PDAddr4.value;
271
272		if(cf.pptp_dnsaddr1.value=="...")
273			cf.pptp_dnsaddr1.value="";
274		if(cf.pptp_dnsaddr2.value=="...")
275			cf.pptp_dnsaddr2.value="";
276
277		if(!check_DNS(cf.pptp_dnsaddr1.value,cf.pptp_dnsaddr2.value,wan_assgin,cf.pptp_myip.value))
278			return false;
279	}
280	if (cf.MACAssign[2].checked )
281	{
282		the_mac=cf.Spoofmac.value;
283		if(the_mac.indexOf(":")==-1 && the_mac.length=="12")
284		{
285			var tmp_mac=the_mac.substr(0,2)+":"+the_mac.substr(2,2)+":"+the_mac.substr(4,2)+":"+the_mac.substr(6,2)+":"+the_mac.substr(8,2)+":"+the_mac.substr(10,2);
286			cf.Spoofmac.value = tmp_mac;
287		}
288		else if ( the_mac.split("-").length == 6 )
289		{
290			var tmp_mac = the_mac.replace(/-/g,":");
291			cf.Spoofmac.value=tmp_mac;
292		}
293		if(maccheck_multicast(cf.Spoofmac.value) == false)
294			return false;
295	}
296	if(!(old_wan_type=="pptp"))
297		cf.change_wan_type.value=0;
298	else
299		cf.change_wan_type.value=1;
300
301	return true;
302}
303
304function setIP_welcome_pptp()
305{
306	var cf = document.forms[0];
307	var dflag = cf.WANAssign[0].checked;
308	setDisabled(dflag,cf.myip_1,cf.myip_2,cf.myip_3,cf.myip_4);
309	DisableFixedIP = dflag;
310}
311
312
313function check_welcome_pptp()
314{
315	var cf = document.forms[0];
316	if(check_wizard_pptp(0,"welcome")==false)
317		return false;
318	parent.pptp_username=cf.pptp_username.value;
319	parent.pptp_password=cf.pptp_passwd.value;
320	parent.pptp_idle_time=cf.pptp_idletime.value;
321	/*
322	cf.pptp_myip.value=cf.myip_1.value+'.'+cf.myip_2.value+'.'+cf.myip_3.value+'.'+cf.myip_4.value;
323	cf.pptp_gateway.value=cf.mygw_1.value+'.'+cf.mygw_2.value+'.'+cf.mygw_3.value+'.'+cf.mygw_4.value;
324	cf.pptp_mynetmask.value=cf.my_mask1.value+'.'+cf.my_mask2.value+'.'+cf.my_mask3.value+'.'+cf.my_mask4.value;
325	if(cf.pptp_myip.value=="...")
326	{
327		cf.pptp_myip.value="";
328		cf.WANAssign.value=0;
329		parent.pptp_wan_assign=0;
330	}
331	else
332	{
333		if(checkipaddr(cf.pptp_myip.value)==false)
334		{
335			alert("<%568%>");
336			return false;
337		}
338		cf.WANAssign.value=1;
339		parent.pptp_wan_assign=1;
340	}
341	if( cf.pptp_gateway.value != "..." )
342	{
343		if(checkipaddr(cf.pptp_gateway.value)==false)
344		{
345			alert("<%515%>");
346			return false;
347		}
348	}
349	else
350	{
351		cf.pptp_gateway.value="";
352	}
353	if( cf.pptp_mynetmask.value != "..." )
354	{
355		if(checksubnet(cf.pptp_mynetmask.value)==false)
356		{
357			alert("<%514%>");
358			return false;
359		}
360	}
361	else
362	{
363		cf.pptp_mynetmask.value="";
364	}
365	if (cf.WANAssign.value==1)
366	{
367		if(isSameSubNet(cf.pptp_myip.value,cf.pptp_mynetmask.value,cf.pptp_serv_ip.value,cf.pptp_mynetmask.value) != true)
368		{
369			if(isSameSubNet(cf.pptp_myip.value,cf.pptp_mynetmask.value,cf.pptp_gateway.value,cf.pptp_mynetmask.value) != true)
370			{
371				alert("<%515%>");
372				return false;
373			}
374		}
375	}
376	*/
377	parent.pptp_local_ipaddr=cf.pptp_myip.value;
378	parent.pptp_local_netmask=cf.pptp_mynetmask.value;
379	parent.pptp_local_gateway=cf.pptp_gateway.value;
380	parent.pptp_server_ipaddr=cf.pptp_serv_ip.value;
381	parent.pptp_connect_id=cf.pptp_conn_id.value;
382	parent.welcome_wan_type=4;
383	return true;
384}
385
386function pptp_servip_update(I)
387{
388	var cf = document.forms[0];
389	servName = cf.pptp_serv_ip.value;
390	if((servName.search(/[A-Za-z]/i) != -1) &&
391		((cf.myip_1.value.length > 0) ||
392		 (cf.myip_2.value.length > 0) ||
393		 (cf.myip_3.value.length > 0) ||
394		 (cf.myip_4.value.length > 0) ) )
395	{
396		if(cf.DNSAssign[0].checked == true)
397		{
398			cf.DAddr1.disabled=false;
399			cf.DAddr2.disabled=false;
400			cf.DAddr3.disabled=false;
401			cf.DAddr4.disabled=false;
402
403			cf.PDAddr1.disabled=false;
404			cf.PDAddr2.disabled=false;
405			cf.PDAddr3.disabled=false;
406			cf.PDAddr4.disabled=false;
407		}
408		cf.DNSAssign[0].checked=false;
409		cf.DNSAssign[1].checked=true;
410		cf.DNSAssign[0].disabled=true;
411		cf.STATIC_DNS.value=1;
412
413	}
414	else
415	{
416		cf.DNSAssign[0].disabled=false;
417		cf.STATIC_DNS.value=0;
418	}
419}
420
421function RU_pptp_user_info()
422{
423	var cf=document.forms[0];
424	if(cf.pptp_username.value=="")
425	{
426		alert("<%796%>");
427		return false;
428	}
429	for(i=0;i<cf.pptp_username.value.length;i++)
430	{
431		if(isValidChar(cf.pptp_username.value.charCodeAt(i))==false)
432		{
433			alert("<%2382%>");
434			return false;
435		}
436	}
437	for(i=0;i<cf.pptp_passwd.value.length;i++)
438	{
439		if(isValidChar(cf.pptp_passwd.value.charCodeAt(i))==false)
440		{
441			alert("<%2383%>");
442			return false;
443		}
444	}
445	if(cf.pptp_serv_ip.value=="")
446	{
447		alert("<%618%>");
448		return false;
449	}
450	for(i=0;i<cf.pptp_serv_ip.value.length;i++)
451	{
452		if(isValidChar(cf.pptp_serv_ip.value.charCodeAt(i))==false)
453		{
454			alert("<%618%>");
455			return false;
456		}
457	}
458	var server_addr_array = cf.pptp_serv_ip.value.split('.');
459	var i;
460	for( i=0; i<server_addr_array.length; i++ )
461	{
462		if( server_addr_array[i].length > 63 )
463		{
464			alert("<%618%>");
465			return false;
466		}
467	}
468
469	if (cf.submit_wan)
470		cf.submit_wan.value = parent.isp_type;
471
472	parent.pptp_username=cf.pptp_username.value;
473	parent.pptp_password=cf.pptp_passwd.value;
474	parent.pptp_server_ipaddr=cf.pptp_serv_ip.value;
475	parent.welcome_wan_type=4;
476
477	if(parent.isp_type=="12")
478	{
479		cf.basic_type.value="0";
480		cf.ppp_login_type.value="1";
481		cf.welcome_wan_type.value="4";
482		cf.pptp_dnsaddr1.value=parent.static_dns1;
483		cf.pptp_dnsaddr2.value=parent.static_dns2;
484		if(cf.pptp_dnsaddr1.value != "" || cf.pptp_dnsaddr2.value!= "")
485			cf.DNSAssign.value="1";
486		else
487			cf.DNSAssign.value="0";
488		cf.WANAssign.value="0";
489		cf.STATIC_DNS.value="0";
490		cf.submit();
491	}
492	else if(parent.isp_type=="11")
493	{
494		location.href="RU_isp_spoof.htm";
495	}
496	else if(parent.isp_type=="9" || parent.isp_type=="10")
497	{
498		location.href="RU_isp_pptp_static.htm";
499	}
500	else
501		location.href="RU_manual_pptp_dual.htm";
502}
503
504function setIP(cf)
505{
506	var dflag = cf.DualAssign[0].checked;
507	setDisabled(dflag,cf.myip_1,cf.myip_2,cf.myip_3,cf.myip_4,cf.my_mask1,cf.my_mask2,cf.my_mask3,cf.my_mask4,cf.mygw_1,cf.mygw_2,cf.mygw_3,cf.mygw_4);
508	DisableFixedIP = dflag;
509}
510
511function RU_pptp_servip_FQDN(I)
512{
513	var cf = document.forms[0];
514	servName = cf.pptp_serv_ip.value;
515	if(servName.search(/[A-Za-z]/i) != -1)
516	{
517		parent.pptp_server_FQDN=1;
518	}
519	else
520	{
521		parent.pptp_server_FQDN=0;
522	}
523}
524
525function RU_pptp_servip_update(I)
526{
527	var cf = document.forms[0];
528	if((parent.pptp_server_FQDN == 1) &&
529		((cf.myip_1.value.length > 0) ||
530		 (cf.myip_2.value.length > 0) ||
531		 (cf.myip_3.value.length > 0) ||
532		 (cf.myip_4.value.length > 0) ) )
533	{
534		if(cf.DNSAssign[0].checked == true)
535		{
536			cf.DAddr1.disabled=false;
537			cf.DAddr2.disabled=false;
538			cf.DAddr3.disabled=false;
539			cf.DAddr4.disabled=false;
540
541			cf.PDAddr1.disabled=false;
542			cf.PDAddr2.disabled=false;
543			cf.PDAddr3.disabled=false;
544			cf.PDAddr4.disabled=false;
545		}
546		cf.DNSAssign[0].checked=false;
547		cf.DNSAssign[1].checked=true;
548		cf.DNSAssign[0].disabled=true;
549		cf.STATIC_DNS.value=1;
550
551	}
552	else
553	{
554		cf.DNSAssign[0].disabled=false;
555		cf.STATIC_DNS.value=0;
556	}
557}
558
559function RU_check_pptp_dual()
560{
561	var cf=document.forms[0];
562	var wan_assgin = false;
563	cf.pptp_myip.value=cf.myip_1.value+'.'+cf.myip_2.value+'.'+cf.myip_3.value+'.'+cf.myip_4.value;
564	cf.pptp_mynetmask.value=cf.my_mask1.value+'.'+cf.my_mask2.value+'.'+cf.my_mask3.value+'.'+cf.my_mask4.value;
565	cf.pptp_gateway.value=cf.mygw_1.value+'.'+cf.mygw_2.value+'.'+cf.mygw_3.value+'.'+cf.mygw_4.value;
566	if(cf.DualAssign[1].checked == true)
567	{
568		wan_assgin = true;
569		parent.pptp_wan_assign=1;
570		if(checkipaddr(cf.pptp_myip.value)==false)
571		{
572			alert("<%568%>");
573			return false;
574		}
575		if(checksubnet(cf.pptp_mynetmask.value)==false)
576		{
577			alert("<%514%>");
578			return false;
579		}
580		if ( cf.pptp_gateway.value != "..." && checkgateway(cf.pptp_gateway.value) == false )
581		{
582			alert("<%515%>");
583			return false;
584		}
585		if( cf.pptp_gateway.value != "..." )
586		{
587			if(isGateway(cf.pptp_myip.value,cf.pptp_mynetmask.value,cf.pptp_gateway.value) == false)
588			{
589				alert("<%515%>");
590				return false;
591			}
592			if(isSameIp(cf.pptp_myip.value,cf.pptp_gateway.value) == true)
593			{
594				alert("<%515%>");
595				return false;
596			}
597		}
598		else
599			cf.pptp_gateway.value="";
600		if(isSameSubNet(cf.pptp_myip.value,cf.pptp_mynetmask.value,pptp_serv_ip,cf.pptp_mynetmask.value) != true)
601		{
602			if(isSameSubNet(cf.pptp_myip.value,cf.pptp_mynetmask.value,cf.pptp_gateway.value,cf.pptp_mynetmask.value) != true)
603			{
604				alert("<%515%>");
605				return false;
606			}
607		}
608	}
609	else
610	{
611		cf.pptp_myip.value="";
612		cf.pptp_mynetmask.value="";
613		cf.pptp_gateway.value="";
614		parent.pptp_wan_assign=0;
615	}
616	if(cf.DNSAssign[1].checked == true)
617	{
618		cf.pptp_dnsaddr1.value=cf.DAddr1.value+'.'+cf.DAddr2.value+'.'+cf.DAddr3.value+'.'+cf.DAddr4.value;
619		cf.pptp_dnsaddr2.value=cf.PDAddr1.value+'.'+cf.PDAddr2.value+'.'+cf.PDAddr3.value+'.'+cf.PDAddr4.value;
620
621		if(cf.pptp_dnsaddr1.value=="...")
622			cf.pptp_dnsaddr1.value="";
623		if(cf.pptp_dnsaddr2.value=="...")
624			cf.pptp_dnsaddr2.value="";
625
626		if(!check_DNS(cf.pptp_dnsaddr1.value,cf.pptp_dnsaddr2.value,wan_assgin,cf.pptp_myip.value))
627			return false;
628	}
629	else
630	{
631		cf.pptp_dnsaddr1.value="";
632		cf.pptp_dnsaddr2.value="";
633	}
634	if(cf.DualAssign[1].checked == true)
635		alert("<%2381%>");
636	parent.pptp_local_ipaddr=cf.pptp_myip.value;
637	parent.pptp_local_netmask=cf.pptp_mynetmask.value;
638	parent.pptp_local_gateway=cf.pptp_gateway.value;
639	parent.pptp_dns1=cf.pptp_dnsaddr1.value;
640	parent.pptp_dns2=cf.pptp_dnsaddr2.value;
641	parent.STATIC_DNS=cf.STATIC_DNS.value;
642	location.href="RU_manual_spoof.htm";
643}
644