You are on page 1of 16

var TYPE_NETWORK_ADDRESS = "NETWORK"; var TYPE_IP_ADDRESS = "IP"; var TYPE_BRCAST_ADDRESS = "BROADCAST"; function isHexaDigit(digit) { var hexVals = new Array("0",

"1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "a", "b", "c", "d", "e" , "f"); var len = hexVals.length; var i = 0; var ret = false; for ( i = 0; i < len; i++ ) if ( digit == hexVals[i] ) break; if ( i < len ) ret = true; return ret; } function isValidKey(val, size) { var ret = false; var len = val.length; var dbSize = size * 2; if ( len == size ) ret = true; else if ( len == dbSize ) { for ( i = 0; i < dbSize; i++ ) if ( isHexaDigit(val.charAt(i)) == false ) break; if ( i == dbSize ) ret = true; } else ret = false; return ret; } function isValidHexKey(val, size) { var ret = false; if (val.length == size) { for ( i = 0; i < val.length; i++ ) { if ( isHexaDigit(val.charAt(i)) == false ) { break; } } if ( i == val.length ) { ret = true; } } return ret; } function isNameUnsafe(compareChar) { var unsafeString = "\"<>%\\^[]`\+\$\,='#&@.: \t";

if ( unsafeString.indexOf(compareChar) == -1 && compareChar.charCodeAt(0) > 3 2 && compareChar.charCodeAt(0) < 123 ) return false; // found no unsafe chars, return false else return true; } // Check if a name valid function isValidName(name) { var i = 0; for ( i = 0; i < name.length; i++ ) { if ( isNameUnsafe(name.charAt(i)) == true ) return false; } return true; } // same as is isNameUnsafe but allow spaces function isCharUnsafe(compareChar) { var unsafeString = "\"<>%\\^[]`\+\$\,='#&@.:\t"; if ( unsafeString.indexOf(compareChar) == -1 && compareChar.charCodeAt(0) >= 32 && compareChar.charCodeAt(0) < 123 ) return false; // found no unsafe chars, return false else return true; } function isValidNameWSpace(name) { var i = 0; for ( i = 0; i < name.length; i++ ) { if ( isCharUnsafe(name.charAt(i)) == true ) return false; } return true; } function isSameSubNet(lan1Ip, lan1Mask, lan2Ip, lan2Mask) { var count = 0; lan1a lan1m lan2a lan2m = = = = lan1Ip.split('.'); lan1Mask.split('.'); lan2Ip.split('.'); lan2Mask.split('.');

for (i = 0; i < 4; i++) { l1a_n = parseInt(lan1a[i]); l1m_n = parseInt(lan1m[i]); l2a_n = parseInt(lan2a[i]); l2m_n = parseInt(lan2m[i]); if ((l1a_n & l1m_n) == (l2a_n & l2m_n)) count++;

} if (count == 4) return true; else return false; } function isValidIpAddress(address) { var i = 0; if ( address == '0.0.0.0' || address == '255.255.255.255' ) return false; addrParts = address.split('.'); if ( addrParts.length != 4 ) return false; for (i = 0; i < 4; i++) { if (isNaN(addrParts[i]) || addrParts[i] =="") return false; num = parseInt(addrParts[i]); if ( num < 0 || num > 255 ) return false; } return true; } // add optional fieldname parameter //Function Name: isValidIpAddress(address[,fieldname][,type]) //Description: Check that address entered is valid ip address //Parameters: address, fieldname(optional): entering will show error message wh en encountered // type: TYPE_NETWORK_ADDRESS:check network address | TYP E_IP_ADDRESS (default) check of type IP address //output: true:no error false:has error function isValidIpAddressDl(address,fieldname,type) { var i = 0; var c = ''; var hasfield = false; if (fieldname != undefined) hasfield = true; if (address == "") { if (hasfield) alertInvalid(fieldname,address); return false; } for (i = 0; i < address.length; i++) { c = address.charAt(i); if((c>='0'&&c<='9')||(c=='.')) continue; else { if (hasfield) alertInvalid(fieldname,address); return false; } } if ( address == '0.0.0.0' || address == '255.255.255.255' )

{ if (hasfield) alertInvalid(fieldname,address); return false; } addrParts = address.split('.'); // Make sure that everything is in decimal place for (i=0; i < addrParts.length; i++){ addrParts[i] = parseInt(addrParts[i],10); addrParts[i] += ""; } if ( addrParts.length != 4 ) { if (hasfield) alertInvalid(fieldname,address); return false; } for (i = 0; i < 4; i++) { if (isNaN(addrParts[i]) || addrParts[i] =="") { if (hasfield) alertInvalid(fieldname,address); return false; } num = parseInt(addrParts[i],10); if ( num < 0 || num > 255 ) { if (hasfield) alertInvalid(fieldname,address); return false; } if (addrParts[i].length > 3) { if (hasfield) alertInvalid(fieldname,address); return false; } } if ((type == undefined) || (type==TYPE_IP_ADDRESS)){ if (parseInt(addrParts[0],10)==0||parseInt(addrParts[3],10)==0||parse Int(addrParts[0],10)==127||parseInt(addrParts[0],10)>223) { if (hasfield) alertInvalid(fieldname,address); return false; } }else{ if (type == TYPE_NETWORK_ADDRESS){ if ((parseInt(addrParts[0],10)==0) || (parseInt(addrPart s[0],10)==127)||parseInt(addrParts[0],10)>223) { if (hasfield) alertInvalid(fieldname,address); return false; } } } return true; } function getLeftMostZeroBitPos(num) { var i = 0;

var numArr = [128, 64, 32, 16, 8, 4, 2, 1]; for ( i = 0; i < numArr.length; i++ ) if ( (num & numArr[i]) == 0 ) return i; return numArr.length; } function getRightMostOneBitPos(num) { var i = 0; var numArr = [1, 2, 4, 8, 16, 32, 64, 128]; for ( i = 0; i < numArr.length; i++ ) if ( ((num & numArr[i]) >> i) == 1 ) return (numArr.length - i - 1); return -1; } function isValidSubnetMask(mask) { var i = 0, num = 0; var zeroBitPos = 0, oneBitPos = 0; var zeroBitExisted = false; if ( mask == '0.0.0.0' ) return false; maskParts = mask.split('.'); if ( maskParts.length != 4 ) return false; for (i = 0; i < 4; i++) { if ( isNaN(maskParts[i]) == true ) return false; num = parseInt(maskParts[i]); if ( num < 0 || num > 255 ) return false; if ( zeroBitExisted == true && num != 0 ) return false; zeroBitPos = getLeftMostZeroBitPos(num); oneBitPos = getRightMostOneBitPos(num); if ( zeroBitPos < oneBitPos ) return false; if ( zeroBitPos < 8 ) zeroBitExisted = true; } return true; } //Function Name: isValidSubnetMask(mask[,fieldname]) //Description: Check if mask entered is valid subnet mask or not) //Parameters: mask, fieldname(optional) shows error when encountered //output: true:no error false: has error function isValidSubnetMaskDl(mask,fieldname) { var i = 0, num = 0; var zeroBitPos = 0, oneBitPos = 0; var zeroBitExisted = false; var c = '';

