﻿# ================================================================= #
#                  AIRIO COMMON CONFIGURATION FILE                  #
# ================================================================= #


# The following values are common to all defined/active servers 
# managed by one Airio instance. Values marked as FULL are used only 
# in FULL Airio version, they are ignored in the freely available 
# compile. Values marked as PROS are included only in this version.


# ==================== CONFIGURATION SETTINGS ===================== #

# This section covers general Airio instance options like logging 
# data, communication settings, statistics options and supported 
# cars/tracks.

# File with CFG items to include at this place - string
# If the defined file exists, its contents would be virtually pasted
# at the place of this directive and fully processed.
IncludeFile=

# Short instance info displayed as tooltip on the servers page - string
WebDescription=

# Use virtual tabulators in button output of many commands - boolean
# Tabulated output is pleasing to the eye due to neatly arranged data
# but it involves extensive communication with clients using commands.
# If buttons display is too slow or causing troubles, use false here.
TabulateOutput=true

# ------------------------ General options ------------------------ #

# Using standard 2 letters this defines language to be used by all
# new players (first connected) including the host system - string
# The appropriate language file must be available or EN will be used.
DefaultLanguage=

# Global name of this group of servers - string
# This is used in identifying your server(s) in local/global stats.
# Use 10 descriptive characters at maximum, the rest will be cut off.
ServersID=

# PROS: Maximum number of supported real LFS servers - integer
# Fully supported is "live" increasing and decreasing of the number
# of possible server connections without Airio restart. In FREE
# version this value is always 4, in FULL it is always 2.
NumServers=4

# Wait for one more keypress before exiting Airio - boolean
# In some scenarios (like running under FireDaemon) the application 
# cannot be closed by a single keypress or command, but first data 
# must be saved and then it could be killed.
StopExit=false

# Separate messages to server by this number of miliseconds - integer
# Supported values are 0 (no delay) to 100, with 1 to 10 being optimal.
# This setting may help to prevent TCP errors when communicating with
# LFS server. You may try using 0 and if there are error messages in 
# server console, you may increase this value and reload new settings.
# No Airio or server restart is necessary, just use the !rld command.
TCPSendDelay=5

# Number of quick reconnect tries before full disconnect - integer
# If greater than zero Airio will try to overcome temporary server
# disconnect cause e.g. by extreme lags at race start. Note that
# this option is rather experimental and may cause other errors.
# Supported values are 0 to 10 only, default is 0.
QuickReconTries=0

# Turns on/off immediate log data flushing to disk - boolean
# If set to true, log data will be complete even after program crash.
LogFlush=true

# Turns on/off detailed system logging of stats, events, procedures,
# personal messages (splitting info), and debug lines - boolean
# Useful only for debugging the source code as it generates huge
# number of log entries that are also flushed constantly.
LogStats=false
LogEvents=false
LogProcedures=false
LogMessages=false
LogDebugs=false

# PROS: Use Airio custom banning system - boolean
# The !ban and !unban commands then manage external ban list giving
# friendlier banning environment to both admins and users. Also the
# !lban command listing details about active bans will be available.
BanUsingAirio=false

# PROS: Limit banned driver IP usage for set minutes - integer
# Airio custom banning system and server logging must be active.
IPBanLength=15

# FULL: Should admin/limad !ban commands go to all servers - boolean
# If true, automatic bans by Airio and using !ban command (not /ban or
# admin buttons) will apply to all currently connected servers.
BanOnAllServers=true

# How many OOS disconnects are allowed before temporary ban - integer
# To prevent endless OOS disconnects of some people with installed
# LFS modifications use a value higher than zero.
MaxSecurityDisconnects=3

# Use round or square race restart/end countdown buttons - boolean
UseRoundCountdown=false

# ------------------------ Communication ------------------------- #

# LFSW PubStats key - string
# If IdentKey is empty no LFSW data will be downloaded/available. In
# FULL version you may define several keys by starting/concatenating 
# '+' to speed up free data retrieval process. Note that the keys 
# must belong to different people, e.g. team members.
IdentKey=

