English

Contents

Abstract

This development was done to extend UrbanTerror Server features.The first objective is try to decrease cheater population in the game.The second objetive is to add some features to the server that will help to make admins life easier.

BAN by GUID system

Once upon a time...

As in Argentina ISP companies assign dynamic IPs to clients, BAN by IP is futile. The solution we implemented is to ban by GUID and ban by excess of GUID by one IP, adding a new layer to BAN process.

Banning a GUID

There are no special things you have to do to use it, just set sv_enableBANGUID to 1 in your server configuration file and use ban like always.

Note: You have to consider though, that the ban is PERMANENT, so if you ban a GUID the only way to undo it, is editing regsfile.txt: search the banned guid, delete the line and then run "rcon sv_reloadRegs 9" to reload entire file.

Banned GUIDs will be written to regsfile.txt in the format GUID:B

You may ban a GUID manually by editing the file regsfile.txt, adding a line in the described format and then reloading the file using "rcon sv_reloadRegs 9".

Banning by excess of GUID in one IP

As we know, ban by GUID not always work as fine as one may suppose. Change GUID es very easy and cheats may change GUID every time they connect to server. So this system control how many GUIDs has an IP and when a limit is reached the connection will be rejected.

To use this system just set sv_enableRegsIP to "1" and set sv_RegIPGUIDAllowed to the value of allowed GUID by IP. (Set it to "0" will let infinite GUID by IP but it will still save all IP and GUID relation. A value of 3 may be a good number).

Note: You have to consider though that personas in a cybercoffe or in a LAN with internet access may have share the same public IP, so you will reject this players too!

The only way that this players may connect without taking care of this restriction is registrering them as R or A. (Please see below to know how to do it).

Registration System

A long time ago, in a galaxy far, far away. ...

Considering some problems we have in our servers, like abuse of votekick and votemap (ie: votespam) from some groups of players that only want to bother others, the only solution we had was to disable all votes and so, only admins could kick players and change maps.

But admins aren't available all the time, so sometimes users, in the absense of admins, need to kick a cheater, a team killer, someone away from keyboard or specting too much.

To solve this, we propose a very simple idea: to distinguish a "users community" which you can "trust", from the "rest of the world".

So the implemented solution is to give the (registered) community permissions to vote (kick, map, nextmap) and restrict the "rest of the world" to only vote for nextmap.


* There are 4 types of players:
* 'U': These are Unkown users, the only privilege that they have is vote to nextmap
(if enabled in g_allowvote)
* 'R': These are common players, they can do what players were able to do before you
activate sv_enableRegs variable.
* 'A': These are admins, the players that have rcon password and you trust them
to let them use it.
* 'B': These are banned players.


   * Procedure to register a player:
There are two ways to register a player:
1- While the user is playing, an admin may use the trust command.
2- Somebody that has access to server file system may
edit regsfile.txt and add the GUID to the file, using
the format GUID:T where T may be R or A (or even U or B ).
After editing the file you have to run "rcon sv_reloadRegs 9"
to reload entire file.
* Procedure to unregister a player
There are two ways to unregister a player:
1- While the user is playing, an admin may use untrust command.
2- Somebody that has access to server file system, may
edit regsfile.txt, find the GUID and replace R or A to U.
After editing the file you have to run "rcon sv_reloadRegs 9"
to reload entire file.


   The different users types may be showed in 3 ways in the game:
1- You may see it in the nick adding T| before the player nick (it may be T, R, U or A).
2- You may see it using colors (see below on how to set colors to users),
you will see it in the status panel and in the bands that the players have.
In this case g_armbands must be 0.
3- You may see both ways, color and nick. (g_armbands must be 0).


'Notes about admins'

Sometime admins do not want others to know they are admins, i.e. to spectate a cheater, see how the players behave without them, or just don't want to be bothered.In this case, set sv_RegsShowAdmin to 0 and your A users will be shown as R users.

