Commit Graph
7781 Commits
Author SHA1 Message Date
ac-stef 49232e05e0 new commands to add modeinfo and artist info to maps
mapartist print|set|get|clear

  print:  prints the map artist player ID
  set:  sets the map artist player ID to the currently logged in player
  get:   returns the current map artist player ID
  clear:  erases an existing map artist record in the current map

modeinfo list|get|clear|<modelist> <modeflags>

  list:  lists current modeinfo entries
  get:  returns list of current modeinfo entries
  clear:  erases current list of modeinfo entries
  <modelist> <modeflags>:  specifies flags for a list of modes

DOCREF modeinfo mapartist
2017-06-27 15:15:23 +02:00
ac-stef cefe93ce18 don't autoplay maps from servermaps/incoming 2017-06-27 15:15:23 +02:00
ac-stef 0b656d2380 add server-side player vita database
The server keeps track of every player ID that ever connected successfully.
This database stores the last names and IPs used by the player and the
last countries the connections came from. Some stats are counted, like
"time connected" and "total tks". Most importantly, the database stores
rights (like admin) and restrictions (like ban). All rights and
restrictions are kept as dates (or timecodes), so, for example, if your
ban date is in the future, you are banned - and if it's in the past, you
can play. The collected stats are meant to help server owners at managing
players - especially, if they want to give someone admin rights.

The database is periodically saved to a file and read from that file on
startup. The default file is config/servervita.cfg and one backup is kept
in config/servervita_bak.cfg. During server start, if the regular file
can't be loaded, the backup is tried instead.

While the server is running, it checks periodically for a file named
config/servervita_update.cfg, and if the file exists, it is renamed to
a backup filename including a timecode and read and merged into the
database. The automatic rename makes sure, that a file is only read once.
Using such updates, a server owner can easily give several people admin
rights or for example, add clan tags for a whole list of IDs. (Yes, the
database also stores a clan tag for every ID...)

The database also stores two short comments for every ID. One can only be
read by server admins, but the other one is public. The public reason, for
example, can state a reason for a ban.

One database record takes up 264 bytes of RAM. During autosave, accounts,
that have not been used for a specified time (default 12 months), will
not be written. After a server restart, those old records will be gone.

Currently, there is no process in place, to also clean up old records
from RAM. Maybe, that'll be added later...
2017-06-27 15:15:23 +02:00
ac-stef 035d7caf2f thread-safe and fully buffered logging
Uses own thread to actually write to logs, so the main thread can't be
blocked by a slow logfile. Log entries are buffered in two ringbuffers,
one for the main thread and one for all other threads. The main thread
will copy the second buffer to the main buffer periodically. The main
thread buffer is read from the log worker thread.

Since two buffers are kept, there are now several functions to add a log
entry:

  mlog()
    for main thread functions only: will never block

  tlog()
    other threads only: may block, until main thread copied some entries

  xlog()
    automatically determines, which thread it's been called from and
    then writes to the proper buffer (will block accordingly)

To avoid improper usage, mlog and tlog verify, if they are used correctly.
(Only for debug builds. An assert triggers, if necessary.)
2017-06-27 15:15:23 +02:00
ac-stef dd295bb54a initialise server parameters from commandline
overwrite defaults with commandline parameters before first use
(log level settings used as an example)
2017-06-27 15:15:23 +02:00
ac-stef d6af5be3da add auth to client server connect protocol 2017-06-27 15:15:23 +02:00
ac-stef 0148c5b9a9 add new protocol data type for IP addresses
(to avoid casting IPs to signed integer)

also mute single number debug messages for compound data structures like
string and key: no longer print a debug message for every char of a string
2017-06-27 15:15:23 +02:00
ac-stef f581506960 no more static buffers for iptoa and iprtoa 2017-06-27 15:15:22 +02:00
ac-stef 2147d60934 option to dump maprot suggestions to file 2017-06-27 15:15:22 +02:00
ac-stef 5fee02c77b new maprot
Instead of a list of specific map+mode combinations the maprot now only
contains general rules for maps and game modes. The server then calculates
the list by itself when needed. The server accounts played maps and modes
(and map+mode combinations) and calculates the list specifically not to
overplay maps or modes.

May need further testing.
2017-06-27 15:15:22 +02:00
ac-stef 7486317497 add changeable server parameters
A list of parameters is read from config/serverparameters.cfg once per
minute and the values written to corresponding server data structures.

If the binary is compiled in debug mode, starting a dedicated server
will write a blank config file with all possible parameters and their
descriptions, sorted and grouped into chapters.

The name of the config file can be set with the commandline parameter -A.

