/
noire-dev
/
SourceTech
Обзор
Документация
Войти
/
noire-dev
/
SourceTech
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
sourcetech
docs/filter.txt
126 строк
4 KB
Noire.dev
initial
04 окт 2024, 00:47
04 окт 2024, 00:47
e3645fc
Код
Авторство
О чём код?
================================================= This section describes format of userinfo filter files pointed by \sv_filter server cvar. ================================================= Common format and expression syntax: <key> [op] <value> [ { key [op] <value> { [ ... ] } } ] Where: <key> - arbitrary userinfo key to compare, special built-in keys: 'drop' - action key, can be followed by ban reason string, no further ops or nested keys is allowed 'date' - represents current date in "YYYY-MM-DD HH:mm" format 'fname' - filtered 'name' userinfo key (without color sequences) [op] - optional operator, can be '==', '!=', '>', '>=', '<', '<=', '*' (string pattern match) default operator is '==' (equal) and '<' (less) for 'date' key <value> - integer or string value to compare with the <key> default is integer comparison, if you want to force string comparison - use double-quoted values, i.e. "0" instead of 0 Examples: ip "127.0.0.1" { name * "Unnamed*" { drop "You have bad name" } } cl_guid "" { // disallow empty guids drop } One-line format (without brackets) is also acceptable: ip "127.0.0.1" name * "Unnamed*" drop "You have bad name" cl_guid "" drop Multiple keys/comparisons inside single scope: ip "127.0.0.1" { name * "*^0*" { drop "Black color is not allowed on this server" } name "SomeBadGuy" { drop "Bad Guy." } } Date key usage example: ip "192.168.11.12" { date "2019-06-01" { // hours:minutes can be omitted for this particular case drop "Banned till summer." } } If there is "date" keys which may expire - engine will perform regular checks and rewrite filter file contents to clear expired ban entries You can also use '$' prefix in <value> to dereference any server-side cvar, for example: snaps < $sv_fps { drop "raize your \snaps" } Example of custom password cvar filtering: xxpassword != "12345678" { drop "sorry, this is a private server" } I.e. user must do "\setu xxpassword 12345678" to be able to connect ================================================= This section describes available server-side options and commands ================================================= ------------------------------------------------- \sv_filter - cvar that point on filter file, if it is "" then filtering will be disabled ------------------------------------------------- ------------------------------------------------- \filter <id> [key1] [key2] ... [keyN] [date +<duration[h|d|w|m]>|<date> ] [reason <text>] ------------------------------------------------- this command will kick and ban player with specified <id> specified key values will be extracted from his current userinfo and used to construct filter command, acceptable by filter engine if no keys specified - "ip" key will be used by default default duration unit used with '+' is minutes, additional h(ours), d(ays), w(eeks), m(onths) suffixes can also be specified Examples: \filter 0 name cl_guid ban client 0 by his "name" and "cl_guid" userinfo fields \filter 0 reason "bad guy." ban client by his "ip" address field with a reason "bad guy." \filter 0 ip name date +1d ban client for 1 day by his ip and name ------------------------------------------------- \filtercmd <filter format string> ------------------------------------------------- pass manually constructed filter string (described in previous section) to the engine Examples: \filtercmd ip "127.0.0.1" name "name" drop "reason" \filtercmd name * "*^0*" drop "black color is not allowed" scopes are acceptable as well: \filtercmd name * "*^0*" { ip != "127.0.0.1" { drop "black color is not allowed" } }