#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. PHP获取照片exif信息

    在这个没图说个屁的年代,照片还是很重要的.如果照片上传后会自动加上 照片相关信息,那用户体验的确会好很多,本着这个想法,今天尝试了下 PHP获取照片exif信息,重要的是 获取图片的GPS信息,如果再 ...

  2. mysql 自动执行事件

    首先配置mysql的配置文件my.ini,  加上event_scheduler = 1  开启自动执行事件配置 demo drop event event_test; CREATE EVENT ev ...

  3. VBA 禁止保存

    禁止保存 在workbook事件中 Private Sub Workbook_BeforeClose(Cancel As Boolean)    Me.Saved = TrueEnd Sub Priv ...

  4. as2 针对加载进来的swf操作

    如果加载的子swf,里面的东西会随时发生变化,那么as2获取的子swf宽高也会不停在变动. 解决方法,就是在子swf里面控制设置方法,当as2需要准确获取子swf宽高时,迫使子宽高恢复到原本样子,这样 ...

  5. UI5-文档-4.29-Integration Test with OPA

    如果我们想测试我们的应用程序的交互模式或更多的可视化特性,我们也可以编写一个集成测试. 我们还没有想过测试我们与app的交互,所以在这一步中,我们将在点击“Say Hello with dialog” ...

  6. 递归实现tree JQuery

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  7. uiview animation 卡一下

    原因:有个下载图片的地方在主线程执行,导致动画卡一下.

  8. 原生nodejs 学习笔记2

    本章节学习流, 流的一个好处在于减少各种异步IO的回调地狱.IO操作遍及我们各种操作,比如数据库读写,文件读写, 文件转换压缩--别的不说,比如第一节,我们要将一个HTML文件返回浏览器,就涉及IO操 ...

  9. ArcGIS案例学习笔记4_2

    ArcGIS案例学习笔记4_2 联系方式:谢老师,135_4855_4328,xiexiaokui#qq.com 时间:第4天下午 案例1:批量水文分析地理建模 数据:实验数据\Chp11\tutor ...

  10. ==、is

    ==.is 总结 is 是比较两个引用是否指向了同一个对象(引用比较). == 是比较两个对象的值是否相等(值比较).