function checkIpAddr(field, msg) { if (field.value=="") { alert("IP address cannot be empty! It should be filled with 4 digit numbers as xxx.xxx.xxx.xxx."); field.value = field.defaultValue; field.focus(); return false; } if ( validateKey(field.value) == 0) { alert(msg + ' value. It should be the decimal number (0-9).'); field.value = field.defaultValue; field.focus(); return false; } if ( !checkDigitRange(field.value,1,0,255) ) { alert(msg+' range in 1st digit. It should be 0-255.'); field.value = field.defaultValue; field.focus(); return false; } if ( !checkDigitRange(field.value,2,0,255) ) { alert(msg + ' range in 2nd digit. It should be 0-255.'); field.value = field.defaultValue; field.focus(); return false; } if ( !checkDigitRange(field.value,3,0,255) ) { alert(msg + ' range in 3rd digit. It should be 0-255.'); field.value = field.defaultValue; field.focus(); return false; } if ( !checkDigitRange(field.value,4,1,254) ) { alert(msg + ' range in 4th digit. It should be 1-254.'); field.value = field.defaultValue; field.focus(); return false; } return true; } function validateKey(str) { for (var i=0; i= '0' && str.charAt(i) <= '9') || (str.charAt(i) == '.' ) ) continue; return 0; } return 1; } function checkDigitRange(str, num, min, max) { d = getDigit(str,num); if ( d > max || d < min ) return false; return true; } function getDigit(str, num) { i=1; if ( num != 1 ) { while (i!=num && str.length!=0) { if ( str.charAt(0) == '.' ) { i++; } str = str.substring(1); } if ( i!=num ) return -1; } for (i=0; i0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4); var ns = navigator.appName.indexOf("Netscape"); ns= (ns>=0) && (parseInt(navigator.appVersion.substring(0,1))>=4); if (ie4) return "ie4"; else if(ns) return "ns"; else return false; } function checkIPMask(field) { if (field.value=="") { alert("Subnet mask cannot be empty! It should be filled with 4 digit numbers as xxx.xxx.xxx.xxx."); field.value = field.defaultValue; field.focus(); return false; } if ( validateKey( field.value ) == 0 ) { alert("Invalid subnet mask value. It should be the decimal number (0-9)."); field.value = field.defaultValue; field.focus(); return false; } if ( !checkMask(field.value,1) ) { alert('Invalid subnet mask in 1st digit.\nIt should be the number of 0, 128, 192, 224, 240, 248, 252 or 254'); field.value = field.defaultValue; field.focus(); return false; } if ( !checkMask(field.value,2) ) { alert('Invalid subnet mask in 2nd digit.\nIt should be the number of 0, 128, 192, 224, 240, 248, 252 or 254'); field.value = field.defaultValue; field.focus(); return false; } if ( !checkMask(field.value,3) ) { alert('Invalid subnet mask in 3rd digit.\nIt should be the number of 0, 128, 192, 224, 240, 248, 252 or 254'); field.value = field.defaultValue; field.focus(); return false; } if ( !checkMask(field.value,4) ) { alert('Invalid subnet mask in 4th digit.\nIt should be the number of 0, 128, 192, 224, 240, 248, 252 or 254'); field.value = field.defaultValue; field.focus(); return false; } } function checkMask(str, num) { d = getDigit(str,num); if( !(d==0 || d==128 || d==192 || d==224 || d==240 || d==248 || d==252 || d==254 || d==255 )) return false; return true; } function checkSubnet(ip, mask, client) { ip_d = getDigit(ip, 1); mask_d = getDigit(mask, 1); client_d = getDigit(client, 1); if ( (ip_d & mask_d) != (client_d & mask_d ) ) return false; ip_d = getDigit(ip, 2); mask_d = getDigit(mask, 2); client_d = getDigit(client, 2); if ( (ip_d & mask_d) != (client_d & mask_d ) ) return false; ip_d = getDigit(ip, 3); mask_d = getDigit(mask, 3); client_d = getDigit(client, 3); if ( (ip_d & mask_d) != (client_d & mask_d ) ) return false; ip_d = getDigit(ip, 4); mask_d = getDigit(mask, 4); client_d = getDigit(client, 4); if ( (ip_d & mask_d) != (client_d & mask_d ) ) return false; return true; } function validateNum(str){ for (var i=0; i='0' && str.charAt(i) <= '9')) { return false; } } return true; } //Perish added for MAC check 2008/12/3 function checkMACAddr(field){ var str = field.value; if ( str.length < 12) { alert("<% ALERT_MSG('ALERT_MSG10'); %>"); field.value = field.defaultValue; field.focus(); return false; } for (var i=0; i= '0' && str.charAt(i) <= '9') || (str.charAt(i) >= 'a' && str.charAt(i) <= 'f') || (str.charAt(i) >= 'A' && str.charAt(i) <= 'F') ) continue; alert("<% ALERT_MSG('ALERT_MSG11'); %>"); field.value = field.defaultValue; field.focus(); return false; } return true; } //Perish added for security length 2008/12/3 function checkLength(field, idx){ var str = field.value; switch(idx){ case 0: //64bit ASCII if (str.length != 5) { alert('Invalid length of WEP Key value. It should be 5 characters.'); field.value = field.defaultValue; field.focus(); return false; } break; case 1: //64bit HEX if (str.length != 10) { alert('Invalid length of WEP Key value. It should be 10 characters.'); field.value = field.defaultValue; field.focus(); return false; } break; case 2: //128bit ASCII if (str.length != 13) { alert('Invalid length of WEP Key value. It should be 13 characters.'); field.value = field.defaultValue; field.focus(); return false; } break; case 3: //128bit HEX if (str.length != 26) { alert('Invalid length of WEP Key value. It should be 26 characters.'); field.value = field.defaultValue; field.focus(); return false; } break; case 4: //PassPhrase if (str.length < 8) { alert('Pre-Shared Key value should be set at least 8 characters.'); field.value = field.defaultValue; field.focus(); return false; } if (str.length > 63) { alert('Pre-Shared Key value should be less than 64 characters.'); field.value = field.defaultValue; field.focus(); return false; } break; case 5: //PassPhrase-Hex if (str.length != 64) { alert('Pre-Shared Key value should be 64 characters.'); field.value = field.defaultValue; field.focus(); return false; } break; } return true; } //Perish added for security radius 2008/12/3 function checkRadius(field1, field2, field3){ if(checkIpAddr(field1, 'Invalid Server IP address') == false ) return false; if ( validateNum( field2.value ) == 0 ) { alert("Invalid Server Port value! It should be the decimal number (0-9)."); field2.value = field2.defaultValue; field2.focus(); return false; } d1 = getDigit(field2.value, 1); if (d1 > 65535 || d1 < 1024) { alert("Invalid Server Port value! You should set a value between 1024-65535."); field2.value = field2.defaultValue; field2.focus(); return false; } if(field3.value == ""){ alert("<% ALERT_MSG('ALERT_MSG39'); %>"); field3.value = field3.defaultValue; field3.focus(); return false ; } if ( includeSpace(field3.value)) { alert('Cannot accept space character in Server Password.'); field3.value = field3.defaultValue; field3.focus(); return false; } return true; } //Perish added for security hex 2008/12/3 function checkHex(field){ var str = field.value; for (var i=0; i= '0' && str.charAt(i) <= '9') || (str.charAt(i) >= 'a' && str.charAt(i) <= 'f') || (str.charAt(i) >= 'A' && str.charAt(i) <= 'F') ) continue; alert("<% ALERT_MSG('ALERT_MSG11'); %>"); field.value = field.defaultValue; field.focus(); return false; } return true; } function openWindow(url, windowName, wide, high) { if (document.all) var xMax = screen.width, yMax = screen.height; else if (document.layers) var xMax = window.outerWidth, yMax = window.outerHeight; else var xMax = 640, yMax=500; var xOffset = (xMax - wide)/2; var yOffset = (yMax - high)/3; var settings = 'width='+wide+',height='+high+',screenX='+xOffset+',screenY='+yOffset+',top='+yOffset+',left='+xOffset+', resizable=yes, toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes'; window.open( url, windowName, settings ); } function getRefToDivNest(divID, oDoc) { if( !oDoc ) { oDoc = document; } if( document.layers ) { if( oDoc.layers[divID] ) { return oDoc.layers[divID]; } else { for( var x = 0, y; !y && x < oDoc.layers.length; x++ ) { y = getRefToDivNest(divID,oDoc.layers[x].document); } return y; } } if( document.getElementById ) { return document.getElementById(divID); } if( document.all ) { return document.all[divID]; } return document[divID]; } function progressBar( oBt, oBc, oBg, oBa, oWi, oHi, oDr ) { MWJ_progBar++; this.id = 'MWJ_progBar' + MWJ_progBar; this.dir = oDr; this.width = oWi; this.height = oHi; this.amt = 0; //write the bar as a layer in an ilayer in two tables giving the border document.write( ' '+ '
Please wait...
'+ '
' ); if( document.layers ) { document.write( '' ); } else { document.write( '
'+ '
' ); } document.write( '
\n' ); this.setBar = resetBar; //doing this inline causes unexpected bugs in early NS4 this.setCol = setColour; } function resetBar( a, b ) { //work out the required size and use various methods to enforce it this.amt = ( typeof( b ) == 'undefined' ) ? a : b ? ( this.amt + a ) : ( this.amt - a ); if( isNaN( this.amt ) ) { this.amt = 0; } if( this.amt > 1 ) { this.amt = 1; } if( this.amt < 0 ) { this.amt = 0; } var theWidth = Math.round( this.width * ( ( this.dir % 2 ) ? this.amt : 1 ) ); var theHeight = Math.round( this.height * ( ( this.dir % 2 ) ? 1 : this.amt ) ); var theDiv = getRefToDivNest( this.id ); if( !theDiv ) { window.status = 'Progress: ' + Math.round( 100 * this.amt ) + '%'; return; } if( theDiv.style ) { theDiv = theDiv.style; theDiv.clip = 'rect(0px '+theWidth+'px '+theHeight+'px 0px)'; } var oPix = document.childNodes ? 'px' : 0; theDiv.width = theWidth + oPix; theDiv.pixelWidth = theWidth; theDiv.height = theHeight + oPix; theDiv.pixelHeight = theHeight; if( theDiv.resizeTo ) { theDiv.resizeTo( theWidth, theHeight ); } theDiv.left = ( ( this.dir != 3 ) ? 0 : this.width - theWidth ) + oPix; theDiv.top = ( ( this.dir != 4 ) ? 0 : this.height - theHeight ) + oPix; } function setColour( a ) { //change all the different colour styles var theDiv = getRefToDivNest( this.id ); if( theDiv.style ) { theDiv = theDiv.style; } theDiv.bgColor = a; theDiv.backgroundColor = a; theDiv.background = a; } function show_div(show,id) { if(show) document.getElementById(id).className = "on" ; else document.getElementById(id).className = "off" ; } /* tcpipwan.htm */ function wanShowDiv(bpapond_bool, l2tp_bool, pptp_bool, dns_bool, dnsMode_bool, pppoe_bool, static_bool, ttl_bool) { show_div(pptp_bool,"pptp_div"); show_div(l2tp_bool,"l2tp_div"); show_div(dns_bool,"dns_div"); show_div(dnsMode_bool,"dnsMode_div"); show_div(pppoe_bool,"pppoe_div"); show_div(static_bool,"static_div"); show_div(bpapond_bool,"bpapond_div"); show_div(ttl_bool,"ttl_div");//Add for TTL function in Static IP/DHCP Client/PPPoE type by Joyce, 2009-08-26 } function saveChanges_wan(form) { var wanType = form.wanType.selectedIndex ; if ( wanType == 0 ){ //static IP if ( checkIpAddr(form.wan_ip, 'Invalid IP address') == false ) return false; if (checkIPMask(form.wan_mask) == false) return false ; if (form.wan_gateway.value!="" && form.wan_gateway.value!="0.0.0.0") { if ( checkIpAddr(form.wan_gateway, 'Invalid default gateway address') == false ) return false; if ( !checkSubnet(form.wan_ip.value,form.wan_mask.value,form.wan_gateway.value)) { alert("<% ALERT_MSG('ALERT_MSG7'); %>"); form.wan_gateway.value = form.wan_gateway.defaultValue; form.wan_gateway.focus(); return false; } } else form.wan_gateway.value = '0.0.0.0'; if (form.fixedIpMtuSize != null){ d2 = getDigit(form.fixedIpMtuSize.value, 1); if ( validateKey(form.fixedIpMtuSize.value) == 0 || (d2 > 1500 || d2 < 1400) ) { alert("Invalid MTU size! You should set a value between 1400-1500."); form.fixedIpMtuSize.value = form.fixedIpMtuSize.defaultValue; form.fixedIpMtuSize.focus(); return false; } } } else if ( wanType == 1){ //dhcp wanType if (form.dhcpMtuSize != null){ d2 = getDigit(form.dhcpMtuSize.value, 1); if ( validateKey(form.dhcpMtuSize.value) == 0 || (d2 > 1492 || d2 < 1400) ) { alert("Invalid MTU size! You should set a value between 1400-1492."); form.dhcpMtuSize.value = form.dhcpMtuSize.defaultValue; form.dhcpMtuSize.focus(); return false; } } } else if ( wanType == 2){ //pppoe wanType if (form.pppUserName.value=="") { alert("<% ALERT_MSG('ALERT_MSG32'); %>"); form.pppUserName.value = form.pppUserName.defaultValue; form.pppUserName.focus(); return false; } if (form.pppPassword.value=="") { alert("<% ALERT_MSG('ALERT_MSG33'); %>"); form.pppPassword.value = form.pppPassword.defaultValue; form.pppPassword.focus(); return false; } if ( form.pppConnectType != null){ if ( form.pppConnectType.selectedIndex != 0 ) { d1 = getDigit(form.pppIdleTime.value, 1); if ( validateKey(form.pppIdleTime.value) == 0 || (d1 > 1000 || d1 < 1) ) { alert("Invalid idle time value! You should set a value between 1-1000."); form.pppIdleTime.focus(); return false; } } } // if (pppConnectType !=null) if ( form.pppMtuSize != null){ d2 = getDigit(form.pppMtuSize.value, 1); if ( validateKey(form.pppMtuSize.value) == 0 || (d2 > 1492 || d2 < 1360) ) { alert("Invalid MTU size! You should set a value between 1360-1492."); form.pppMtuSize.value = form.pppMtuSize.defaultValue; form.pppMtuSize.focus(); return false; } } // if (pppMtuSize !=null) } else if ( wanType == 3){ //pptp wanType if ( checkIpAddr(form.pptpIpAddr, 'Invalid IP address') == false ) return false; if (checkIPMask(form.pptpSubnetMask) == false) return false ; if ( checkIpAddr(form.pptpServerIpAddr, 'Invalid server IP address') == false ) return false; if ( !checkSubnet(form.pptpIpAddr.value,form.pptpSubnetMask.value,form.pptpServerIpAddr.value)) { alert('Invalid server IP address!\nIt should be located in the same subnet of local IP address.'); form.pptpServerIpAddr.value = form.pptpServerIpAddr.defaultValue; form.pptpServerIpAddr.focus(); return false; } if (form.pptpUserName.value=="") { alert('User name cannot be empty!'); form.pptpUserName.value = form.pptpUserName.defaultValue; form.pptpUserName.focus(); return false; } if (form.pptpPassword.value=="") { alert('Password cannot be empty!'); form.pptpPassword.value = form.pptpPassword.defaultValue; form.pptpPassword.focus(); return false; } if ( form.pptpMtuSize != null){ d2 = getDigit(form.pptpMtuSize.value, 1); if ( validateKey(form.pptpMtuSize.value) == 0 || (d2 > 1460 || d2 < 1400) ) { alert("Invalid MTU size! You should set a value between 1400-1460."); form.pptpMtuSize.value = form.pptpMtuSize.defaultValue; form.pptpMtuSize.focus(); return false; } } // if(pptpMtuSize != null) } // pppoe if wanType else if ( wanType == 4){ //l2tp wanType if ( checkIpAddr(form.l2tpIpAddr, 'Invalid IP address') == false ) return false; if (checkIPMask(form.l2tpSubnetMask) == false) return false ; if ( checkIpAddr(form.l2tpServerIpAddr, 'Invalid server IP address') == false ) return false; /* if ( !checkSubnet(form.l2tpIpAddr.value,form.l2tpSubnetMask.value,form.l2tpServerIpAddr.value)) { alert('Invalid server IP address!\nIt should be located in the same subnet of local IP address.'); form.l2tpServerIpAddr.value = form.l2tpServerIpAddr.defaultValue; form.l2tpServerIpAddr.focus(); return false; } */ if ( checkIpAddr(form.l2tpServergwAddr, 'Invalid IP address') == false ) return false; if (form.l2tpUserName.value=="") { alert('User name cannot be empty!'); form.l2tpUserName.value = form.l2tpUserName.defaultValue; form.l2tpUserName.focus(); return false; } if (form.l2tpPassword.value=="") { alert('Password cannot be empty!'); form.l2tpPassword.value = form.l2tpPassword.defaultValue; form.l2tpPassword.focus(); return false; } if ( form.l2tpMtuSize != null){ d2 = getDigit(form.l2tpMtuSize.value, 1); if ( validateKey(form.l2tpMtuSize.value) == 0 || (d2 > 1460 || d2 < 1400) ) { alert("Invalid MTU size! You should set a value between 1400-1460."); form.l2tpMtuSize.value = form.l2tpMtuSize.defaultValue; form.l2tpMtuSize.focus(); return false; } } } // l2tp //Added BigPond check by Perish 2008/12/2 else if ( wanType == 5){ //BigPond wanType if (form.bpa_user.value=="") { alert('User name cannot be empty!'); form.bpa_user.value = form.bpa_user.defaultValue; form.bpa_user.focus(); return false; } if (form.bpa_password.value=="") { alert('Password cannot be empty!'); form.bpa_password.value = form.bpa_password.defaultValue; form.bpa_password.focus(); return false; } if ( validateNum( form.bpa_port.value ) == 0 ) { alert("<% ALERT_MSG('ALERT_MSG41'); %>"); form.bpa_port.value = form.bpa_port.defaultValue; form.bpa_port.focus(); return false; } d1 = getDigit(form.bpa_port.value, 1); if (d1 > 65535 || d1 < 1) { alert("<% ALERT_MSG('ALERT_MSG42'); %>"); form.bpa_port.value = form.bpa_port.defaultValue; form.bpa_port.focus(); return false; } if ( checkIpAddr(form.bpa_server, 'Invalid server IP address') == false ) return false; if ( form.bpa_dhcpMtuSize != null){ d2 = getDigit(form.bpa_dhcpMtuSize.value, 1); if ( validateKey(form.bpa_dhcpMtuSize.value) == 0 || (d2 > 1492 || d2 < 1400) ) { alert("Invalid MTU size! You should set a value between 1400-1492."); form.bpa_dhcpMtuSize.value = form.bpa_dhcpMtuSize.defaultValue; form.bpa_dhcpMtuSize.focus(); return false; } } } //BigPond wanType if( wanType != 0 ) { // not static IP group = form.dnsMode; for (var r = 0; r < group.length; r++) if (group[r].checked) break; if (r == 1) { if (form.dns1.value=="") form.dns1.value="0.0.0.0"; if (form.dns1.value!="0.0.0.0") { if ( checkIpAddr(form.dns1, 'Invalid DNS1 address') == false ) return false; } if (form.dns2 != null){ if (form.dns2.value=="") form.dns2.value="0.0.0.0"; if (form.dns2.value!="0.0.0.0") { if ( checkIpAddr(form.dns2, 'Invalid DNS2 address') == false ) return false; } }//dns2 != null if (form.dns3 != null){ if (form.dns3.value=="") form.dns3.value="0.0.0.0"; if (form.dns3.value!="0.0.0.0") { if ( checkIpAddr(form.dns3, 'Invalid DNS3 address') == false ) return false; } }// dns3 != null } } else{ if (form.dns1.value=="") form.dns1.value="0.0.0.0"; if (form.dns1.value!="0.0.0.0") { if ( checkIpAddr(form.dns1, 'Invalid DNS1 address') == false ) return false; } if (form.dns2 != null){ if (form.dns2.value=="") form.dns2.value="0.0.0.0"; if (form.dns2.value!="0.0.0.0") { if ( checkIpAddr(form.dns2, 'Invalid DNS2 address') == false ) return false; } } if (form.dns3 != null){ if (form.dns3.value=="") form.dns3.value="0.0.0.0"; if (form.dns3.value!="0.0.0.0") { if ( checkIpAddr(form.dns3, 'Invalid DNS3 address') == false ) return false; } } } if (form.wan_macAddr != null){ if (form.wan_macAddr.value == "") form.wan_macAddr.value = "000000000000"; var str = form.wan_macAddr.value; if ( str.length < 12) { alert("<% ALERT_MSG('ALERT_MSG10'); %>"); form.wan_macAddr.value = form.wan_macAddr.defaultValue; form.wan_macAddr.focus(); return false; } for (var i=0; i= '0' && str.charAt(i) <= '9') || (str.charAt(i) >= 'a' && str.charAt(i) <= 'f') || (str.charAt(i) >= 'A' && str.charAt(i) <= 'F') ) continue; alert("<% ALERT_MSG('ALERT_MSG11'); %>"); form.wan_macAddr.value = form.wan_macAddr.defaultValue; form.wan_macAddr.focus(); return false; } } return true; } /*-------------------------------------------------------------------------------------------*/ //for Virtual Server function checkPortRange(field_S, field_E){ if (field_S.value=="") { alert("Port can't be empty. You should set the Start port range."); field_S.value = field_S.defaultValue; field_S.focus(); return false; } else{ if ( validateNum( field_S.value ) == 0 ) { alert("<% ALERT_MSG('ALERT_MSG41'); %>"); field_S.value = field_S.defaultValue; field_S.focus(); return false; } d1 = getDigit(field_S.value, 1); if (d1 > 65535 || d1 < 1) { alert("<% ALERT_MSG('ALERT_MSG42'); %>"); field_S.value = field_S.defaultValue; field_S.focus(); return false; } } if (field_E.value=="") { alert("Port can't be empty. You should set the End port range."); field_E.value = field_E.defaultValue; field_E.focus(); return false; } else{ if ( validateNum( field_E.value ) == 0 ) { alert("<% ALERT_MSG('ALERT_MSG41'); %>"); field_E.value = field_E.defaultValue; field_E.focus(); return false; } d2 = getDigit(field_E.value, 1); if (d2 > 65535 || d2 < 1) { alert("<% ALERT_MSG('ALERT_MSG42'); %>"); field_E.value = field_E.defaultValue; field_E.focus(); return false; } if (d1 > d2 ) { alert("<% ALERT_MSG('ALERT_MSG53'); %>"); field_E.focus(); return false; } } return true; } /*-------------------------------------------------------------------------------------------*/ function PopUpGateway(PopURL) { new1=window.open(PopURL,"b",'width=650,height=500,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=no'); } function PopUpSecurity(PopURL) { new1=window.open(PopURL,"b",'width=650,height=500,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=no'); } function PopUpSurvey(PopURL) { new1=window.open(PopURL,"b",'width=650,height=500,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=no'); } function PopUpATO(PopURL) { window.open(PopURL,"k",'width=400,height=200,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes'); } function PopUpQoS(PopURL) { window.open(PopURL,"r",'width=900,height=600,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes'); } /*-----------------------------------------------------------------------------*/ //for Qos page function is_number(value) { var str = value + ""; return str.match(/^-?\d*\.?\d+$/) ? true : false; } /* * ipv4_to_bytearray * Convert an IPv4 address dotted string to a byte array */ function ipv4_to_bytearray(ipaddr) { var ip = ipaddr + ""; var got = ip.match (/^\s*(\d{1,3})\s*[.]\s*(\d{1,3})\s*[.]\s*(\d{1,3})\s*[.]\s*(\d{1,3})\s*$/); if (!got) { return 0; } var a = []; var q = 0; for (var i = 1; i <= 4; i++) { q = parseInt(got[i],10); if (q < 0 || q > 255) { return 0; } a[i-1] = q; } return a; } /* * is_ipv4_valid * Check is an IP address dotted string is valid. */ function is_ipv4_valid(ipaddr) { var ip = ipv4_to_bytearray(ipaddr); if (ip === 0) { return false; } return true; } /* * is_port_valid * Check if a port is valid. */ function is_port_valid(port) { return (is_number(port) && port >= 0 && port < 65536); } function bigger_than(port1, port2) { return ((port1-0) > (port2-0)); } /* * set_form_default_values * Save a form's current values to a custom attribute. */ function set_form_default_values(form_id) { var df = document.forms[form_id]; if (!df) { return; } for (var i = 0, k = df.elements.length; i < k; i++) { var obj = df.elements[i]; if (obj.getAttribute('modified') == 'ignore') { continue; } var name = obj.tagName.toLowerCase(); if (name == 'input') { var type = obj.type.toLowerCase(); if ((type == 'text') || (type == 'textarea') || (type == 'password') || (type == 'hidden')) { obj.setAttribute('default', obj.value); /* Workaround for FF error when calling focus() from an input text element. */ if (type == 'text') { obj.setAttribute('autocomplete', 'off'); } } else if ((type == 'checkbox') || (type == 'radio')) { obj.setAttribute('default', obj.checked); } } else if (name == 'select') { var opt = obj.options; for (var j = 0; j < opt.length; j++) { opt[j].setAttribute('default', opt[j].selected); } } } df.setAttribute('saved', "true"); } /* * are_values_equal() * Compare values of types boolean, string and number. The types may be different. * Returns true if values are equal. */ function are_values_equal(val1, val2) { /* Make sure we can handle these values. */ switch (typeof(val1)) { case 'boolean': case 'string': case 'number': break; default: // alert("are_values_equal does not handle the type '" + typeof(val1) + "' of val1 '" + val1 + "'."); return false; } switch (typeof(val2)) { case 'boolean': switch (typeof(val1)) { case 'boolean': return (val1 == val2); case 'string': if (val2) { return (val1 == "1" || val1.toLowerCase() == "true" || val1.toLowerCase() == "on"); } else { return (val1 == "0" || val1.toLowerCase() == "false" || val1.toLowerCase() == "off"); } break; case 'number': return (val1 == val2 * 1); } break; case 'string': switch (typeof(val1)) { case 'boolean': if (val1) { return (val2 == "1" || val2.toLowerCase() == "true" || val2.toLowerCase() == "on"); } else { return (val2 == "0" || val2.toLowerCase() == "false" || val2.toLowerCase() == "off"); } break; case 'string': if (val2 == "1" || val2.toLowerCase() == "true" || val2.toLowerCase() == "on") { return (val1 == "1" || val1.toLowerCase() == "true" || val1.toLowerCase() == "on"); } if (val2 == "0" || val2.toLowerCase() == "false" || val2.toLowerCase() == "off") { return (val1 == "0" || val1.toLowerCase() == "false" || val1.toLowerCase() == "off"); } return (val2 == val1); case 'number': if (val2 == "1" || val2.toLowerCase() == "true" || val2.toLowerCase() == "on") { return (val1 == 1); } if (val2 == "0" || val2.toLowerCase() == "false" || val2.toLowerCase() == "off") { return (val1 === 0); } return (val2 == val1 + ""); } break; case 'number': switch (typeof(val1)) { case 'boolean': return (val1 * 1 == val2); case 'string': if (val1 == "1" || val1.toLowerCase() == "true" || val1.toLowerCase() == "on") { return (val2 == 1); } if (val1 == "0" || val1.toLowerCase() == "false" || val1.toLowerCase() == "off") { return (val2 === 0); } return (val1 == val2 + ""); case 'number': return (val2 == val1); } break; default: return false; } } /* * is_form_modified * Check if a form's current values differ from saved values in custom attribute. * Function skips elements with attribute: 'modified'= 'ignore'. */ function is_form_modified(form_id) { var df = document.forms[form_id]; if (!df) { return false; } if (df.getAttribute('modified') == "true") { return true; } if (df.getAttribute('saved') != "true") { return false; } for (var i = 0, k = df.elements.length; i < k; i++) { var obj = df.elements[i]; if (obj.getAttribute('modified') == 'ignore') { continue; } var name = obj.tagName.toLowerCase(); if (name == 'input') { var type = obj.type.toLowerCase(); if (((type == 'text') || (type == 'textarea') || (type == 'password') || (type == 'hidden')) && !are_values_equal(obj.getAttribute('default'), obj.value)) { return true; } else if (((type == 'checkbox') || (type == 'radio')) && !are_values_equal(obj.getAttribute('default'), obj.checked)) { return true; } } else if (name == 'select') { var opt = obj.options; for (var j = 0; j < opt.length; j++) { if (!are_values_equal(opt[j].getAttribute('default'), opt[j].selected)) { return true; } } } } return false; } /* * reset_form() * Reset a form with previously saved default values. * Function skips elements with attribute: 'modified'= 'ignore'. */ function reset_form(form_id) { var df = document.forms[form_id]; if (!df) { return; } if (df.getAttribute('saved') != "true") { return; } for (var i = 0, k = df.elements.length; i < k; i++) { var obj = df.elements[i]; if (obj.getAttribute('modified') == 'ignore') { continue; } var name = obj.tagName.toLowerCase(); var value; if (name == 'input') { var type = obj.type.toLowerCase(); if ((type == 'text') || (type == 'textarea') || (type == 'password') || (type == 'hidden')) { obj.value = obj.getAttribute('default'); } else if ((type == 'checkbox') || (type == 'radio')) { value = obj.getAttribute('default'); switch (typeof(value)) { case 'boolean': obj.checked = value; break; case 'string': if (value == "1" || value.toLowerCase() == "true" || value.toLowerCase() == "on") { obj.checked = true; } if (value == "0" || value.toLowerCase() == "false" || value.toLowerCase() == "off") { obj.checked = false; } break; } } } else if (name == 'select') { var opt = obj.options; for (var j = 0; j < opt.length; j++) { value = obj[j].getAttribute('default'); switch (typeof(value)) { case 'boolean': obj[j].selected = value; break; case 'string': if (value == "1" || value.toLowerCase() == "true" || value.toLowerCase() == "on") { obj[j].selected = true; } if (value == "0" || value.toLowerCase() == "false" || value.toLowerCase() == "off") { obj[j].selected = false; } break; } } } } } function validateKey_wep(form, idx, str, len, wlan_id) { if (idx >= 0) { if (form.elements["defaultTxKeyId"+wlan_id].selectedIndex==idx && str.length==0) { alert('The encryption key you selected as the \'Tx Default Key\' cannot be blank.'); return 0; } if (str.length ==0) return 1; if ( str.length != len) { idx++; alert('Invalid length of Key ' + idx + ' value. It should be ' + len + ' characters.'); return 0; } } else { if ( str.length != len) { alert('Invalid length of WEP Key value. It should be ' + len + ' characters.'); return 0; } } if ( str == "*****" || str == "**********" || str == "*************" || str == "**************************" ) return 1; if (form.elements["format"+wlan_id].selectedIndex==0) return 1; for (var i=0; i= '0' && str.charAt(i) <= '9') || (str.charAt(i) >= 'a' && str.charAt(i) <= 'f') || (str.charAt(i) >= 'A' && str.charAt(i) <= 'F') ) continue; alert("Invalid key value. It should be in hex number (0-9 or a-f)."); return 0; } return 1; } function check_wpa_psk(form, wlan_id) { var str = form.elements["pskValue"+wlan_id].value; if (form.elements["pskFormat"+wlan_id].selectedIndex==1) { if (str.length != 64) { alert('Pre-Shared Key value should be 64 characters.'); form.elements["pskValue"+wlan_id].focus(); return false; } takedef = 0; if (defPskFormat[wlan_id] == 1 && defPskLen[wlan_id] == 64) { for (var i=0; i<64; i++) { if ( str.charAt(i) != '*') break; } if (i == 64 ) takedef = 1; } if (takedef == 0) { for (var i=0; i= '0' && str.charAt(i) <= '9') || (str.charAt(i) >= 'a' && str.charAt(i) <= 'f') || (str.charAt(i) >= 'A' && str.charAt(i) <= 'F') ) continue; alert("Invalid Pre-Shared Key value. It should be in hex number (0-9 or a-f)."); form.elements["pskValue"+wlan_id].focus(); return false; } } } else { if (str.length < 8) { alert('Pre-Shared Key value should be set at least 8 characters.'); form.elements["pskValue"+wlan_id].focus(); return false; } if (str.length > 63) { alert('Pre-Shared Key value should be less than 64 characters.'); form.elements["pskValue"+wlan_id].focus(); return false; } } // for WPS ---------------------------------------->> //Perish mask for not used 2008/12/19 /* method = form.elements["method"+wlan_id]; clear_registrar = form.elements["wps_clear_configure_by_reg"+wlan_id]; if (wps_disabled == 0 && wps_config_by_registrar !=0) { if (clear_registrar.value==0 && (wps_encrypt_old == 2 || wps_encrypt_old == 6)) { if (((wps_wpaCipher_old & 1) && form.elements["ciphersuite"+wlan_id][0].checked==0) || (!(wps_wpaCipher_old & 1) && form.elements["ciphersuite"+wlan_id][0].checked) || ((wps_wpaCipher_old & 2) && form.elements["ciphersuite"+wlan_id][1].checked==0) || (!(wps_wpaCipher_old & 2) && form.elements["ciphersuite"+wlan_id][1].checked)) { if (!confirm(wps_warn3)) { return false; } else clear_registrar.value = 1; } } if (clear_registrar.value==0 && (wps_encrypt_old == 4 || wps_encrypt_old == 6)) { if (((wps_wpa2Cipher_old & 1) && form.elements["wpa2ciphersuite"+wlan_id][0].checked==0) || (!(wps_wpa2Cipher_old & 1) && form.elements["wpa2ciphersuite"+wlan_id][0].checked) || ((wps_wpa2Cipher_old & 2) && form.elements["wpa2ciphersuite"+wlan_id][1].checked==0) || (!(wps_wpa2Cipher_old & 2) && form.elements["wpa2ciphersuite"+wlan_id][1].checked)) { if (!confirm(wps_warn3)) { return false; } else clear_registrar.value = 1; } } if (clear_registrar.value==0 && wps_psk_old != form.elements["pskValue"+wlan_id].value && wps_psk_unmask_old != form.elements["pskValue"+wlan_id].value) { if (!confirm(wps_warn3)) { method.selectedIndex = method.defaultValue; method.focus(); return false; } else clear_registrar.value = 1; } } */ //<<------------------------------------------ for WPS return true; } //Perish added for check destination route IP 2008/12/16 function checkRouteDstAddr(field, msg) { if ( validateKey(field.value) == 0) { alert(msg + ' value. It should be the decimal number (0-9).'); field.value = field.defaultValue; field.focus(); return false; } if ( !checkDigitRange(field.value,1,0,255) ) { alert(msg+' range in 1st digit. It should be 0-255.'); field.value = field.defaultValue; field.focus(); return false; } if ( !checkDigitRange(field.value,2,0,255) ) { alert(msg + ' range in 2nd digit. It should be 0-255.'); field.value = field.defaultValue; field.focus(); return false; } if ( !checkDigitRange(field.value,3,0,255) ) { alert(msg + ' range in 3rd digit. It should be 0-255.'); field.value = field.defaultValue; field.focus(); return false; } if ( !checkDigitRange(field.value,4,0,255) ) { alert(msg + ' range in 4th digit. It should be 0-255.'); field.value = field.defaultValue; field.focus(); return false; } return true; }