# LFSW PubStats data retrieval method - boolean
# If IdentPay is false the service is free of charge but limited to 
# one request per 5 seconds. 
IdentPay=false

# Get also hotlap (uploaded) data for everyone - boolean
# If true, then the better of online/hotlap data is used as LFSW PB.
GetHotlaps=false

# Automatic update of LFSW WR table every hour - boolean
# Turn this off for some time after major resets in WR table data
# and use an older version, because WR data are important for Airio.
UpdateWR=true

# Number of retries when asking for LFSW data and getting none - integer
NumRetries=0

# FULL: FTP server for data upload/download - ftp://name:pass@address/
# If empty, no uploads and downloads will be done.
# HTTP server for backed up files download without name and pass
ServerFTP=
ServerHTTP=

# FULL: Address of a script to process live data sent every minute
# Multiple receivers of live Airio data can be separated by '+'.
ServerStats=

# FULL: IRC server settings for info/requests - string, integer, string
# If empty or invalid, no IRC communication will take place.
IRCServer=
IRCPort=
IRCChannel=

# FULL: TS3 server connection data - string, integer
# IP address, query port, and client port of a Team Speak 3 server.
# If no IP or port is set the TS3 connection will not be created.
TS3ServerIP=
TS3QueryPort=
TS3ClientPort=

# FULL: TS3 server additional data - integer
# Admin group number of the TS3 server. Only members of this group
# can remotely connect to servers and gain full textual control. (TBI)
TS3AdminGroup=

# Address of a (PHP) script to be run periodically - string
# Periodicity of the script in minutes - integer
# Output of the script is ignored. These items may be used to define
# instance (not server) action, such as a script updating statistics.
# Define multiple scripts using '+' as the address separator.
ScriptInstance=
ScriptPeriod=120

# ---------------------- Statistics options ----------------------- #

# Optionally also store data into a SQLite database file. This file 
# is created on 1st Airio run and then continuously updated as new 
# data are available. For SQLite support you need to separately
# install (copy) sqlite3.dll on Windows or sqlite3.so on Linux into
# system directory, see http://www.sqlite.org/download.html.
UseSQLite=false

# Store also drivers without sufficient PB on any track/car - integer
# If set higher than zero the top-level driver's data (username, 
# nickname, options, playing points, safety rating) are stored for 
# everyone for the specified number of days. If set to zero, there's
# no record of a driver in stats until he does sufficient PB in at 
# least one track/car combination.
StoreAllFor=30

# Remove from stats people that last raced more then the set number
# of days in the past. Using 0 means nobody will be ever removed, his
# stats erased. Using number such as 365 or 500 will ensure only
# active people remain in statistics (may be good for demo servers).
DaysKeepStats=600

# Remove from stats combos of individual people depending on the
# number of laps done and days since last lap done. This may help
# to remove unused combos with low number of laps from the stats.
# The formula to calculate number of days after which the combo is
# removed: days = Log(laps, StatsLogBase) * StatsLogMultiply,
# where StatsLogBase is the logarithm base. With values of 5 and 100
# combos with 5 laps done will be removed after 100 days, 25 laps 
# will stay for 200 days, 125 for 400 days, 625 for 500 days etc.
# If either config value is zero, no combo removal is done.
StatsLogBase=0
StatsLogMultiply=100

# Days to cycle (clear) points/data gathered from races - integers
# Relevant point data are zeroed for all players on server midnight
# in the set intervals. 0 means never.
DaysChamp=7
DaysTotal=0

# FULL: Days to keep server messages stored in an external file - integer
# Once this period expires for a certain server message, it is removed
# even if not read. The sender is notified.
DaysMessage=7

# Selects STA files format as line-separated or tab-separated - boolean
# This options affects saving the files, format for reading is gained
# automatically. Tab-separated files are smaller and may be easier to
# handle using PHP scripts. Line-separated files were used originally
# and they are defaults.
UseTabSeparated=true

