#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匹配 轻量级的更多相关文章

  1. Java IP白名单相关工具类

    关于设置IP白名单相关的一些方法,整理,记录了一下. package com.tools.iptool; import java.util.ArrayList; import java.util.Ha ...

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

    <Windows Azure Platform 系列文章目录> 我们知道,在Azure Cloud Service和Virtual Machine,可以通过Endpoint ACL (Ac ...

  3. Centos防火墙添加IP白名单

    Centos iptables防火墙添加IP白名单,指定IP可访问端口 vi /etc/sysconfig/iptables 以下为我虚拟机的防火墙为例(Centos 7) # sample conf ...

  4. IP白名单的实现(PHP)

    有些项目可能会用到一个IP地址的白名单黑名单之类的验证. 比如,只有IP地址在白名单中,才可以访问该系统. 那么此时,白名单的维护,一般是一个文件,里边是一些IP地址(每行一个IP),当然也有的可能是 ...

  5. 对actuator的管理端点进行ip白名单限制(springBoot添加filter)

    在我们的SpringCloud应用中,我们会引入actuator来进行管理和监控我们的应用 常见的有:http://www.cnblogs.com/yangzhilong/p/8378152.html ...

  6. 嵌入式Linux可用的防火墙——iptables:实现ip白名单、mac地址白名单

    iptables是linux系统下的一个功能强大的模块,不仅可以用作防火墙,还可以实现NAT等众多路由功能.iptables的容器有很清晰的层次关系: 1. iptables是表的容器,iptable ...

  7. 除了白名单外的IP每秒最多处理 8 个请求 limit_conn_zone

    防止黑客知道你的源服务器真实IP进行并发攻击,通常只需要保护动态文件请求,�php. 添加文件 nginx/conf/limit/whiteip.conf 里面是你要忽略限制的 白名单 IP地址,通常 ...

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

    参考博文: 利用CentOS系统IPtables防火墙添加360网站卫士节点IP白名单 centos6.5添加白名单如下: 在防火墙 配置文件中加入白名单  ip -A INPUT -s 183.13 ...

  9. 解决微信公众平台IP白名单

    微信公众平台,作为自媒体的旗舰级产品,越来越多的人已经投入它的怀抱.正如它的广告词所说:再小的个体,也有品牌 好吧,闲话不多说,今天要说的是它的IP白名单机制. 我们现在安装的大部分的电信的家庭级别的 ...

  10. 微信公众平台宣布增加接口IP白名单提高安全性

    微信公众平台目前已经发布通知在平台接口调用上为了提高安全性需要添加IP白名单并仅允许白名单IP调用. 目前微信公众平台面向开发者主要提供的开发者ID和开发者密钥,在调用时ID和密钥通过检验即可进行调用 ...

随机推荐

  1. redis——队列

    Redis消息通知系统的实现 Posted on 2012-02-29 最近忙着用Redis实现一个消息通知系统,今天大概总结了一下技术细节,其中演示代码如果没有特殊说明,使用的都是PhpRedis扩 ...

  2. linux7系统开机报错failed to start login service

    1.开机报错failed to start login service 参考网站:https://unix.stackexchange.com/questions/264994/kali-sudden ...

  3. 自动化运维工具 SaltStack 在云计算环境中的实践

    http://www.talkwithtrend.com/Article/218473

  4. SpringMVC 之@RequestBody 接收Json数组对象

    1. 摘要 程序流程: 前台使用ajax技术,传递json字符串到后台: 后台使用Spring MVC注解@RequestBody 接受前台传递的json字符串,并返回新的json字符串到前台: 前台 ...

  5. leetcode404

    /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...

  6. Pycharm远程连接服务器(windows下远程修改服务器代码)

    1.写在前面     之前一致用putty,ssh,修改代码,或者本地修改,上传到服务器,各种不爽,现在改用xshell,但是有时候还是不方便感觉,于是自己配置了远程连接pycharm,这样不用总是到 ...

  7. c++builder 6 远程调试

    Delphi7环境 一.目标远程机器: 安装服务光盘里有,单独安装,启动,启动后目标机的托盘图标中会出现一个小“虫子”debug的图标 bordbg61.exe D:\Program Files (x ...

  8. myeclipse2016-ci破解疑难杂症问题整理

    感谢网上的各位大神,在你们的基础,我又整理了下安装成功的心得,破解不成功时一定注意下红色字体内容,避免被坑,都是教训. 试了网上N种破解工具+方法,Myeclipse 2016装了很多遍(本人官网下载 ...

  9. ABAP-FTP通用操作

  10. 在eclipse中创建maven项目,亲测有效,详细步骤

    一.想要使用maven,首先要配置本地maven的环境 1.在http://maven.apache.org/download.cgi中去下载maven 2. 3.下载完毕后将压缩包解压到自己记住的位 ...