So far, syntax errors are not reported. Instead, it's possible to dump
all current values to a file every time something changes.
2017-06-27 15:15:22 +02:00
ac-stef 3376c5e299 detect server config file changes by hashing
Checking only file sizes obviously misses content changes that don't
change the size.
2017-06-27 15:15:22 +02:00
ac-stef 110a209d4e move validmapname
add map name checks to servermap::load()
2017-06-27 15:15:22 +02:00
ac-stef 7dc72aebb1 add basic functions for game mode bitmasks 2017-06-27 15:15:22 +02:00
ac-stef b82a38b2e2 read-ahead for server info files
* poll and read motd and serverinfo along the other server config files
* "en" language setting is now immutable
2017-06-27 15:15:22 +02:00
ac-stef e147000ba2 replace some more strtok
also make sure, randomMT survives concurring use from different threads
2017-06-27 15:15:22 +02:00
ac-stef 5ec04b82e1 delegate checking and loading server config files to own thread
"readserverconfigsthread" gets triggered by poll_serverthreads() once a
minute to check the filesizes of all server config files. Altered files
get loaded into memory.
poll_serverthreads() in the main thread then processes the buffered files
one at a time. During processing, a semaphore is locked, so that other
threads can use the data structures derived from config files - if they
use the semaphore to lock the ressource.
Using the data from main thread can be done without using the semaphore,
since _all_ changes are done in the main thread.
If the main thread wants to update data that is locked by a thread, the
main thread will defer the changes for a minute. The main thread will
never lock.
2017-06-27 15:15:21 +02:00
ac-stef 1c109bfa62 new commandline parameter to specify path for server logfiles
use -H to set path
default is logs/
2017-06-27 15:15:21 +02:00
ac-stef 1d1230544b speed up logging
don't bother processing a line, if the level is too high for any queue
2017-06-27 15:15:21 +02:00
ac-stef 7c54645785 concatenate consecutive identical geoip ranges silently
slightly faster and wastes less RAM
also: better detection of entry overlapping
2017-06-27 15:15:21 +02:00
ac-stef 63668e0dda add support for a geolocation table
including two converter scripts to use Geolite2 and Webnet77 tables
2017-06-27 15:15:21 +02:00
ac-stef ac5229dfba server cleanup
* restrict reading of config files to times when the server is empty
* collect entropy
* remove hint how to convert pre-1.0 blacklists
2017-06-27 15:15:21 +02:00
ac-stef c8c310886a fix parsing of commandline switches for servers
also:
 * -Y now sets the private key for the server
 * -m without argument uses default masterserver URL
 * servers run LAN-only by default (set ms URL and private key to
   register with the master)
 * use generic locale "POSIX"
2017-06-27 15:15:21 +02:00
ac-stef 25deee5287 more versatile disconnect reasons 2017-06-27 15:15:21 +02:00
ac-stef 1ca4ce54eb some server changes
tbc
2017-06-27 15:15:20 +02:00
ac-stef db9bd67be9 protocol bump
no longer compatible with 1.2.0.2

also: nade effect quantisation fixed
2017-06-27 15:15:20 +02:00
ac-stef e29bb2aa2d simplify decision to render corpse
instead of checking for actual gibs, check for "was gibbed"

fixes problems with still existing gibs when the player dies again fast
enough
2017-06-27 13:31:02 +02:00
ac-stef 524988feaa filter unrenderable chars from console input
filter all chars that have no entry in the current font
2017-06-25 18:17:46 +02:00
ac-stef 57093ed70c rewrite doc command parser
- properly break statements into words
- pick statement where cursor is
- detect unmatched braces + indicator
- fix huge memory leak
- add cs ident details
- add debug view (broken into words)
- menu entries for the settings

  docidentverbose 0|1|2|3

    enables ident details or statement analyser

DOCREF docidentverbose
2017-06-23 12:48:17 +02:00
ac-stef ec12d6872e don't change persist flag while alias is pushed
and clean up the stack before removing an alias (memleak!)
2017-06-17 20:50:06 +02:00
ac-stef 4b26df11df update genmapitems
easier than to fix the persistidents vs. push/pop problem :)
2017-06-17 18:37:32 +02:00
ac-stef e96b97a5a5 fix updatefrommaster 2017-06-17 15:33:54 +02:00
ac-stef 03e21b097d fix stuff found by cppcheck
almost 3000 lines of "errors" contained one actual memleak, one actually
unused variable and three actual ambiguous code parts

from cppcheck website: "The goal is to detect only real errors in the
 code (i.e. have zero false positives)." :)