# Include current LFSW WR in !sb (!top) and !tb (!ttop) - boolean
# FULL: Include current AIRW BL in !sb and !tb output - boolean
InTopShowWR=true
InTopShowBL=true

# Time (percentage) required for stats comparing to WR - integer
# Players with worse time will not be stored in stats and just 
# informed what time they must achieve.
MaxTime=110

# Store PBs only if the lap was clean, inside racing path - boolean
# Delay of x/10 seconds before seeing the car off the path - integer
CheckRacePath=false
RacePathDelay=5

# FULL: Store PBs/TBs only if the splits/sectors were completely clean 
# (no object or wall hit, no cars near, good race path) - boolean
StoreOnlyAirwPbs=false
StoreOnlyAirwTbs=false

# Disallow prohibited names (defined below) - boolean
# Disallow too short nicknames - integer
# Disallow repeated (in stats) nicknames and usernames - boolean
# If active (true), no one can take existing nickname or username.
CheckName=true
MinNameLength=2
CheckDouble=false

# Daily increase of total lap/average/race time in centiseconds.
# This can make !laps, !avgs, and !races more dynamic - integers
LapsDailyIncrease=0
AveragesDailyIncrease=0
RacesDailyIncrease=0


# ---------------------- Stats export/upload ---------------------- #

# FULL: Zip and upload complete Airio stats data - boolean
# If set to true, Airio STA files will be zipped and uploaded to
# a server specified in ServerFTP key for further processing every
# ExportStatsTime minutes.
UploadAirioData=false

# Interval to export/upload Airio statistics data - integer
# Set in minutes the interval to export stats into Lapper format
# and/or to upload Airio drivers' data to a FTP server (in FULL only).
ExportStatsTime=60

# Export Airio data into LFS Lapper format - boolean
# You can set automatic export of Airio data into Lapper format for
# further processing e.g. by existing PHP scripts. You may do the
# export also manually by calling !exp command.
ExportLapperData=false

# FULL: Upload exported Lapper PB.txt file - boolean
# If set to true, the exported Lapper PB.txt file will be uploaded 
# to ServerFTP every ExportStatsTime minutes. (See ExportLapperData.)
UploadLapperData=false

# Export nicknames in raw LFS code (false) or as Unicode (true).
UnicodeLapperNicknames=false

# During Lapper data import ignore incomplete or wrong data - boolean
# LFS Lapper's PB.txt file may unfortunately contain very wrong data
# such as missing car types, absurd split/sector times etc. When set
# to true the import will ignore items with missing or unrealistic
# data. Skipped will be all data with PB or TB better than 95% of WR,
# data with missing lines, items with PB time over MaxTime (see above),
# and items (track/car combos) with less than 3 recorded laps.
ClearLapperData=true

# ---------------------------- Ratings ---------------------------- #

# Additional weight values are in the SRV file under Ratings header.

# Safety rating starting value in percents * 100 - integer
# The first time ratings start to be gathered new drivers are given
# this default value. Use zero to deactivate safety rating.
StartRate=4500

# FULL: Assign initial rating value by LFS Experience Index - string
# Use ascending experience index and assigned (rating * 100) %
ExperienceRate=500 > 5000, 600 > 6000, 700 > 7000, 800 > 8000

# FULL: Show only LFS Experience Index above this value - integer
ExperienceLimit=100

# Safety rating stability - integer
# In effect says how many past changes are used in calculation; the
# lower the number the faster changes in ratings are possible.
RateStability=100

# Ratings in percents * 100 when driver is warned and banned - integers
# Every decrease below RateWarning is reported, decrease below 
# RateLimit results in ban for set BanLength and rating increase to 
# the value of RateWarning so that improvement is possible.
RateWarning=3750
RateLimit=3500

# Relative rating decrease for every inactive day - integer
# Ratings of all drivers not racing for the whole day can be slightly
# decreased to make safety rating more dynamic and responsive.
RateDailyDecrease=-5