var hasField = false; if (fieldname != undefined) hasField = true; for (i = 0; i < mask.length; i++) { c = mask.charAt(i); if((c>='0'&&c<='9')||(c=='.')) continue; else { if (hasField) alertInvalid(fieldname,mask); return false; } } if ( mask == '0.0.0.0' ) { if (hasField) alertInvalid(fieldname,mask); return false; } maskParts = mask.split('.'); if ( maskParts.length != 4 ) { if (hasField) alertInvalid(fieldname,mask); return false; //this part is buggy, an entry of 255.255.255. wi ll not be detected } // check that every single digit is not blank{ for (i=0; i<maskParts.length; i++) if (maskParts[i].length < 1){ if (hasField) alertInvalid(fieldname,mask); return false; } // check that every single digit is not blank} for (i = 0; i < 4; i++) { if ( isNaN(maskParts[i]) == true ){ if (hasField) alertInvalid(fieldname,mask); return false; } num = parseInt(maskParts[i]); if ( num < 0 || num > 255 ) { if (hasField) alertInvalid(fieldname,mask); return false; } if ( zeroBitExisted == true && num != 0 ) { if (hasField) alertInvalid(fieldname,mask); return false; } zeroBitPos = getLeftMostZeroBitPos(num); oneBitPos = getRightMostOneBitPos(num); if ( zeroBitPos < oneBitPos ) { if (hasField) alertInvalid(fieldname,mask); return false; } if ( zeroBitPos < 8 ) zeroBitExisted = true; } if (parseInt(maskParts[0])==0) {

if (hasField) alertInvalid(fieldname,mask); return false; } if (parseInt(maskParts[3])>=255) { if (hasField) alertInvalid(fieldname,mask); return false; } return true; } function isNumber( val ) { var len = val.length; var sign = 0; for( var i = 0; i < len; ++i ) { if( ( val.charAt(i) == '-' ) && ( sign == 0 ) ) { sign = 1; continue; } if( ( val.charAt(i) > '9' ) || ( val.charAt(i) < '0' ) ) { return false; } sign = 1; } return true; } function isValidPort(port) { var fromport = 0; var toport = 100; portrange = port.split(':'); if ( portrange.length < 1 || portrange.length > 2 ) { return false; } if ( isNaN(portrange[0]) ) return false; fromport = parseInt(portrange[0]); if ( portrange.length > 1 ) { if ( isNaN(portrange[1]) ) return false; toport = parseInt(portrange[1]); if ( toport <= fromport ) return false; } if ( fromport < 1 || fromport > 65535 || toport < 1 || toport > 65535 ) return false; return true; }

