Apache Mina 白名單實現方法

2021-09-01 09:03:12 字數 2944 閱讀 8223

mina自帶了乙個黑名單過濾器blacklistfilter,可過濾黑名單列表中的網路連線。用來防止非法的客戶端訪問。

但在某些應用場景裡需要設定白名單,只接收某些指定ip的客戶端發來的資料。這就需要實現白名單功能。

我們可以自己實現白名單過濾器,方法很簡單只需仿照blacklistfilter做些修改即可。

我自己寫的whitefilter,**如下:

/**

* whitelist filter (based on mina's blacklist filter).

*/public class whitelistfilter extends iofilteradapter

whitelist.clear();

for (inetaddress addr : addresses)

} public void setsubnetwhitelist(subnet subnets)

whitelist.clear();

for (subnet subnet : subnets)

} public void setwhitelist(iterableaddresses)

whitelist.clear();

for (inetaddress address : addresses)

} public void setsubnetwhitelist(iterablesubnets)

whitelist.clear();

for (subnet subnet : subnets)

} public void allow(inetaddress address)

allow(new subnet(address, 32));

} public void allow(subnet subnet)

whitelist.add(subnet);

} public void disallow(inetaddress address)

disallow(new subnet(address, 32));

} public void disallow(subnet subnet)

whitelist.remove(subnet);

} @override

public void sessioncreated(nextfilter nextfilter, iosession session) else

} @override

public void sessionopened(nextfilter nextfilter, iosession session) throws exception else

} @override

public void sessionclosed(nextfilter nextfilter, iosession session) throws exception else

} @override

public void sessionidle(nextfilter nextfilter, iosession session, idlestatus status) throws exception else

} @override

public void messagereceived(nextfilter nextfilter, iosession session, object message) else

} @override

public void messagesent(nextfilter nextfilter, iosession session, writerequest writerequest) throws exception else

} private void blocksession(iosession session)

private boolean isallowed(iosession session)

}} return false;

}}

呼叫時要加入whitelist過濾器

ioacceptor acceptor = new niosocketacceptor();

whitelistfilter whitelistfilter=new whitelistfilter();

inetaddress address= new inetaddress[1];

address[0]=inetaddress.getbyname("192.168.136.123");

whitelistfilter.setwhitelist(address);

acceptor.getfilterchain().addfirst("white",whitelistfilter);

acceptor.getfilterchain().addlast("logger", new loggingfilter());

acceptor.getfilterchain().addlast("codec", new protocolcodecfilter(new textlinecodecfactory(charset.forname("gbk"))));

acceptor.sethandler(new serverhandler());

acceptor.getsessionconfig().setreadbuffersize(2048);

acceptor.getsessionconfig().setidletime(idlestatus.both_idle, 10);

acceptor.bind(new inetsocketaddress(port));

這樣服務端只會從指定的ip接收資料,如果客戶端使用其他的ip位址則服務端拒絕連線。

Apache Mina 白名單實現方法

mina自帶了乙個黑名單過濾器blacklistfilter,可過濾黑名單列表中的網路連線。用來防止非法的客戶端訪問。但在某些應用場景裡需要設定白名單,只接收某些指定ip的客戶端發來的資料。這就需要實現白名單功能。我們可以自己實現白名單過濾器,方法很簡單只需仿照blacklistfilter做些修改...

Apache Mina 白名單實現方法

mina自帶了乙個黑名單過濾器blacklistfilter,可過濾黑名單列表中的網路連線。用來防止非法的客戶端訪問。但在某些應用場景裡需要設定白名單,只接收某些指定ip的客戶端發來的資料。這就需要實現白名單功能。我們可以自己實現白名單過濾器,方法很簡單只需仿照blacklistfilter做些修改...

php檔案白名單 php實現ip白名單黑名單功能

這個是乙個檢測ip是否非法的php函式,適應於白名單,黑名單功能開發,主要場景應用於 api 限制,訪問限制等.複製 如下 安全ip檢測,支援ip段檢測 param string ip 要檢測的ip param string array ips 白名單ip或者黑名單ip return boolean...