# ================= LIMITED ADMIN RIGHTS - LIMADS ================= #

# In this section you can define people with limited admin rights, 
# including the commands they can use and actions they may take at
# different levels.

# In FREE version you may use the following levels: < 0 = everyone,
# 0 = lowest limad, 2 = mid limad, 4 = virtual admin, > 5 = no one. 
# FULL version supports finer limad tuning by adding: 1 = low limad, 
# 3 = high limad, 5 = more than admin, requires admin pass as well.

# --------------------- Limad Names and Levels -------------------- #

# Usernames (registered) of limited admins aka limads. These names 
# are checked upon connecting and exact case insensitive match is 
# required. Default rights: Level 0 - can use prohibited names (good 
# for team members), Level 1 - can kick, Level 2 - can ban anyone 
# connected, Level 3 - can ban and unban anyone, Level 4 - can do 
# almost anything, Level 5 - can also manipulate with stats.

Limad2=EQ Worry
# Just an example, feel free to remove me. :-)

# FULL: Custom descriptions of limad levels based on rights - string
# Always seven comma-separated textual items are required, starting
# with normal drivers without any additional options.
LimadDesc=User, Limad0, Limad1, Limad2, Limad3, Limad4, Limad5

# ---------------------- Managed LFS Commands --------------------- #

# These commands are further managed by Airio, simplifying the usage
# or grouping several server commands into one. Specify limad level
# for which (or higher) the command should be available. The commands
# will show in !lhelp1 (or just !l1) and !lhelp2 (!l2) output.

# Restrictive commands: !ban (/ban), !ub (/unban), !kk (/kick), 
                        !se (/spec) + !pit (/pitlane)
# Limited ban is only for banning online drivers for BanLength.
# Limited unban allows to unban only recently banned people.
EnableBanLimited=2
EnableBanFull=4
EnableUnbanLimited=2
EnableUnbanFull=4
EnableKick=2
EnableSpec=2

# Race state voting: !re (/restart), !qu (/qualify), !end (/end)
EnableRestart=2
EnableQualify=2
EnableEnd=4

# Race control: !pen (/p_*), !rc (rcm_* + rcc_*)
EnablePenalty=2
EnableControl=2

# Autocross layouts: !ax (/ax*)
EnableAutox=2

# Affect-all commands: !pall (/pit_all) + !sall (spectates all)
EnablePitall=4

# ------------------------- Airio Commands ------------------------ #

# These are additional Airio commands assignable to limad categories.
# They are part of the !lhelp2 (or just !l2) command output.

# Calling server inicialization settings: !sini
EnableInit=4

# Grouping races into series: !group
EnableGroup=4

# Turning on/off all Airio checks: !checks
EnableChecks=4

# Locking server by PB time: !lock
EnableLock=4

# Setting race length in minutes or laps: !length
EnableLength=4

# --------------------- Unmanaged LFS Commands -------------------- #

# These commands are directly converted into server commands. No 
# checks of parameters validity are done. The  commands will show in 
# !lhelp3 (or just !l3) output.

# Track/car configuration: /track, /cars
EnableTrackCars=2

# Wind and weather: /wind, /weather
EnableWindWeather=2

# Length settings: /qual, /laps, /hours
EnableLapsHours=2

# Race state: /vote, /midrace, /mustpit, /canreset
EnableCanvote=4
EnableMidrace=4
EnableMustpit=4
EnableCanreset=4

# Additional commands: /msg, /pass, /cv, /ck
EnableMsg=2
EnablePass=4
EnableCancel=2

# FULL: Sending system messages to all servers: !msa = /msg everywhere
# FULL: Sending control messages to all servers: !rca = /rc everywhere
EnableMsa=3
EnableRca=3

# ------------------------- Admin Commands ------------------------ #

# These commands are listed in !ahelp (!a) output and can have big
# impacts. Be careful about the level from which they're available.
# For all of them the limad must also be admin, real or virtual.