thx for finding five problems in our code
2017-06-17 12:40:35 +02:00
ac-stef f33b9c0dba enable automapconfig whenever config slots are added 2017-06-16 19:20:21 +02:00
ac-stef 2448e90bf2 convmap changes
new tool: list media sources
new stage: check vantage points
new: add single map from menu
new: option to abort maps on stage errors

fixed: make sure, player is alive (to be able to enter edit mode) during
conversions
2017-06-16 16:05:03 +02:00
ac-stef 8235300d77 merge old and new entity copy/paste
- copyent and pasteent now also work with the menu list of copied ents
- pressing editmeta while using pasteent opens the menu
- new switch command (not unlike the old one)
- make expandselection and shrinkselection work with multiple selections

DOCREF switch copyent pasteent
2017-06-15 14:00:54 +02:00
ac-stef 43aea343ad fix at
negative index numbers now return ""

for now, a warning is printed, if that happens

DOCREF at
2017-06-15 01:19:34 +02:00
ac-stef 0b2079660a fix clip entity menu and add entity copy/paste menu
newent7 type attr1 attr2 attr3 attr4 attr5 attr6 attr7

    Works like newent, but can set all seven attributes directly.
    Does not automatically put the camera yaw angle into mapmodel and flag
    entities.

fixed selectionwalk so that the first parameter can be ""

DOCREF newent7
2017-06-15 01:12:33 +02:00
ac-stef e1572dcdee move ++, --, ++f and --f to compatibility.cfg
useless, because of the "failing silently" behaviour

DOCREF ++ -- ++f --f
2017-06-14 19:01:15 +02:00
ac-stef d7277c1aa4 fix permissions for some edit commands
- always allow read-only edittextureslot, editmapmodelslot and
  editmapsoundslot
- allow setvantagepoint when editing offline or spectating offline
- new var editing_sp: 1 during edit mode in singleplayer (offline)
- additional menus for read-only access to map config slots
- new bonus edit scripts: selectmiddle and unclipentclippedmodels

DOCREF edittextureslot editmapmodelslot editmapsoundslot setvantagepoint
DOCREF editing_sp
2017-06-14 16:33:58 +02:00
ac-stef 9bb9cc280b click
shutter sound, cut, edited and compressed

original at: www.freesound.org/people/jgrzinich/sounds/155385/
original license CC0
2017-06-13 14:19:16 +02:00
ac-stef 7aca9ff9d3 expect DT_UNKNOWN 2017-06-13 10:46:15 +02:00
ac-stef 30a0e8608c menu code cleanup and subdirectory support
menuitemmapload mapname action [hoveraction [desc]]

    create menu entry for a map file

  menudirlistsub action dots

    adds subdirectory entries to a menu with a files list
    has to come after the menudirlist command
    <action> is the command to be executed, when the menu entry is chosen
    if <dots> is 1, an entry ".." is added

  enumfiles path [extension]

    lists files in a directory
    if extension is specified, only files of that extension are listed
    if the extension is "dir", only directories are listed

DOCREF menuitemmapload menudirlistsub enumfiles
2017-06-12 20:07:11 +02:00
ac-stef 661ee6eff2 distinguish between files and directories
listfiles now optionally sorts the list and removes doubles
2017-06-12 18:17:15 +02:00
ac-stef 7a02ccd8b7 only load map descriptions and preview pictures when needed
+ memleak fixed
+ possible NULL dereference fixed
2017-06-12 03:24:34 +02:00
ac-stef a5fbccbd7c restore htf flag skins
and re-use flag model files
2017-06-11 21:13:51 +02:00
ac-stef 528d923f81 create map preview pictures during spectating
pressing CTRL+F12 during spectating creates a clean screenshot and saves
it as map preview picture

  modkeypressed

    returns 1, if a CTRL key is pressed and 0, if not

  screenshotpreview [lines]

    creates a screenshot cropped to 4:3 with a given number of lines
    (in the range of 144 to 480, default 240 or last given value)
    and jpeg quality 80

  gotovantagepoint

    now returns 1, if the map actually has a vantage point set

DOCREF screenshotpreview modkeypressed gotovantagepoint
2017-06-11 21:13:50 +02:00
ac-stef 06b9d3103d remove maploaditemlength
and add map name to preview picture

DOCREF maploaditemlength
2017-06-11 17:07:49 +02:00
aurhat dbaff25341 Cleanup akimbo code 2017-06-11 01:15:53 +02:00
ac-stef 800e4f3a13 add reset option for loadcrosshair
loadcrosshair reset

    loads all default crosshairs (including teammate and scope)

    short form of "loadcrosshair default default.png ; loadcrosshair
    scope red_dot.png ; loadcrosshair teammate teammate.png"

DOCREF loadcrosshair
2017-06-10 00:15:58 +02:00