Login
User Name:

Password:



Register

Forgot your password?
void nanny_get_new_race -- comm.c
Mar 13, 2025 7:08 am
By Elwood
IPv6
Jan 25, 2025 10:45 pm
By Samson
mudstrlcpy and mudstrlcat
Jan 18, 2025 5:23 pm
By Samson
I3 and IMC
Jan 17, 2025 9:35 pm
By Samson
AFKMud 2.5.1
Jan 17, 2025 2:22 pm
By Samson
SWFotEFUSS 1.5.3
Author: Various
Submitted by: Samson
SWRFUSS 1.4.3
Author: Various
Submitted by: Samson
SmaugFUSS 1.9.8
Author: Various
Submitted by: Samson
AFKMud 2.5.2
Author: AFKMud Team
Submitted by: Samson
SmaugFUSS 1.9.7
Author: Various
Submitted by: Samson
Users Online
Anthropic, Amazonbot, Bytespider, Bing, AhrefsBot

Members: 0
Guests: 2
Stats
Files
Topics
Posts
Members
Newest Member
507
3,812
19,722
591
TracySpencer

» 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,707
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,992
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,707
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,992
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,707
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 >>