Note that even if you set sv_RegsShowAdmin to 0, the rcon command status will always show admins.

Rcon control system

Many times you have to give rcon to somebody to let him configure a server or close a server for a match, load config files, etc.

Rcon sometimes can get to people you do not trust, and you can't change the rconpassword every day.

To avoid any kind of "rcon attack" now rcon only can be executed from a client with a valid GUID (A users).

To enable this system you have to set sv_enableRegRcon to 1.

If somebody has rcon, he is not an A user and tries to send a rcon command while playing, the issue will be logged and every admin playing at the moment in the server will receive a chat notification about this ("Player_name is trying to use rcon in the server without permission").

While is very easy to register a user, is not so easy to register an admin (and yes, it is intentional). The only way is editing regsfile.txt and adding (or searching in case the new admin was already a R user) GUID:A. After editing the file you have to run "rcon sv_reloadRegs 9" to reload entire file.

As you know, you may send connectionless command via rcon, in this case the GUID verification will be useless, so if you enable the system and you want to send rcon in this way you have to set the sv_rconRemotePassword variable in the server. This password will let you send rcon commands in a connectionless way and, while you are playing, it is a fully functional rcon. NOTE: in the client you have to set the same variable, so you just set "rconpassword" and the server looks for your access level.

If somebody that has rcon tries to send a command in connectionless way and the rconpassword in the client is not the same as sv_rconRemotePassword the issue will be logged and every admin playing at this moment in the server will receive a chat notification about the problem.

Name system based on GUID

As many players use differents nicks and sometimes you can't make up your mind whether to this player it's a well know outstanding gamer or a cheater, two new rcon commands where added to know all nicks related to a player, using GUID as common information. You have to set sv_enableRegsNames to 1 to enable this feature.

Command "whois <player number>" will tell you all names that have the same guid.

Command "whothehell" will do the same as whois but will show all clients playing at a given moment.

Admins particular features

Status command always will show user type using the player's nick and admins always will be shown with "A|" even if sv_RegsShowAdmin is set to 0.

New command "tella" (see below) was implemented to enable chat only between admins playing at a given moment.

Team balance feature

As many times, in public servers, an unbalanced match is the most common and irritating things due all players claims for "TEAMS", but nobody wants to change the team.

Unbalanced match was cause by two factors:

  • Players that not use autojoin.
  • Players that disconnect from the same team in a short time and there are not players trying to connect to the server to replace them.

So, new variable, sv_enableTeamBalance was created. This will take care for both situation. This will kick anybody who do not want to use auto-join or spectator team (so you cannot choice team). It's important to know that if you go to spec and want to return to the game, you MUST use auto-join and cannot return to your team using red or blue option.

In the second situation, the server will check every 10 seconds to be sure that there are not a difference more than 1 player. If many players go to spect or disconnect from server (a difference more than 1 player in a team), the server will force the last player in the team list that have more players and will pass him to the other team. Note: the server will move as many player as needed to balance team, always starting from last players.

Third party patches applied to UrtEvolution

This development include a patch to solve vote bug. The applied patch is this one (http://pastebin.com/f584803fc), created by Ahmet A. and published in urbanterror.net forum (http://forums.urbanterror.net/index.php/topic,14159.msg190010.html#msg190010) (please see http://www.urbanterror.net/news.php) for further information.

Also, some people have been flooding servers with rcons. There is a built-in delay of 500ms required between rcons so an attacker could send something like 100 rcons per second and prevent any good rcons from getting through. MaJ develop a patch for this one that makes good rcons wait less than bad rcons making the flood have almost no effect.
More information can be found here: http://forums.urbanterror.net/index.php/topic,15158.0.html
MaJ patch can be found here: http://forums.urbanterror.net/index.php/topic,15158.msg212218.html#msg212218


'//Special thanks to [uy].Ismael, *S!ck.B0y and !KnD.alex for translation and language error corrections.'