'*************************************' FUNCTION Checkip (Cinput_IP, CBound_ip) 'created by qqdao, qqdao@263.net 2001 / 11/28 'Description: First, it is necessary to cycle, then determine if "-", if there is a split processing, finally determine if the' parameter: Cinput_ip, the IP 'CBound_ip, given The range format is, single IP, and range IP, range IP finally uses "-" segmentation, if it is "*", you must add ": allow" after each range ": allow" means allowing login, add ": "Refer to refusing to log in. Multiple scope is ";" separated ", for example, 192.168.1 *. *: Allow; 192.168.1.1: allow; 192.168.1.1-10: refuse" 'return value: true / false' Update: 2001/12/05 Support Allow, Refuse supports' * ', don't want to be? Support, because and * almost' *************************************** FUNCTION Checkip (CINPUT_IP, CBOUND_IP)
DIM CSINGLE_IP, CTEMP_IP, CSTART_IP, CEND_IP
Checkip = false
CSINGLE_IP = Split (CBound_IP, ";")
For i = 0 to Ubound (csingle_ip)
If INSTR (CSINGLE_IP (I), "Refuse") <> 0 Then 'is rejected
CTEMP_IP = Left (CSINGLE_IP (I), INSTR (CSINGLE_IP (i), ":") - 1)
if INSTR (CTEMP_IP, "*") <> 0 THEN 'is a wide range
cstart_ip = left (ctemp_ip, instr (ctemp_ip, "*") - 1)
if LEFT (CINPUT_IP, LEN (CSTART_IP)) = cstart_ip Then
Checkip = false
EXIT FUNCTION
END IF
END IF
IF INSTR (CTEMP_IP, "-") = 0 THEN
cstart_ip = ctemp_ip
CEND_IP = CTEMP_IP
Else
cstart_ip = left (ctemp_ip, instr (ctemp_ip, "-") - 1)
CEND_IP = Left (cstart_ip, INSTRREV (cstract_ip, ") - 1) ". " MID (ctemp_ip, instr (ctemp_ip," - ") 1)
END IF
IF IP2STR (CINPUT_IP)> = IP2Str (cstart_ip) and ip2str (Cinput_ip) <= IP2Str (CEND_IP) THEN
Checkip = false
EXIT FUNCTION
END IF
Elseif INSTR (CSINGLE_IP (i), "allow") <> 0 THEN 'Allow
CTEMP_IP = Left (CSINGLE_IP (I), INSTR (CSINGLE_IP (i), ":") - 1)
If INSTR (CTEMP_IP, "*") <> 0 THEN 'is a wide range cstart_ip = left (ctemp_ip, instr (ctemp_ip, "*") - 1)
if LEFT (CINPUT_IP, LEN (CSTART_IP)) = cstart_ip Then
Checkip = TRUE
END IF
END IF
IF INSTR (CTEMP_IP, "-") = 0 THEN
cstart_ip = ctemp_ip
CEND_IP = CTEMP_IP
Else
cstart_ip = left (ctemp_ip, instr (ctemp_ip, "-") - 1)
CEND_IP = Left (cstart_ip, INSTRREV (cstract_ip, ") - 1) ". " MID (ctemp_ip, instr (ctemp_ip," - ") 1)
END IF
IF IP2STR (CINPUT_IP)> = IP2Str (cstart_ip) and ip2str (Cinput_ip) <= IP2Str (CEND_IP) THEN
Checkip = TRUE
Else
Checkip = false
END IF
END IF
NEXT
END FUNCTION
'*****************************' Function IP2STR (CIP) 'created by qqdao, qqdao@263.net 2001/11 / 28 'Reference IP IP Algorithm' Parameters: CIP IP Address 'Return Value: Convert Naturation' ************************************ **
Function IP2STR (CIP)
DIM STR1, STR2, STR3, STR4
DIM CIP_TEMP
IF CIP = "127.0.0.1" THEN CIP = "192.168.0.1"
STR1 = Left (CIP, INSTR (CIP, ".") - 1)
CIP_TEMP = MID (CIP, INSTR (CIP, ".") 1)
STR2 = Left (CIP_TEMP, INSTR (CIP_TEMP, ".") - 1)
CIP_TEMP = MID (CIP_TEMP, INSTR (CIP_TEMP, ") 1)
STR3 = Left (CIP_TEMP, INSTR (CIP_TEMP, ") - 1)
STR4 = MID (CIP_TEMP, INSTR (CIP_TEMP, ") 1)
IF isnumeric (str1) = 0 or isnumeric (str3) = 0 or isnumeric (str4) = 0 THEN
Else
IP2STR = CINT (str1) * 256 * 256 * 256 CINT (STR2) * 256 * 256 CINT (STR3) * 256 CINT (STR4) -1
END IF
END FUNCTION