# Installation

## Step by Step guide for the impatient (for windows)

1. Create a new directory C:\AC\stracker.
2. Unzip the content of stracker-V<X.Y.Z>.zip into the new directory (such that there is the file C:\AC\stracker\stracker.exe)
3. Copy C:\AC\stracker\stracker-default.ini to C:\AC\stracker\stracker.ini
4. Open C:\AC\stracker\stracker.ini with a text editor (e.g. notepad)
5. Set the option ac_server_cfg_ini to the path of the config file of your acServer:
[STRACKER_CONFIG]
ac_server_cfg_ini = ../server/cfg/server_cfg.ini
6. Open the TCP port 50042 in all your firewalls (enable port forwarding if necessary). The port shall be reported as open by a port checker, e.g. www.yougetsignal.com
7. Configure the AC server for UDP plugin usage. Open your server_cfg.ini with a text editor.
8. Make sure that the UDP options are set as follows:
[SERVER]
UDP_PLUGIN_LOCAL_PORT=11000
UDP_PLUGIN_ADDRESS=127.0.0.1:12000
9. Start the acServer.exe as usual.
10. Start stracker by a double click on the file start-stracker.cmd. You should see a windows cmd window (black) with some text in it.
11. To test it is best to log into your server in-game and see if ptracker shows the green connection icon in it's status line. If so, everything is good.

## Detailed explanation of common installation options

### HTTP output

Most users will want to get the http output similarly to this. To set this up, open stracker.ini with a text editor and change these options:

[HTTP_CONFIG]
enabled = True
listen_port = 50041
Do not change the listen_addr option. It has to be set to 0.0.0.0 for a working server. Open the TCP port 50041 in your server's firewall. Restart stracker. In your browser go to the internet address http://<your_server_ip_address>:50041/. You should see a page similar to this this. If not, double check that the port 50041 is really open for your server (use www.yougetsignal.com).

You might want to create an admin account, so that you can change certain settings from the browser which are not accessable for normal visitors. To enable the admin account, change these settings in stracker.ini:

[HTTP_CONFIG]
admin_username = your_admin_user_name
After an stracker restart you should be able to log in as admin with the button at the upper right.

You can assign a banner alternatively to the default Assetto Corsa banner. To do this, copy an image file (normally .png format is used for that) to the directory containing stracker.exe and set this in the stracker.ini file:

[HTTP_CONFIG]
banner = mybanner.png
After an stracker restart, you should see your banner on the screen. Experiment with different sizes.

### Linux Support

stracker runs natively on linux machines. Assuming that you want to install stracker to the directory /opt/stracker, you can use the following steps for installation:

# remove old installation (but keep your stracker.ini file!)
mkdir /opt/stracker
cd /opt/stracker
unzip stracker-x-y-z.zip
rm -rf stracker_linux_x86
tar xvzf stracker_linux_x86.tgz
Afterwards the linux executable stracker_linux_x86/stracker can be used just as the windows executable stracker.exe and this documentation applies to both linux and windows. Note that it is important that the archive is unpacked to a directory underneath the stracker installation directory. Otherwise stracker will not be able to find some files needed to run.

Users reported the following package dependencies for different distros:

• Ubuntu 14.04: apt-get install -y libc6:i386 libgcc1:i386 libstdc++6:i386 libz1:i386
• CentOs: yum install zlib.i686
• Debian: apt-get install libc6-i386

I recommend the use of the screen command to run stracker in the background.

### Blacklist support

There is the option for admining the AC server's blacklist directly with stracker. The setup of the banlist admining requires the following settings in the stracker.ini file:
[HTTP_CONFIG]
enabled = True
[BLACKLIST]
blacklist_file = C:\path\to\blacklist.txt
The first options are already discussed in the HTTP server section. The blacklist_file option must point to the blacklist.txt file of the AC server.
When stracker is started with these setting, it first imports the blacklist.txt file and for each listed guid, it adds this guid to the Blacklist table of the database. The ban list can be altered using the http server. You have to log into admin mode (upper right button) and when you view a player's details (via Player Click on player), you will get options to alter the player's ban state.

#### Blacklist support in combination with acauth

There is also the possibility to use the authentication feature for blacklist support and not use a blacklist.txt file for the server. Note that you have to issue your bans through stracker's http server (in the driver's page) to make this work. I plan to support this directly in game via ptracker in the 3.2.x versions. You still have to manually kick the player from the server (also planned to be automated in 3.2.x). This feature needs ptracker 3.1.5 to work because you won't be able to access the ban options when no blacklist.txt file is specified in former versions.

### Player groups

Since version 2.5.0, player groups were introduced (at this time, these are used for storing setups in the database only group member will be able to access). Player groups can be altered by stracker admins using the same mechanisms as the banlist.

### Championship Management

Since version 2.6.0, championship management is available in stracker. Championships are organized in the following way: A "Championship season" consists of multiple "Championship events". Each event can be linked to one or more sessions (i.e., qualification, short race, long race, or whatever scheme you would like). Each session can be linked to a "Championship Point Schema" which defines how many points a player gets for a specific finish position.

