Hello Unvanquished team,
Some of you may know me from the team of people who run the X Group of Tremulous 1.1 servers, currently servers W, X, Z and F.
After an interesting exchange with Ishq about collaboration with the Unvanquished project, we decided I should share some of the staff's experience when running multiple servers and the things that help us keep things running.
THE X GROUP GLOBAL SYSTEM
Before we had globals, we were using the plain old !ban command and in the reason for the ban, we would direct players to our internationalized ban information page at http://xserverx.com/ban/ so they could understand in their language, the reason for the ban and details on how to appeal the ban.
At some point in time, our developers gave us a mysql-based mechanism to further extend the functionality provided by the legacy !ban command. We are able to apply different restrictions to players depending on the IP/subnet they connect from.
The restrictions are: denybuild, handicap, mute, forcespec and ban
In addition to the restriction, we're able to whitelist players by their GUID or their static IP address, overriding any other restriction that might be effective for their subnet.
Example: to denybuild a newbie builder/deconner named DeconMeister from IP address 192.0.43.10, our admins do
!gdenybuild 192.0.43.10 [Description here]
We have other commands to list globals, delete entries and add/delete players to the whitelist.
Functionality of the global system is limited. We're presently only able to specify single IP addresses (/32) and /24 and /16 subnets. It was desirable to have full CIDR support (/12, /20 etc.) support with our globals but we're out of active developers to implement this functionality. We also lack a mechanism to automatically purge global entries that have not been 'triggered' in a certain amount of time. Our globals database is public and can be viewed at http://xserverx.com/globals/
I believe it would be great if Unvanquished could do something as versatile for the admin system.
Ideally, I would be able to have commands like these for managing player restrictions
!gadd [B|H|W|D|M|S] [IP|NET|SLOT] [Description]
Example to Denybuild Noobmeister, I would do
!gadd D 192.0.43.10 Deconmeister-deconner
Or if she connects with a broad range of dynamic IP addresses in a /12 netblock
!gadd D 192.0.43.0/12 Deconmeister-deconner
Other features I would have loved to have if Tremulous was still being actively developed, are:
1. AUTOMATIC LOG ROTATION
At the time of writing, our server W games.log is 583 MB with 9.5 million lines, starting 15 september 2012. I'd like a setting in server.cfg to automagically rotate logs by date or size, storing a specified number of old logs in the form games.log.0, games.log.1
2. EXTENDED TIMESTAMPING
Presently, to find which date an incident occured, I have to find the "Realtime: " entry in the log file and then start from there. I have plenty of disk space so I have no problems in having an extended timestamp where each line of the log file would have the full date before the time
For instance, rather than have
23:27 ClientConnect: 13 [192.0.43.10] (ABCDEF12345ABCD1235) "DeconMeister"
I would have
2013-02-04 23:27 ClientConnect: 13 [192.0.43.10] (ABCDEF12345ABCD1235) "DeconMeister"
Of course the timeformat is selectable in the server cfg to cater for people who like to use different formats such as YY-MM-DD or DD-MM-YYYY
3. CLIENT-SIDE MESSAGE FILTERS
When moderating a match, I may want to filter out messages like who was killed by whom on a server without FF. I am more interested to see build events to catch those pesky deconners.
I'll amend my post when I remember of other things.