ip白名单 通过* ? 检测IP匹配 轻量级

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

#include "stdafx.h"

#include <windows.h>

#include <string.h>

#include <assert.h>

 

const
int maxCount = 100;

const
int strMaxLen = 16;

 

 

BOOLEAN IsMatchPattern(const
char* ipPattern,const
char* ipChar)

{

 char* delims = ".";

 char* pPattern[4] = {0};

 char* pIp[4] = {0};

 char
i = 0,j = 0;;

 char
_ipPattern[strMaxLen] = {0};

 char
_ipChar[strMaxLen] = {0};

 if( !ipPattern || !ipChar)

  return
FALSE;

 // *字符前后只允许为.字符

 if(‘*‘
== ipPattern[0] && ‘.‘
!= ipPattern[1])

  return
FALSE;

 if( ‘*‘
== ipPattern[strlen(ipPattern)-1] && ‘.‘
!= ipPattern[strlen(ipPattern)-2])

  return
FALSE;

 for(i = 1;i < (strlen(ipPattern)-2);i++)

 {

  if( ‘*‘
== ipPattern[i])

   if( ‘.‘
!= ipPattern[i-1] || ‘.‘
!= ipPattern[i+1] )

    return
FALSE;

  continue;

 }

 memcpy(_ipPattern,ipPattern,strlen(ipPattern));

 memcpy(_ipChar,ipChar,strlen(ipChar));

 pPattern[0] =strtok(_ipPattern,delims);

 for(i = 1 ;i < 4;i++)

 {

  pPattern[i] =strtok(NULL,delims);

 }

 pIp[0] =strtok(_ipChar,delims);

 for(i = 1 ;i < 4;i++)

 {

  pIp[i] =strtok(NULL,delims);

 }

 // 分解字符串检测 按‘.‘分成四个子字符串 每个字符串长度不超过3

 for(i = 0 ;i < 4;i++)

 {

  if(strlen(pPattern[i]) > 3)

   return
FALSE;

 }

 for(i = 0 ;i < 4;i++)

 {

  if(strlen(pIp[i]) > 3)

   return
FALSE;

 }

 

 // 检测字符串匹配 有*号则放过检测

  for(i = 0;i < 4;i++)

 {

  if( memcmp((void*)(pPattern[i]),"*",1) ==0 )

  {

   continue;

  }

  if( strlen(pPattern[i]) != strlen(pIp[i]) )

   return
FALSE;

  for(j = 0;j < strlen(pPattern[i]);j++)

  {

   char* subchPattern = pPattern[i];

   char* subchIp = pIp[i];

   if(subchPattern[j] != ‘?‘
&& subchPattern[j] != subchIp[j])

    return
FALSE;

  }

 }

 return
TRUE;

}

 

int
_tmain(int
argc, _TCHAR* argv[])

{

 char
ipCheckPattern[strMaxLen] = "192.*.?2?.87";

 assert( FALSE == IsMatchPattern(ipCheckPattern,"192.168.1.99") );

 assert( FALSE == IsMatchPattern(ipCheckPattern,"192.168.272.87") );

 assert( TRUE == IsMatchPattern(ipCheckPattern,"192.168.120.87") );

 assert( TRUE == IsMatchPattern(ipCheckPattern,"192.122.223.87") );

 assert( FALSE == IsMatchPattern(ipCheckPattern,"172.19.66.87") );

 assert( FALSE == IsMatchPattern(ipCheckPattern,"172.0.0.87") );

 assert( TRUE == IsMatchPattern(ipCheckPattern,"192.178.129.87") );

 assert( FALSE == IsMatchPattern(ipCheckPattern,"192.212.17.71") );

 return
0;

}

 

ip白名单 通过* ? 检测IP匹配 轻量级,布布扣,bubuko.com

时间: 2024-08-12 14:54:40

ip白名单 通过* ? 检测IP匹配 轻量级的相关文章

Java IP白名单相关工具类

关于设置IP白名单相关的一些方法,整理,记录了一下. package com.tools.iptool; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.regex.Pattern; /** * @ClassName:IPWhiteList * @Function: IP 白名单. * @Reason:关于IP白名

Windows Azure Web Site (14) Azure Web Site IP白名单

<Windows Azure Platform 系列文章目录> 我们知道,在Azure Cloud Service和Virtual Machine,可以通过Endpoint ACL (Access Control List)访问控制列表.来设置IP白名单规则. 具体请参考:Windows Azure Virtual Network (10) 使用Azure Access Control List(ACL)设置客户端访问权限 在默认情况下,Azure Web Site是没有IP白名单的.也就是说

Centos防火墙添加IP白名单

Centos iptables防火墙添加IP白名单,指定IP可访问端口 vi /etc/sysconfig/iptables 以下为我虚拟机的防火墙为例(Centos 7) # sample configuration for iptables service # you can edit this manually or use system-config-firewall # please do not ask us to add additional ports/services to t

IP白名单

package com.ecreditpal.common.util; import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.regex.Pattern; /** * @ Author :sunpz * @ Date :Created in 15:20

利用CentOS系统IPtables防火墙添加网站IP白名单

参考博文: 利用CentOS系统IPtables防火墙添加360网站卫士节点IP白名单 centos6.5添加白名单如下: 在防火墙 配置文件中加入白名单  ip -A INPUT -s 183.136.133.0/24 -j ACCEPT 批量添加  参考博文 如上! 查看iptables规则是否生效 [[email protected] ~]# iptables -nL centos7添加白名单参考博文: centOS7 下利用iptables配置IP地址白名单

通过网站不能跳转登录的案例来看IP白名单的设置

最近在公司遇到一个问题,进入公司的游戏产品官网注册一个普通用户账号,登录官网 然后点击进入该游戏产品的论坛,不能自动跳转到论坛实现自动登录 于是自己去官网注册了一个普通用户账号,登录官网,测试看看,发现确实不能自动跳转到论坛 登录论坛的服务器数据库,查看到数据库里已经有刚刚注册的用户数据了,但密码没有同步过来 经过和开发的一起分析和故障排查,发现一个报错程序 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communicatio

微信公众平台IP白名单问题

在开发使用微信公众平台时,目前遇到有三处需要配置IP白名单. 1.微信公众平台,“获取access_token”接口新增IP白名单保护,官网:https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1495617578&version=1&lang=zh_CN&platform=2 2.微信商户平台,开通企业付款到零钱时,需要设置IP白名单 3.微信开放平台中,第三方平台开发调用相关接口时,需

PHP 限制访问ip白名单

一  上代码 config.php //ip白名单配置 'ipWlist'=>[ 'ifFilter'=>true, //是否开启白名单功能 'wlist'=>[ '10.0.0.19', ], 'warea1'=>'10.8.0.0/16', //白名单网段1 'warea2'=>'10.12.0.0/16', //白名单网段1 ], commonfunc.php private function checkIp(){ $user_IP = ($_SERVER["

在Linux服务器上添加ip白名单允许ssh登录访问

vi /etc/hosts.allow # hosts.allow This file contains access rules which are used to # allow or deny connections to network services that # either use the tcp_wrappers library or that have been # started through a tcp_wrappers-enabled xinetd. # # See