# FULL: From what level the limad is seen as virtual admin with
# extended options (more data in !ver output, more options in !tr 
# and !rep, availability of !ahelp commands according to the values
# set below. In FREE this value is always 4.
IsAdmin=4

# Complete stats manipulation: !rem, !del, !clr, !imp, !exp
EnableStats=5

# Configuration updates: !rld, !cfg
EnableConfig=4

# External communication: !cini, !uld, !dld
EnableCommun=4

# Airio join/part/quit/restart: !quit, !aini, !join, !part
EnableQuit=4

# --------------------- Allowed Limad Actions --------------------- #

# This is what limads and admins are allowed to do. These are actions
# leading usually to spectating or kicking, but you may protect limads
# here from such unpleasant experiences.

# From what limad level it is possible to use prihibited names, curse, 
# flood, idle and drive wrong way.
AllowName=0
AllowCursing=4
AllowFlooding=2
AllowIdling=4
AllowDriving=4

# From what limad level it is possible to drive fast in pits, lag, 
# and be inactive.
AllowSpeeding=2
AllowLagging=2
AllowInactivity=2

# From what level standard joining checks will be ignored - 
# unlimited rejoins, registration, time lock.
AllowJoining=0
AllowRegister=0
AllowLock=0

# FULL: From what level advanced joining checks will be ignored - 
# required licence, rank, safety, experience.
AllowLicence=3
AllowRank=3
AllowSafety=3
AllowExperience=3

# From what limad level the Airio will never kick for bad setup, car
# options, spectatings, etc. People will be spectated, but not kicked.
AllowNoKick=2

# ------------------------ Special Commands ----------------------- #

# From what level the limad info in !player command is available.
# From what level the !recent command is available.
# From what level (if at all) the !rep command is available.
AllowPlayers=0
AllowRecent=0
AllowReport=-1


# ===================== NICK/USER NAME FILTER ===================== #

# This is the place to manage usernames (registered) and nicknames.
# You may define permanently banned people here just as parts of
# names that cannot be used.

# ----------------------- Banned Usernames ------------------------ #

# Case insensitive usernames of people that will be always kicked,
# making them in effect permanently banned from all servers under 
# this one Airio instance. To keep the names in a separate file for
# easier management use IncludeFile here, but do not forget to always
# add BName= in front of every name in the external file.

BName=

# ----------------------- Refused Hostnames ----------------------- #

# FULL: Case insensitive parts of host names. Connections from these
# hosts (ISPs) will be refused. Use with care and only temporarily
# because it may affect many innocent people.

BHost=

# ------------------------- Wrong Nicknames ----------------------- #

# Wrong nicknames or parts of those. People with these are spectated
# when trying to join race, with appropriate rename instructions.
# Wrong names have precedence over prohibited names as defined below.

WName=unnamed
WName=login

# ---------------------- Prohibited Nicknames --------------------- #

# Pohibited nicknames or parts of those. People with these are 
# kicked immediatelly after connecting. Char replacements (see below)
# are applied first. Items are entered as "PName=text". Nicknames are
# also checked for cursing (see below).

PName=admin


# ====================== LANGUAGE/TEXT FILTER ===================== #

# Here you can define bad words (curses), exceptions,  and character 
# replacements. Sections may be empty and their order changed as 
# necessary, entries may even be mixed.

# ----------------------- Bad Language Words ---------------------- #

# Words or parts of those seen as curses - both in name and chat text.
# Char replacements (see below) are applied first.

Curse=fuck
Curse=noob
Curse=shit

# --------------------- Language Exceptions ----------------------- #

# Exceptions to curses, which capture cases as "cars hit" or "no
# objections" etc. If a curse is seen, but also exception, then
# Airio does not see the text as a bad language.

Excep=arshit
Excep=noobje

# ------------------- Character Replacements ---------------------- #

