Login
User Name:

Password:



Register

Forgot your password?
do_owhere recursive
Author: Khonsu
Submitted by: Khonsu
Changes list / Addchange
Author: Khonsu
Submitted by: Khonsu
6Dragons mp3 sound pack
Author: Vladaar
Submitted by: Vladaar
AFKMud 2.2.3
Author: AFKMud Team
Submitted by: Samson
SWFOTEFUSS 1.5
Author: Various
Submitted by: Samson
Users Online
AhrefsBot, CommonCrawl, DotBot, Bing

Members: 0
Guests: 34
Stats
Files
Topics
Posts
Members
Newest Member
489
3,791
19,644
596
Elwood

Today's Birthdays
There are no member birthdays today.
» SmaugMuds » General » Coding » CIDR Range Banning
Forum Rules | Mark all | Recent Posts

CIDR Range Banning
< Newer Topic :: Older Topic > Must be a way...

Pages:<< prev 1 next >>
Post is unread #1 Nov 19, 2014 9:14 pm   
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,685
JoinedJan 1, 2002

 
I've spent the better part of my spare time today on the hunt for how to handle checking an IP against a CIDR range to see if it's within that range.

ie: seeing if 1.2.3.4 falls within 1.2.0.0/15 or something.

The CIDR value could be entered via a ban command manually, or if possible calculated into the string form of 1.2.0.0/15 from the user's existing IP and added to a list for future comparisons.

Pretty much every post I've been able to find is either of the form "break it up and compare" (who never go on to explain what they mean) or consists of huge libraries that are bigger than the entire codebase, which are impractical for obvious reasons.

Does C++ not have some standard thing for this? Why does this seem like people think it's ridiculously easy to do yet can't be bothered to post their code if it really is this simple? Nobody has ever done this in MUD code before?

I have some PHP code in my blog that can do this in 7 lines of code, but it appears to be relying in part on some native libraries inside PHP that C++ doesn't have and I don't know how to translate it.

I'm hoping for a nice, clean, easy solution to this that can be trivially dropped in to use for ban comparisons.

Post is unread #2 Nov 20, 2014 5:28 pm   
Go to the top of the page
Go to the bottom of the page

Remcon
Geomancer
GroupAdministrators
Posts1,917
JoinedJul 26, 2005

 
so you want to ban everything in that range or what?

Post is unread #3 Nov 20, 2014 6:03 pm   
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,685
JoinedJan 1, 2002

 
It's just an example, but yes.

In any case, I've been in contact with the author of something I found on GitHub late last night and he's given permission to use the code he has which should solve the issue nicely and in relatively few lines of code.

Post is unread #4 Nov 20, 2014 6:23 pm   
Go to the top of the page
Go to the bottom of the page

Remcon
Geomancer
GroupAdministrators
Posts1,917
JoinedJul 26, 2005

 
cool, glad to see you got it done :)

Post is unread #5 Nov 21, 2014 4:01 pm   
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,685
JoinedJan 1, 2002

 
Yep, and it all seems to be working well too.

https://github.com/Arthmoor/AFKMud/commit/dcf958e2d07da3af28236b7d6971968903efe796 if you want to see the details :)

Pages:<< prev 1 next >>