function isValidNatPort(port) { var fromport = 0; var toport = 100; portrange = port.split('-'); if ( portrange.length < 1 || portrange.length > 2 ) { return false; } if ( isNaN(portrange[0]) ) return false; fromport = parseInt(portrange[0]); if ( portrange.length > 1 ) { if ( isNaN(portrange[1]) ) return false; toport = parseInt(portrange[1]); if ( toport <= fromport ) return false; } if ( fromport < 1 || fromport > 65535 || toport < 1 || toport > 65535 ) return false; return true; } function isValidMacAddress(address) { var c = ''; var i = 0, j = 0; if ( address == 'ff:ff:ff:ff:ff:ff' ) return false; addrParts = address.split(':'); if ( addrParts.length != 6 ) return false; for (i = 0; i < 6; i++) { if (( addrParts[i] == '' )||(addrParts[i].length>2)) return false; for ( j = 0; j < addrParts[i].length; j++ ) { c = addrParts[i].toLowerCase().charAt(j); if ( (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') ) continue; else return false; } } return true; } var hexVals = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"); var unsafeString = "\"<>%\\^[]`\+\$\,'#&"; // deleted these chars from the include list ";", "/", "?", ":", "@", "=", "&" a nd # // so that we could analyze actual URLs function isUnsafe(compareChar)

// this function checks to see if a char is URL unsafe. // Returns bool result. True = unsafe, False = safe { if ( unsafeString.indexOf(compareChar) == -1 && compareChar.charCodeAt(0) > 3 2 && compareChar.charCodeAt(0) < 123 ) return false; // found no unsafe chars, return false else return true; } function decToHex(num, radix) // part of the hex-ifying functionality { var hexString = ""; while ( num >= radix ) { temp = num % radix; num = Math.floor(num / radix); hexString += hexVals[temp]; } hexString += hexVals[num]; return reversal(hexString); } function reversal(s) // part of the hex-ifying functionality { var len = s.length; var trans = ""; for (i = 0; i < len; i++) trans = trans + s.substring(len-i-1, len-i); s = trans; return s; } function convert(val) // this converts a given char to url hex form { return "%" + decToHex(val.charCodeAt(0), 16); } function encodeUrl(val) { var len = val.length; var i = 0; var newStr = ""; var original = val; for ( i = 0; i < len; i++ ) { if ( val.substring(i,i+1).charCodeAt(0) < 255 ) { // hack to eliminate the rest of unicode from this if (isUnsafe(val.substring(i,i+1)) == false) newStr = newStr + val.substring(i,i+1); else newStr = newStr + convert(val.substring(i,i+1)); } else { // woopsie! restore. alert ("Found a non-ISO-8859-1 character at position: " + (i+1) + ",\nP lease eliminate before continuing.");

newStr = original; // short-circuit the loop and exit i = len; } } return newStr; } var markStrChars = "\"'"; // Checks to see if a char is used to mark begining and ending of string. // Returns bool result. True = special, False = not special function isMarkStrChar(compareChar) { if ( markStrChars.indexOf(compareChar) == -1 ) return false; // found no marked string chars, return false else return true; } // use backslash in front one of the escape codes to process // marked string characters. // Returns new process string function processMarkStrChars(str) { var i = 0; var retStr = ''; for ( i = 0; i < str.length; i++ ) { if ( isMarkStrChar(str.charAt(i)) == true ) retStr += '\\'; retStr += str.charAt(i); } return retStr; } // Web page manipulation functions function showhide(element, sh) { var status; if (sh == 1) { status = "block"; } else { status = "none" } if (document.getElementById) { // standard document.getElementById(element).style.display = status; } else if (document.all) { // old IE document.all[element].style.display = status; } else if (document.layers)

{ // Netscape 4 document.layers[element].display = status; } } // Load / submit functions function getSelect(item) { var idx; if (item.options.length > 0) { idx = item.selectedIndex; return item.options[idx].value; } else { return ''; } } function setSelect(item, value) { for (i=0; i<item.options.length; i++) { if (item.options[i].value == value) { item.selectedIndex = i; break; } } } function setCheck(item, value) { if ( value == '1' ) { item.checked = true; } else { item.checked = false; } } function setDisable(item, value) { if ( value == 1 || value == '1' ) { item.disabled = true; } else { item.disabled = false; } } function submitText(item) { return '&' + item.name + '=' + item.value; } function submitSelect(item) { return '&' + item.name + '=' + getSelect(item); } function submitCheck(item)

{ var val; if (item.checked == true) { val = 1; } else { val = 0; } return '&' + item.name + '=' + val; } // begin, add by chenxm, 2007-8-29 // check to see if the string contain not digit char function isContainNotDigit(str) { var i = 0; for(i = 0; i < str.length; i++) { if(str.charAt(i) > '9' || str.charAt(i) < '0') return true; else continue; } return false; } // end, add by chenxm, 2007-8-29 // add by lijian, 2008-9-18 // check the IP include in DHCP SERVER area function isValidIpInDhcpServer(address,dhcpStart,dhcpEnd) { var j,k; var dhcpStartSum = 0, dhcpEndSum =0, addressSum = 0; var addrParts = address.split('.'); var dhcpStartParts = dhcpStart.split('.'); var dhcpEndParts = dhcpEnd.split('.'); if ( addrParts.length != 4 ) return false; if ( dhcpStartParts.length != 4 ) return false; if ( dhcpEndParts.length != 4 ) return false; if ( address == '0.0.0.0' || address == '255.255.255.255' ) return false; // sum the address parts for (j=3,k=1;j>=0;j--){ dhcpStartSum += parseInt(dhcpStartParts[j],10) * k; dhcpEndSum += parseInt(dhcpEndParts[j],10) * k; addressSum += parseInt(addrParts[j],10) * k; k = k * 255; } // compare them if ( addressSum < dhcpStartSum || addressSum > dhcpEndSum )

return false; else return true; } //Add is invalid message //Function Name: alertInvalid(fieldname, fieldvalue [,additional]) //Description: alerts invalid message containing fieldname and value //Parameters: fieldname, fieldvalue, additional - Any additional comments to be added //Output: MessageBox(invalid message) function alertInvalid(fieldname, fieldvalue, additional) { if (additional == undefined) alert (fieldname + " " + fieldvalue + " is invalid."); else alert (fieldname + " " + fieldvalue + " is invalid, " + addition al + "."); } //aids, 060810 for checking broadcast ip function getBroadcastIP(HostIp, Mask) { var Hostadd = HostIp.match("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$") ; var Maskadd = Mask.match("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"); var digits1, digits3; var result; var count = 0; var var var var var var var var var var var var var var var var oct1a oct2a oct3a oct4a snm1a snm2a snm3a snm4a nw1a nw2a nw3a nw4a = = = = = = = = = = = = 0; 0; 0; 0; 255; 255; 255; 255; 0; 0; 0; 0; = = = = 255; 255; 255; 255;

broad1a broad2a broad3a broad4a

digits1 = Hostadd[0].split("."); digits3 = Maskadd[0].split("."); oct1a oct2a oct3a oct4a = = = = digits1[0]; digits1[1]; digits1[2]; digits1[3];

snm1a = digits3[0];

snm2a = digits3[1]; snm3a = digits3[2]; snm4a = digits3[3]; nw1a = eval(snm1a nw2a = eval(snm2a nw3a = eval(snm3a nw4a = eval(snm4a broad1a = ((nw1a) broad2a = ((nw2a) broad3a = ((nw3a) broad4a = ((nw4a) & & & & ^ ^ ^ ^ oct1a); oct2a); oct3a); oct4a); (~ snm1a) (~ snm2a) (~ snm3a) (~ snm4a)

& & & &

255); 255); 255); 255);

result = broad1a + "." + broad2a + "." + broad3a + "." + broad4a return result; } //allison, 070419 //recheck IP range return value to indicate the failed factor //Output: -1 - NETWORK_ERROR // -2 - MASK_ERROR // -3 - NETWORK_MASK_ERROR // -4 - BRCAST_ERROR function DoValidateIpRangeCheck(Subnet, Mask, type) { var Subadd = Subnet.match("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"); var Maskadd = Mask.match("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"); // //do not do anything if required parameters are not specified if ((Subnet == "") || (Mask =="")) return true; if(Subadd == null) return -1; //"NETWORK_ERROR" if(Maskadd == null) return -2;//"MASK_ERROR" for (i = 0; i < Subnet.length; i++) { c = Subnet.charAt(i); if((c>='0'&&c<='9')||(c=='.')) continue; else return -1; //"NETWORK_ERROR" } for (i = 0; i < Mask.length; i++) { c = Mask.charAt(i); if((c>='0'&&c<='9')||(c=='.')) continue; else return -2;//"MASK_ERROR" } var i; var error=false; var count = 0;

var var var var var var var var var var var var

snm1a snm2a snm3a snm4a nw1a nw2a nw3a nw4a = = = =

= = = =

255; 255; 255; 255; 0; 0; 0; 0; = = = = 255; 255; 255; 255;

broad1a broad2a broad3a broad4a

arrSubadd = Subadd[0].split("."); arrMask = Maskadd[0].split("."); snm1a snm2a snm3a snm4a var var var var = = = = arrMask[0]; arrMask[1]; arrMask[2]; arrMask[3]; = = = = arrSubadd[0]; arrSubadd[1]; arrSubadd[2]; arrSubadd[3];

ck1a ck2a ck3a ck4a

nw1a nw2a nw3a nw4a

= = = =

eval(snm1a eval(snm2a eval(snm3a eval(snm4a = = = = ((nw1a) ((nw2a) ((nw3a) ((nw4a)

& & & & ^ ^ ^ ^

ck1a); ck2a); ck3a); ck4a); (~ (~ (~ (~ snm1a) snm2a) snm3a) snm4a) & & & & 255); 255); 255); 255);

broad1a broad2a broad3a broad4a

if ((type == undefined) || (type == TYPE_IP_ADDRESS)){ if ((broad1a == arrSubadd[0]) && (broad2a == arrSubadd[1]) && (b road3a == arrSubadd[2]) && (broad4a == arrSubadd[3])) { // errVal = "IP:" + Subnet + " Mask:" + Mask; // alertInvalid("",errVal,"Please check your subnet mask"); return -2;//"MASK_ERROR" } } else if (type == TYPE_NETWORK_ADDRESS){ var tempIP = nw1a + "." + nw2a + "." + nw3a + "." + nw4a; if (tempIP != Subnet){ errVal = Subnet + " Mask:" + Mask; alertInvalid ("Network Address",errVal); return -3;//"NETWORK_MASK_ERROR" } }

// //

else if (type == TYPE_BRCAST_ADDRESS){ var tempIP = broad1a + "." + broad2a + "." + broad3a + "." + bro ad4a; if (tempIP != Subnet) return -4;//"BRCAST_ERROR" }

return true; } function valIsBroadcastIP(HostIp, Mask) { var broadIP = getBroadcastIP(HostIp, Mask); var hostIPSplit = HostIp.split("."); var broadIPSlip = broadIP.split("."); var result = true; for (i = 0; i < 4; i++) { if (hostIPSplit[i] != broadIPSlip[i]) result = false; } return result; } //Rick, 070507, check if End IP biger than Start IP function isEndIpBigerStartIP(EndIp, StartIp) { addrEnd = EndIp.split('.'); addrStart = StartIp.split('.'); valueS = eval(addrStart[0] * 16777216) + eval(addrStart[1] * 65536) + eval(ad drStart[2] * 256) + eval(addrStart[3]); valueE = eval(addrEnd[0] * 16777216) + eval(addrEnd[1] * 65536) + eval(addrEn d[2] * 256) + eval(addrEnd[3]); if (valueE <= valueS) return false; return true; }

You might also like