Setting up a new championship is done in the following steps in the HTML interface:

2. Click on the "Championships" button
3. Click on the "Manage championship point schemata" button
4. Add at least one championship schema (give it a unique name, e.g., "2015_LongRace")
5. Go back to the "Championships" view
6. Add a new Championship (give it a unique name, e.g., "Season 2015")
7. Add a new Event (give it a name, e.g., "Ruf @ Spa")
8. Go to the "Sessions" view
9. Select a session you want to associate to the event
10. (optional) do some manual corrections using the penalty system
11. Give the session a name (e.g., "quali")
12. Select the point schema
13. Click on the "Add" Button.
14. (Continue with point 7. or 9.)

### Authentication

Since version 3.0.2, stracker can be configured for AC's authentication system. For this, http support must be enabled and you need to change the server_cfg.ini file:
AUTH_PLUGIN_ADDRESS=127.0.0.1:<stracker_http_port>/acauth?

You can use the following arguments after ?:
• track: The track name used for lap stat filtering. If omitted, the current combo will be used (for multiserver setups, be sure to set the server argument)
• cars: The cars used for lap stat filtering (comma seperated). If omitted the current combo will be used (for multiserver setups, be sure to set the server argument)
• server: The stracker server name of the server used for lap stat filtering. If omitted, lap times of all servers will be queried.
• valid: Which laps shall be taken into account (comma seperated list of integers). If omitted, valid and unknown laps will be used (0,1).
• tyre_list: The list of tyre used for lap stat filtering (comma seperated). If omitted all tyres will be used.
• groups: The list of groups (comma seperated list of integer ids) used for lap stat filtering. If omitted all drivers will be used.
• minNumLaps: The minimum number of laps done for this combo.
• maxTimePercentage: If the user's best lap time (according to prior definitions) is out of bounds, he will not be able to join the server.
• maxRank: If the user's rank in the best lap time statistics (according to prior definitions) is out bounds, he will not be able to join the server.
• andurl1: Additional auth URL (quoted). The auth request will only pass, if the result of this URL is OK. URL's need to be quoted, i.e. replace ':' characters with %3A, '?' characters with %3F and '&' characters with %26. Example for minorating:
andurl1=plugin.minorating.com%3A805/minodata/auth/ABCN/%3F
• andurl2: further url to be checked (format is as andulr1).
• andurl3: further url to be checked (format is as andulr1).
• andurl4: further url to be checked (format is as andulr1).
• andurl5: further url to be checked (format is as andulr1).
• timeout: Timeout in milliseconds for the request. After the timeout has passed, the user will be denied and asked to try again. Default no timeout. Note that it is highly recommended to apply a timeout to the query because long running queries are known to cause server lags (for me it started around 100 ms). If you are using none of minNumLaps, maxTimePercentage or maxRank users shall normally not encounter a timeout because the queries are optimized. If you are using one of the above, your users might have to reconnect when they get an AUTH message notifying about a timeout. It is generally not possible to keep the runtime of the needed queries low enough without caching them.
Blacklisted players are never authorized.
Whitelisted players are always authorized.

