PDA

View Full Version : Centralised ban management with mani



chilly
9th May 2006, 23:16
So I've got multiple servers running on a single banlist (atm the list is small so I update it myself). But its growing as I read more of these reports of TKers etc etc.

My question is this. Is there some feature of mani that does centralised ban management for you? I was thinking of doing it myself with a custom interface to a database that stores my banned steam_ids (and possibly a reason, although thats just candy) and propagates them to each server every n minutes.

Now - this has its drawbacks. For large sets of servers (say 20+) with large banlists (say 1000+) the amount of IO becomes nontrivial and will start to impede on the server's performance.

Any ideas? Any existing systems I can steal that do it in a nicer way?

Cheers,

Chilly

K. GoBlin
10th May 2006, 18:03
Mani really has nothing to do with executing your banlist, that's handled by your server.cfg. As far as I know, there's no easy way of having a centralized ban system. The closest thing to what you're looking for is SteamBans.
The banned_user.cfg file is only executed at the beginning of each map. After that, it has no need to load the bans until the map is changed.

MiasmicAnomie
10th May 2006, 19:56
Any ideas? Any existing systems I can steal that do it in a nicer way?


I could see a system where bans were kept in a db and the servers updated it periodically (rather than some master server pushing it out).

That would be fairly ok as a tool to keep stuff synced for someone who runs a fair number of servers.

chilly
10th May 2006, 22:50
I'll get coding then.

(moan: fix the webserver already :( )

Ging
11th May 2006, 00:22
(moan: fix the webserver already :( )

(moan: piss off)

chilly
11th May 2006, 13:04
Humbug.

Right, well I'll make this open source once i've got it working (fear my ****ing appaulling php) for anyone to use - of course itl be usable for a single server. The main advantage will be the mysql backend - its easier to manage, search and update that kind of thing than a bloody massive text file.

I'll let you know when I have something worth letting you know about.

ETA is some point in the future :)


I'm just quite surprised there isnt something around already to do this. In fact there must be somewhere....ah well, its not hard.

K. GoBlin
11th May 2006, 14:19
Eh...I don't believe so. I looked high and low for something like this back in 1.6 and I keep a pretty good eye out any Source developments and I have yet to see it. If you release something like this and it works well, I'd be grateful for it. Good luck.

chilly
11th May 2006, 20:53
OK, I've written the database half of it that scrapes IDs from banlists and then checks for dupes and then sticks em in the database. I'll release an alpha in the next day or two once I've prettied it up and fixed a couple bugs.

chilly
12th May 2006, 10:28
I could do with a largish banlist for proper testing. Only list I have is about 30 long, anyone out there with 1000+ list I can nick for messing about with? I dont care if they are CS:S bans or whatever.

/edit - randomly generated banlists for the win :)

K. GoBlin
12th May 2006, 12:46
PM sent.

RaideR
12th May 2006, 14:06
ok my sujestion to people whome have more than one server.

Each server has a server.cfg or a server2.cfg or a server3.cfg etc etc

in each of those add a "exec banlist.cfg"

then write a ban list with rcon commands to ban people.

Now everytime your server is restarted then the bans hold.

If you ban someone then why not write a main admin command to make a ban list or something :P

MiasmicAnomie
12th May 2006, 15:47
On linux, if they're all on the same box, you can likely just symlink to one master banned_users.cfg

chilly
12th May 2006, 16:12
I suspect mutex problems doing that? Worth a try though.

/edit - tried it, seems to work ok. Will roll it out accross all servers and see what happens when it gets added to by different servers

MiasmicAnomie
12th May 2006, 16:27
I doubt they use any kind of ipc to control access to the file. You'd just want to make sure that you never did a ban simultaneously on two different servers.

Smokey
12th May 2006, 21:30
Symlinking works fine - and is what is in use on my four public servers. I also have a little cron job that cycles through the servers every few minutes first writing memory resident bans on each one to the shared ban list; then reading them back into memory after all the writes are done, which means I don't have to wait for a full set of map changes for numpties to be gone \o/

S.

chilly
14th May 2006, 13:23
Symlinking works fine - and is what is in use on my four public servers. I also have a little cron job that cycles through the servers every few minutes first writing memory resident bans on each one to the shared ban list; then reading them back into memory after all the writes are done, which means I don't have to wait for a full set of map changes for numpties to be gone \o/

S.

how does that work then? There some util that flushes it for you or do you use some magic shizz?

Chilly

Smokey
15th May 2006, 11:04
Just a bit of shell scripting making use of a handy rcon tool(Can't remember where I downloaded it from, but there are a few out there that will do the trick).

S.

chilly
15th May 2006, 13:32
righto