# Character/string replacements applied before all text filters. Sign
# ~ separates old string/char from new string/char. It is possible to
# replace e.g. space and punctuation marks for nothing, or cyrilic M
# for latin M to fight the usual crasher/hacker tricks.

# Replac1 items are used when checking nicknames, without coversion
# to lower case, and are also applied to other checked text (chat).

Replac1=А~A
Replac1=Е~E
Replac1=О~O
Replac1=а~a
Replac1=е~e
Replac1=о~o
Replac1=Α~A
Replac1=Ε~E
Replac1=Ι~I
Replac1=Ο~O
Replac1=І~I

# Replac2 items are applied to all checked text except nicknames, but 
# only after the text is converted to lower case. Also multiple same 
# consecutive characters are replaced by just two.

Replac2= ~
Replac2=.~
Replac2=@~a
Replac2=©~c
Replac2=0~o
Replac2=1~i
Replac2=2~z
Replac2=3~e
Replac2=4~a
Replac2=5~s
Replac2=6~b
Replac2=7~t
Replac2=8~b


# ===================== ADDITIONAL CUSTOM TEXT ==================== #

# This is a place for defining Rules, Notes, and FAQ lines shown by
# clicking on appropriate buttons in the personal options screen
# (called by pressing Shift+i, sometimes twice). No '+' to concatenate
# lines is required; use space after = to create empty lines. Use
# ||XX where XX is one of the available languages to define several
# language versions of the same information.

# --------------------------- FAQ Items --------------------------- #

TextFAQs=^3Q1: What is this system?
TextFAQs=A1: This server InSim application called Airio was developed for AirAttack LFS servers. It builds on VCom and LFS Lapper ideas 
TextFAQs=introducing many new features. It stores/offers various statistics, allows players to customize the messages and provides 
TextFAQs=lots of additional things like controlling several servers with one running instance having common stats/configs file. Read 
TextFAQs=more in the Airio user manual at http://www.airio.eu/Airio_UM.html.
TextFAQs= 
TextFAQs=^3Q2: This Airio is flooding me with messages and data! Can I do something about it?
TextFAQs=A2: Press Shift+i and turn off all the information you don't need or require. In fact, you can make Airio completely silent.
TextFAQs= 
TextFAQs=^3Q3: Why were my statistics/settings not saved?
TextFAQs=A3: All time data are saved on lap end and only when two conditions are met: 1) personal best time is better than set server 
TextFAQs=limit, 2) lap data are complete and reasonable. Server limit is usually set at (1.1 * current WR time) and it is reported at 
TextFAQs=least once every session to all newcomers.
TextFAQs= 
TextFAQs=^3Q4: What do all the numbers I get in splits mean? What is ^7S2P: 0:54.18 (^1+0.22^7) | 0:29.68 (^2-0.16^7) > ^61:14.64 ^3?
TextFAQs=A4: S2P means you are at split/sector 2 and comparing the times to your Personal best. Split time is 0:54.18 which is 0.22 
TextFAQs=seconds slower than in your server best recorded lap. Sector time (between split 1 and split 2 in this case) is 0:29.68. Here 
TextFAQs=you are 0.16 faster than you ever were. The last number in splits is lap time you'll have if you do the remaining sectors the 
TextFAQs=best way you ever did. On lap end there is total race time.
#TextFAQs=||GE Here would be the German version of the above text...

# --------------------------- Note Items -------------------------- #

TextNotes=^3LFSW statistics
TextNotes=Some of the Airio features require access to players' online statistics on LFS World. If these data are inaccessible because
TextNotes=the player has expressedly hidden them, he may not be able to join a race - this is the case when the server is locked and allows
TextNotes=only players with good online PBs to join (say 1:15.50 or better on BL1+FBM). If you certainly have better time and still cannot
TextNotes=join, unhide your stats and reconnect. Go to www.lfsworld.net, open "My LFSW Settings" panel and clear "Hide your online statistics 
TextNotes=from public" checkbox... Enjoy!

# --------------------------- Rule Items -------------------------- #

TextRules=