Examples:
This example filters the best lap times on the nurburgring achieved on the server named acserver with BMW M3 E30 or the Audi quattro. Only valid or unknown laps are considered, on Street Vintage or Street tyres. If the user's best lap is within 105 percent of the server's best lap and the rank of the player is below or equal to 15, the player is allowed to enter the server.
This allows all drivers who drove at least 20 laps on acserver with acserver's current combo.
This allows all drivers of specific groups (who have driven at least one lap on acserver's current combo). Specifying group only has effeccts together with at least one of minNumLaps, maxTimePercentage or maxRank. The group has to be specified with the numeric identifier. You get this identifier by selecting the group in the lapstat page and inspecting the generated url.

### Session management

Starting with version 3.1.x, stracker comes with a basic session management. At the moment, it supports to automatically skip race sessions when the drivers actively participating in the race are finished. Session management can be enabled with these stracker.ini settings:
[SESSION_MANAGEMENT]
race_over_strategy = skip
wait_secs_before_skip = 15

There is also the possibility to control the session times and number of laps with admin-like commands. Therefore, the driver must be part of a group called admins. Type /help in-game to get a list of commands.

### UDP Plugin API Proxy

stracker has the ability to forward the UDP protocol to other plugins with the settings proxyPluginPort and proxyPluginLocalPort. For example, with these settings it is possible to run minorating and stracker at the same time. Here is an example how to use them: In stracker.ini, set these options (you have to use unused UDP ports for the proxy, here I've chosen 10004 and 10003):
# stracker.ini
[ACPLUGIN]
; proxy the AC server protocol on these ports, so multiple plugins may be chained (this is equivalent to UDP_PLUGIN_LOCAL_PORT in server_cfg.ini)
proxyPluginLocalPort = 10004
; proxy the AC server protocol on these ports, so multiple plugins may be chained (this is equivalent to UDP_PLUGIN_ADDRESS in server_cfg.ini)
proxyPluginPort = 10003
; udp port the plugins receives from. -1 means to use the AC servers setting UDP_PLUGIN_ADDRESS
rcvPort = -1
; udp port the plugins sends to. -1 means to use the AC servers setting UDP_PLUGIN_LOCAL_PORT
sendPort = -1

In minorating, the following lines need to be added to the configuration MinoRatingPlugin.exe.config:
<!-- append the following lines to your minorating configuration file: -->

<!-- AcServer/proxy listening port like defined in UDP_PLUGIN_LOCAL_PORT. Uncomment to override it (Proxy/Relay), otherwise MR will read it from the config -->
<!-- Plugin listening port towards acServer/proxy like defined in UDP_PLUGIN_ADDRESS=12000 (without 127.0.0.1, port number only) -->
<!-- Uncomment to override it (Proxy/Relay), otherwise MR will read it from the config -->



### Database choice

By default, stracker will use the sqlite3 database. This database is stored as a file on your disk, normally called stracker.db3. The advantage of this database is the ease of use without any installation effort. One of the limitations of sqlite is that you cannot access this database accross computers. Storing the .db3 file on a network share will not work. Performance-wise, sqlite3 might be also a bit slower than the postgresql database.

If you need or want a real database backend for stracker, you can go the postgresql route. I am testing with version 9.1, but newer versions should be working as well. To use this you have to install postgresql (normally on the machine running stracker and acServer) and prepare a database user and a database. This can be achieved with the following SQL statements:

CREATE USER pgstracker WITH PASSWORD 'pgstrackerpass';
CREATE DATABASE stracker OWNER pgstracker;

Note: On my Ubuntu 12.04 server, I had to find out that there is a bug also existing on many debian based linuxes. This results in a default encoding scheme of ascii for new databases, which is not what you want to have. You will get errors as soon as drivers with non ascii characters are joining the server and perform laps. To check, if you are affected from this, issue the command psql -l. The output shall look like this:

                             List of databases
Name    |  Owner     | Encoding  | Collate | Ctype |   Access privileges
-----------+------------+-----------+---------+-------+-----------------------
postgres  | postgres   | SQL_ASCII | C       | C     |
stracker  | pgstracker | UTF8      | C       | C     |
template0 | postgres   | SQL_ASCII | C       | C     | =c/postgres          +
|            |           |         |       | postgres=CTc/postgres
template1 | postgres   | SQL_ASCII | C       | C     | =c/postgres          +
|            |           |         |       | postgres=CTc/postgres

If your database has the encoding SQL_ASCII instead, you can switch to UTF8 by the SQL command
UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8') WHERE datname='stracker';

This command is safe, if you don't have any data in your database yet and it should be safe, if you only used stracker to get data in your database.

Now you have to tell stracker to use the new database. To do this, stop any running stracker instances, open stracker.ini and change these settings:
[DATABASE]
database_type = postgres
postgres_db = stracker
postgres_host = 127.0.0.1
postgres_pwd = pgstrackerpass
postgres_user = pgstracker
Afterwards restart stracker and it will use the postgresql database. Use the stracker command line options --migrate_from_sqlite3 and --perform_backup to switch between sqlite3 and postgresql databases.

### Multiserver Setup

Stracker can be run on machines running multiple AC server instances. There are two different configurations possible:

#### For each AC server instance run stracker and use the same database for the stracker instances

For each instance of stracker, you need a seperate .ini file. You can keep them in the stracker directory and give them names matching your server (e.g., stracker-firstserver.ini). Assign different server_name settings to each stracker instance. Choose different listening ports for each stracker instance in the STRACKER_CONFIG section (these ports will be used by ptracker to connect to stracker). When using sqlite3, you can point all the stracker instances to the same db3 file:
#stracker-firstserver.ini

[STRACKER_CONFIG]
# choose different listening ports for each stracker instance (50042, 50043, 54242, 54243, 60023, 60024, 62323, 62324, 42423, 42424, 23232, 23233)
listening_port = 50042
server_name = firstserver
ac_server_cfg_ini = C:\acserver\first_server_cfg\server_cfg.ini
#...

[DATABASE]
database_type = sqlite3
database_file = ./stracker.db3
#...

[HTTP_CONFIG]
# only one stracker.ini file shall have enabled = True, all others shall have enabled = False
enabled = True
#...

This approach is working (sqlite3 supports parallel db access from multiple processes) as long as all stracker instances have access to the same file system (i.e., they are running on the same machine). If your AC servers are spread over multiple machines, your option is to use the postgresql database support which perfectly supports the multiple machine scenario.
Choose one stracker instance as the http server and disable it on all other instances.
PLEASE NOTE: Version upgrade procedure in case of multi-server instances connected to the same .db3 file:
1. Shut down all old stracker instances
2. Make a backup of your .db3 file
3. Start one and only one stracker instance which will then perform a database migration if necessary.
4. Wait until stracker is running smoothly (and fix all configuration issues).
5. Start the other stracker instances.

#### For each AC server instance run stracker and use different databases for the stracker instances

This approach is similar to a), but you choose different databases for each stracker instance. If you want to enable http, you need to enable the support in each stracker instance and specify different ports to listen.
#stracker-firstserver.ini

[STRACKER_CONFIG]
# choose different listening ports for each stracker instance (50042, 50043, 54242, 54243, 60023, 60024, 62323, 62324, 42423, 42424, 23232, 23233)
listening_port = 50042
server_name = firstserver
#...

[DATABASE]
database_type = sqlite3
database_file = ./stracker-firstserver.db3
#...

[HTTP_CONFIG]
enabled = True
# use different listen_port settings for each stracker instance!
listen_port = 42223


## List of Ports used by acServer and stracker

Port name Configuration file Configuration item Remarks
AC http portserver_cfg.iniSERVER/HTTP_PORTHTTP Output generated by the AC server (http://<ip_address>:<HTTP_PORT>/ENTRY). Used by the launcher.
AC UDP portserver_cfg.iniSERVER/UDP_PORTUDP Port used to communicate with the remote AC game instances
AC TCP portserver_cfg.iniSERVER/TCP_PORTTCP Port used to communicate with the remote AC game instances
Plugin UDP port 2server_cfg.iniSERVER/UDP_PLUGIN_LOCAL_PORTPlugins can send requests to the AC server using this port
stracker listening portstracker.iniSTRACKER_CONFIG/listening_portTCP port used to listen for stracker/ptracker connections
stracker http portstracker.iniHTTP_CONFIG/listen_portThis is the port used for the stracker http output (http://<ip_address>:listen_port). Only specific values are allowed there.
stracker rcvPortstracker.iniACPLUGIN/rcvPortIf you use only one plugin (stracker) or stracker is the main plugin, you can leave that at -1
stracker sendPortstracker.iniACPLUGIN/sendPortIf you use only one plugin (stracker) or stracker is the main plugin, you can leave that at -1
proxyPluginPortstracker.iniACPLUGIN/proxyPluginPortIf >= 0, the plugin protocol is forwarded to this port (this port can then be used as the Plugin UDP port 1)
proxyPluginLocalPortstracker.iniACPLUGINproxyPluginLocalPortif >= 0, the plugin protocol is forwarded to this port (this port can then be used as the Plugin UDP port 2)

# FAQ

#### Does ptracker or stracker store my setups?

No. Your setups are private and you have full control over it. If you do not send a set to someone else, your set stays on your computer. If you send a set to someone, stracker will forward it and delete it immediately after it has been delivered.
The obvious exception is when you use stracker's setup deposit. In this case, the set is stored in the server's database.

#### How can I run Minorating and stracker at the same time?

You have two options:
1. Use the proxy feature of stracker. This is explained here on this page. The advantage of this method is that you only need stracker and minorating and no further plugins. Minorating will only work if stracker is running (if stracker is down, minorating will be down also).
2. Use ACSRelay. At the time writing this, ACSRelay is still classified beta, but users reported it to be functional. With the price of another plugin running, you have the possibility to run as many plugins behind the relay as you wish.

#### I'm having troubles understanding the multiserver setup. Is there an example?

You can have a look at my server configuration. Though at some points specific to linux, you can learn my concept for the directory structure and used ports (I change the port numbers for security reasons, though).

#### Problem: stracker starts, but ptracker clients cannot connect (you can get some error messages from ptracker in the file py_log.txt).

Maybe the port is still blocked by your firewall. Check that the port is open with an internet port checker, e.g.: http://www.portcheckers.com/ When stracker runs correctly, the port you configured in the stracker.ini file must be reported as open. If it is not, check your firewall settings.

#### My server displays "No map available" in the Live Map tab. How can I display a map?

Go to the admin area, click on General Admin and upload the user interface data as described on that page.

#### When I try to run stracker-packager to upload the map/car data to the server I get an error. What can I do?

Maybe stracker-packager cannot find your AC installation. Try to run it manually like this: stracker-packager.exe D:\whereever\you\have\installed\AC

#### The live map isn't aligned correctly. How can I solve this?

The live map works only with firefox and chrome, and not with Internet Explorer.

#### How is the valid flag for laps calculated?

It's calculated using the following pseudo code:
valid = 2
if ptracker_connected:
valid = ptracker_valid_flag
if valid != 0 and lap_contains_unreliable_movement: # this is true for out laps
valid = 2
if valid == 2 and penaltiesEnabled and cuts == 0:
valid = 1
if config.LAP_VALID_CHECKS.invalidateOnCarCollisions and collisionCarCount > 0:
valid = 0
if config.LAP_VALID_CHECKS.invalidateOnEnvCollisions and collisionEnvironmentCount > 0:
valid = 0
if lap.lapCount == 1 and valid == 2:
valid = 0


#### I read all this documentation and stracker still doesn't run. What should I do?

1. Open the file stracker.log and see if there is an obvious error to the end of the file. You might be able to correct this depending on the error messages.
2. Post your question to either the ptracker thread in AC forum or the stracker thread on RD. In order to help me with the question, please please please attach the following files to the question:
• stracker.log
• from the server running stracker.
• <My Documents>/Assetto Corsa/logs/py_log.txt from the computer running the game.
• <My Documents>/Assetto Corsa/logs/ptracker-exe-stdout.txt from the computer running the game (if existing).
• <My Documents>/Assetto Corsa/logs/ptracker_fileobserver.txt from the computer running the game (if existing).

# Change Log

## From 3.2.x to 3.3.x

### Changes in stracker core

• Changes in stracker ini file
Section Option name Default value Documentation
STRACKER_CONFIGguids_based_on_driver_names False you normally want to leave that at the default (False). Use case for this is an environment where the same steam account is used by different drivers.
• New Database Scheme Version 23: add cache table in db to cache MR grades
• send MR grades to connected ptracker instances for display purpose
• make timed races work in stracker

### Changes in stracker http

• fix track display in session details
• integrate assist icon update from AC forum user @Laurent81 (thank you very much!)

## From 3.1.x to 3.2.x

### Changes in stracker core

• Changes in stracker ini file
• Section Option name Default value Documentation
SWEAR_FILTERwarning Please be polite and do not swear in the chat. You will be %(swear_action)s from the server after receiving %(num_warnings_left)d more warnings message sent to player after a swear detection
SWEAR_FILTERnum_warnings 3Specify the number of warnings issued before the player is going to be kicked
SWEAR_FILTERactionnoneValid values are "none", "kick" and "ban".
SWEAR_FILTERban_duration30Number of days the player shall be banned (if action is "ban").
HTTP_CONFIGinverse_navbarFalseset to true to get the navbar inverted (i.e., dark instead of bright)
HTTP_CONFIGvelocity_unit kmh Valid values are "kmh" or "mph".
HTTP_CONFIGtemperature_unit degc Valid values are "degc" or "degf".
HTTP_CONFIGlap_times_add_columns valid+aids+laps+date Additional columns to be displayed in LapTimes table (seperated by a + sign). Columns can be "valid", "aids", "laps", "date", "grip", "cuts", "collisions", "tyres", "temps" and "ballast". Note that too many displayed columns might cause problems on some browsers.
• New Database Scheme Version 22
• add column MessagesDisabled to table Players
• add column ballast to table Lap
• seperate the HistoryInfo column from the Lap table, resulting in much better performance of best lap time queries
• add point-to-point (A2B) track support with special handling for ks_nordschleife-touristenfahrten
• add a configurable swear filter leading to kick or ban actions after a specified number of warnings
• players without ptracker can now decide to not receive any messages from stracker if these messages get too annoying. Decision will be stored in database
• Avoid 100% cpu load if the sqlite database is locked for some reason
• add /st whisper command (usage: "/st whisper guid <guid> <text>" or "/st whisper id <carid> <text>")
• rename commands kickban_guid and kickban_id to kickban guid and kickban id
• change stracker/ptracker protocol for new ptracker stat display, ballast and fuel load
• display the player's car in the enter message when multiple cars are allowed in the server
• fix inconsistent timestamps (the timezone should be respected now correctly)
• fix lap stat time filtering
• fix qualify classification to match AC style
• fix ptracker information of very last lap of qualify session
• Switch the .exe generation tooling from py2exe to pyinstaller on windows systems
• fix error when compressing the database (introduced in 3.2.0)
• fix "unability to start" when the blacklist_file in stracker.ini is set.
• fix db compression errors
• if db compression is enabled, compress immediately when starting stracker instead of waiting for the periodic timer
• fix possible hangups while exiting
• remove print() debugging statements spamming the console window
• fix log errors when trying to send chat messages to disconnected players
• postres: better error message when trying to migrate to non-empty database
• postres: fix migration with some legacy session tables (duration too large)

### Changes in stracker http

• admins can now whisper, kick and ban directly from classification view in live map
• add non-existing tracks and cars in stracker-packager data to database, rather than throw them away (=less upload frequency)
• configurable columns for lap stat table
• add option for inverse navbars
• display chat in live map
• display not connected players in gray in the classification section of live map
• do not display the positions of unconnected players anymore on the map anymore in live map
• include custom.css file in all html pages, so the css styles can be easily customized
• remove flattr donation possibility
• change filtering in multiselects to case insensitive
• fix (C)orvette display and similar issues (the brand name is now required to be at least 3 characters)
• possibility for programmers to change http output by making the templates editable. (Note: I can't give support about how to modify these files, you do this adventure for your self.)
• fix comparison lap choices for multi-car sessions
• reduce stracker's memory usage by not holding all maps and car badges in memory but only the ones needed
• changes to templates for supporting the in-game browser
• display available car badges and track maps correctly for local databases (they are added automatically to the database)
• update to pygal version 2.1.1 and reduce the size of the lap time comparisons.
• add fuel display for sessions which have already ended (you won't be able to see the fuel loads for cars in the current session)
• fix problems when dreamweaver is installed on windows
• fix typo "unknwon" (thanks for reporting, core3tx)

### Changes in stracker-packager

• support tracks with main layout and config layouts at the same time (e.g. the mod for increasing the number of slots for KS tracks)
• when an error occurs, display the message and leave the command window open
• better detection of AC install dir
• fix errors when having files in the content/cars or content/tracks directories

## Last experimental versions

### 3.4.0

• New config option STRACKER_CONFIG/ac_server_working_dir for setting the working directory of the AC server process. You only need to set it, if you are using an unusual directory structure; you will get warnings in your logs in this case
• possible fix for incorrect race results: stracker now reads the json results and adapts the results accordingly (see also config option STRACKER_CONFIG/ac_server_working_dir)
• Changes from AC forum user @maxator: option for using https protocol + update to new cherrypy version
• experimental fix for the rejoining problems in quali and practice sessions
• a little bit more statistics in the player details page

### 3.3.7

• save ESC key press information correctly in DB again
• non-ptracker player's first lap is invalidated now

### 3.3.5

• http: integrate new assist icons provided by AC forum user @Laurent81 (thank you very much!)

### 3.3.4

• core: add timed races support in stracker
• http: fix track display in session details

### 3.3.3

• core: restore session management which was broken in 3.3.0 to 3.3.2 (and also the won the race messages)
• core: clean up code for MR grade querying, fix minorating detection in case of using the new authminoratingcom.azurewebsites.net
• http: possible bugfix for errors in championship session corrections

### 3.3.2

• core: on servers running Minorating, the grades are now transferred to ptracker for display purposes (thanks to Minolin for permission and support!)
• New protocol version 15: add minorating grades to data transferred from stracker to ptracker

### 3.3.1

• core: fix setup exchange which has been broken in version 3.3.0

### 3.3.0

• core: add option [STRACKER_CONFIG]/guids_based_on_driver_names for creating GUID's based on driver names instead of the steam guids. This is only ment for very special scenarios (e.g. internet cafe), not for general use.

### 3.2.10

• fix compatibility with AC 1.7

### 3.2.9

• fix log errors when trying to send chat messages to disconnected players
• fix typo unknwon (thanks for reporting, core3tx)

### 3.2.8

• http: fix problems when dreamweaver is installed on windows

### 3.2.7

• core: update stracker/ptracker protocol (backwards compatible) to communicate the fuel load to stracker
• core: display the player's car in the enter message when multiple cars are allowed in the server
• http: add fuel display for sessions which have already ended (you won't be able to see the fuel loads for cars in the current session)

### 3.2.6

• fix db compression (really really)
• remove print() debugging statements spamming the console window

### 3.2.5

• core: changes in stracker/ptracker protocol to ensure compatibility with ptracker 3.1.x. ptracker versions 3.2.0 to 3.2.4 are incompatible with this version (sorry)
• core: fix db compression errors
• core: if db compression is enabled, compress immediately when starting stracker instead of waiting for the periodic timer
• core: fix possible hangups while exiting
• postres: better error message when trying to migrate to non-empty database
• postres: fix migration with some legacy session tables (duration too large)
• http: (hopefully) fix wrong display of car badges
• http: fix vmax display
• stracker-packager: better detection of AC install dir
• stracker-packager: fix errors when having files in the content/cars or content/tracks directories

### 3.2.4

• http: Potential fix for the disappearing car badges and map displays.
• http: update to pygal version 2.1.1 and reduce the size of the lap time comparisons.

### 3.2.3

• Changes in stracker ini file
Section Option name Default value Documentation
HTTP_CONFIGvelocity_unit kmh Valid values are "kmh" or "mph".
HTTP_CONFIGtemperature_unit degc Valid values are "degc" or "degf".
HTTP_CONFIGlap_times_add_columns valid+aids+laps+date Additional columns to be displayed in LapTimes table (seperated by a + sign). Columns can be "valid", "aids", "laps", "date", "grip", "cuts", "collisions", "tyres", "temps" and "ballast". Note that too many displayed columns might cause problems on some browsers.
• core: add point-to-point (A2B) track support with special handling for ks_nordschleife-touristenfahrten
• core: fix possible connection timeouts occuring during remote in-game-browsing (backwards compatible, works with ptracker 3.2.3)
• core: add profiling information of db queries in debug logging
• http: add unit configurations also to stracker (HTTP_CONFIG/velocity_unit+temperature_unit)
• http: reduce stracker's memory usage by not holding all maps and car badges in memory but only the ones needed
• http: changes to templates for supporting the in-game browser
• http: display available car badges and track maps correctly for local databases (they are added automatically to the database)
• http: add unit configurations to stracker.ini (HTTP_CONFIG/velocity_unit+temperature_unit)
• stracker-packager: support tracks with main layout and config layouts at the same time (e.g. the mod for increasing the number of slots for KS tracks)
• stracker-packager: when an error occurs, display the message and leave the command window open

### 3.2.2

• core: fix "unability to start" when the blacklist_file in stracker.ini is set.

### 3.2.1

• core: change stracker/ptracker protocol for new ptracker stat display
• core: fix error when compressing the database (introduced in 3.2.0)
• http: fix comparison lap choices for multi-car sessions

### 3.2.0

• Changes in stracker ini file
• Section Option name Default value Documentation
SWEAR_FILTERwarning Please be polite and do not swear in the chat. You will be %(swear_action)s from the server after receiving %(num_warnings_left)d more warnings message sent to player after a swear detection
SWEAR_FILTERnum_warnings 3Specify the number of warnings issued before the player is going to be kicked
SWEAR_FILTERactionnoneValid values are "none", "kick" and "ban".
SWEAR_FILTERban_duration30Number of days the player shall be banned (if action is "ban").
HTTP_CONFIGlap_times_add_columnsvalid+aids+laps+dateAdditional columns to be displayed in LapTimes table (seperated by a + sign). Columns can be "valid", "aids", "laps", "date", "grip", "cuts", "collisions", "tyres", "temps" and "ballast". Note that too many displayed columns might cause problems on some browsers.
HTTP_CONFIGinverse_navbarFalseset to true to get the navbar inverted (i.e., dark instead of bright)
• New Database Scheme Version 22
• add column MessagesDisabled to table Players
• add column ballast to table Lap
• seperate the HistoryInfo column from the Lap table, resulting in much better performance of best lap time queries
• core: Avoid 100% cpu load if the sqlite database is locked for some reason
• core: rename commands kickban_guid and kickban_id to kickban guid and kickban id
• core: add /st whisper command (usage: "/st whisper guid <guid> <text>" or "/st whisper id <carid> <text>")
• core: add a configurable swear filter leading to kick or ban actions after a specified number of warnings
• core: players without ptracker can now decide to not receive any messages from stracker if these messages get too annoying. Decision will be stored in database
• core: fix inconsistent timestamps (the timezone should be respected now correctly)
• core: fix lap stat time filtering
• core: fix qualify classification to match AC style
• core: fix ptracker information of very last lap of qualify session
• core: Switch the .exe generation tooling from py2exe to pyinstaller on windows systems
• http: display chat chat in live map
• http: display not connected players in gray in the classification section of live map
• http: do not display the positions of unconnected players anymore on the map anymore in live map
• http: admins can now whisper, kick and ban directly from classification view in live map
• http: add session management and broadcast chat possibilities (when logged in as admin) in live map
• http: add non-existing tracks and cars in stracker-packager data to database, rather than throw them away (=less upload frequency)
• http: include custom.css file in all html pages, so the css styles can be easily customized
• http: configurable columns for lap stat table
• http: remove flattr donation possibility
• http: add option for inverse navbars
• http: change filtering in multiselects to case insensitive
• http: fix (C)orvette display and similar issues (the brand name is now required to be at least 3 characters)
• http: possibility for programmers to change http output by making the templates editable. (Note: I can't give support about how to modify these files, you do this adventure for your self.)

## From 3.0.x to 3.1.x

• Changes in stracker ini file
• Section Option name Default value Documentation
STRACKER_CONFIGappend_log_fileFalse Set to 1, if you want to append to log files rather than overwriting them. Only meaningful with external log file rotation system.
SESSION_MANAGEMENTrace_over_strategynone What to do when the race is over and no player is actively racing. Valid values are: "none" or "skip".
SESSION_MANAGEMENTwait_secs_before_skip15 Number of seconds to wait before the session skip is executed (if race_over_strategy is set to "skip")
HTTP_CONFIGauth_log_file Set to a file to be used for logging http authentication requests. Useful to prevent attacks with external program (e.g., fail2ban).
HTTP_CONFIGenable_paypal_linkTrue Enable paypal link for letting users donate to the author. If you do not like that, switch it off.
HTTP_CONFIGmax_streaming_clients10 Maximum number of streaming clients (LiveMap/Log users) allowed to connect to this server in parallel. The number of threads allocated for http serving will be max(10, max_streaming_clients + 5)
LAP_VALID_CHECKSptrackerAllowedTyresOut-1 if -1: use server penalty setting, if available, otherwise use 2. All other values are passed to ptracker.
STRACER_CONFIGkeep_alive_ptracker_connsTrue If False (not recommended), the TCP keep_alive option will be disabled (that was the behaviour pre 3.1.7). Note that users might get unexpected ptracker/stracker disconnections when this option is set to False.
• replace pysqlite3 module by apsw (big change - I hope this will be working!)
• this should be more stable in database migration, even on multiserver setups
• server reports now the combo ranking in case of a personal best / server best in addition to the car specific ranking
• stracker can now be configured to automatically skip race sessions, after everyone has finished (default: off)
• add config option SESSION_MANAGEMENT/wait_secs_before_skip (default: 15 seconds)
• add admin commands "/st session rlaps", "/st session qtime" and "/st session ptime" for setting number of laps / time of sessions in minutes
• player has to be in group "admins" to be able to use them
• if set to -1 (default) it uses the AC server's penalty setting, if valid, otherwise it uses 2
• if set to a number between 0 and 3, it configures ptracker for the allowed number of tyres out for valid laps
• do not count laps directly after session changes
• be more verbose about database migration
• better error reporting for port configuration issues
• experimental workaround for AC 1.3.3 linux server
• new stracker/ptracker protocol 10 (minor changes)
• finish session is now called when the ac signal arrives or when the ac server is detected to be down
• fix errors with log_requests option
• suppress warnings and debug messages from udp plugin API when server is down
• fix for A->B track caused division by zero
• fix logging of http server related warnings and errors (has been broken since introducing the log_requets option)
• fix connection losses for no reasons
• database version 21: add combo information to session
• http: add live view with map/ranking
• http: reworked statistics page
• http: more possibilities to filter lap times
• http: possibility to select comparison laps manually in lap details view
• http: add a log view in the admin section with some filtering options
• http: in case of multiple car sessions, the default lapstat filters are now correct even if not all cars have been used in last session
• http: better display of grip level in lap details
• http: fix parsing of json UI files by usage of a new parser module (simplejson instead of python's json)
• http: add admin button to invalidate all selected laps in statistics page
• http: fix multiserver log file display
• http: fix logging of http server related warnings and errors (has been broken since introducing the log_requets option)
• acauth: add more criteria for authorization
• acauth: add proxy feature for proxying e.g. minorating including a timeout

## From 2.8.x to 3.0.x

• new database version 20
• migration to the new AC server API (using acplugins4python)
• stracker/ptracker protocol optimizations; bandwidth problems shall be history now
• allow AC servers to be restarted independently from stracker. Only exception are changes in the UDP configuration, on which stracker exits.
• automatic reconnect of ptrackers after stracker has been restarted.
• server-side calculation of the valid flag (only possible for servers with penalty atm. I hope this will be possible for servers without penalties in the future)
• upgrade to sqlite 3.08.11.1 (should have a better performance)
• include lap rank in the best lap messages
• optionally invalidate laps with collisions
• new messages for car to car collisions, showing the name of the other car and the impact speed
• add stracker.ini option for controlling the ptracker connections (settings are any, newer, none)
• server messages are now sent over chat if ptracker is not available (message types are configurable in stracker.ini)
• calculate server-side soft splits (if any splits have been uploaded by ptracker already)
• logging improvements:
• optionally prefix messages with a timestamp (default: off)
• hide passwords and user name in the stracker log file
• add an optional flattr link in the http footer. Can be disabled with config option. Bye me a beer :) (default: on)
• add support for the AC authentication feature (see http://:/admin/acauth for details)
• optimized some of the database queries
• add a new option for lowering the priority of stracker to give more performance to the game server (default: on)
• http: new tyre selector in the lapstats table (only for laps after AC 1.2.x)
• http: display number of laps in the lapstats table
• http: add options to filter lap statistics for the used server (in multiserver setups)
• stracker-packager: add option for AC installation dir and support non-default installation dirs

## From 2.6.x to 2.8.x

• new db version 19 (relevant only for stracker):
• add new columns for Tracks and Cars tables
• rename "Players" to "Drivers" in http server output (but the http addresses remain)
• convert car and track name settings from server_cfg.ini to lower case before using them
• fix banlist usage when no banlist could be parsed
• include stracker.ini and server_cfg.ini in stracker logs (for better debugging)
• http server: add team classification to championships
• team memberships can be assigned automatically using the entry_list.ini
• team memberships can be assigned manually (in Admin Area) for all sessions belonging to a championship
• http server: add statistics page
• http server: the banner image is now configurable in the .ini file, default is the Assetto Corsa logo
• http_server: add support for submitting AC's UI data from admin clients to the server
• http_server: add general_admin page with a list of all cars and tracks used in this server
• http_server: nicer displays for tracks and cars (if ui data is available)
• http_server: add lap comparison charts in the lap details page
• add stracker-packager.exe, which can be used to add some UI data (human readable names for tracks and cars,badge icons and track maps) to the stracker server (visit the general admin page)
• http_server: add map display in lap_details page (if map is available)
• http_server: enable gzip http transfers and perform server-sided in memory caching of http responses

## From 2.6.8 to 2.6.10

• fix stracker freezes after disconnection of players

## From 2.6.7 to 2.6.8

• support track configurations
• automatically convert configured tracks and track configurations to lower case
• save a finished session as soon as all players have disconnected (avoid unsaved sessions when stracker is killed)

## To 2.6.x

• http: introduce championship management
• http: perform a http redirect after modifying the db
• http: prevent search engines to access the statistics pages (only main page will be accessable)
• http: fix problems with html footer
• add a perform backup option to stracker.exe to manually perform a db backup to a db3 file
• reduce number of /info page requests to avoid blowing up the AC server log file
• fix track checksum comparisons