; Servatrice configuration file
;
; This is the main configuration file for Servatrice; while using a configuration is not mandatory,
; you may want to customize some aspects of your servatrice instance, like its name, port or the way
; users can authenticate to the server.


[server]

; This is the name that servatrice exposes to the users; the default value is pretty boring
name="My Cockatrice server"

; Multiple servatrice servers can run on the same host using the same database; each server instance
; must have a different id; the default id is 1
id=1

; The TCP port number servatrice will listen on for clients; default is 4747
port=4747

; Servatrice can scale up to serve big number of users using more than one parallel thread of execution;
; If your server is hosting a lot of players and they frequently report of being unable to login or
; long delays (lag), you may want to try increasing this value; default is 1.
number_pools=1

; When database is enabled, servatrice writes the server status in the "update" database table; this
; setting defines every how many milliseconds servatrice will update its status; default is 15000 (15 secs)
statusupdate=15000

; Do you want servatrice to write important events and errors to a logfile? Default is 1 (yes).
writelog=1

; Choose a name for the log file, if enabled; you can specify an absolute path or a path relative to
; the servatrice executable; the default file name is server.log (in the same path as servatrice)
logfile=server.log

; You may want to silence some commonly recurring messages in the logfile. This setting can contain a
; comma-separed list of words; if any message that is about to be logged contains at least one of these words,
; it won't be logged. Default is empty; example: "kittens,ponies,faires"
logfilters=""


[authentication]

; Servatrice can authenticate users connecting. It currently supports 3 different authentication methods:
; * none: no authentication, accept every user;
; * password: require users to specify a common password to log in;
; * sql: authenticate users against the "users" table of the database;
; Please note that only the "sql" method permits to have registered users and store their data on the server.
method=none

; if the chosen authentication method is password, here you can define the password your users will use to log in
password=123456

; Accept only registered users? default is 0 (accept unregistered users)
regonly=0

[registration]

; Servatrice can process registration requests to add new users on the fly.
; Enable this feature? Default false.
;enabled=false

; Require users to provide an email address in order to register. Newly registered users will receive an 
; activation token by email, and will be required to input back this token on cockatrice at the first login 
; to get their account activated. Default true.
;requireemail=true

[smtp]

; Connectin type: currently supported method are "tcp", "ssl" and "tls"
connection=tcp

; Auth type: currently supported method are "plain" and "login"
auth=plain

; Hostname or IP addres of the smtp server
host=localhost

; Smtp port number of the smtp server. Usual values are 25 or 587 for tcp, 465 for ssl
port=25

; Username: this typically matches the "from" email address
username=root@localhost

; Password for the username
password=foobar

; Sender email address: the "from" email address
email=root@localhost

; Sender email name
name="Cockatrice server"

; Email subject
subject="Cockatrice server account activation token"

; Email body. You can use these tags here: %username %token
; They will be substituted with the actual values in the email
; 
body="Hi %username, thank our for registering on our Cockatrice server\r\nHere's the activation token you need to supply for activatin your account:\r\n\r\n%token\r\n\r\nHappy gaming!"

[database]

; Database type. Valid values are:
; * none: no database;
; * mysql: mysql or compatible database;
type=none

; Prefix used in he database for table names; default is cockatrice
prefix=cockatrice

; Database connection parameter: server hostname or IP
hostname=localhost

; Database connection parameter: database name
database=servatrice

; Database connection parameter: database user
user=servatrice

; Database connection parameter: database user's password
password=foobar

[rooms]

; A servatrice server can expose to the users different "rooms" to chat and create games. Rooms can be defined
; with two different methods:
; config: rooms are defined in this configuration (see the following example)
; sql: rooms are defined in the "rooms" table of the database
method=config

; Example configuration for a server with rooms configured in the configuration file. Number of rooms defined
roomlist\size=1

; Room name for the room number 1
roomlist\1\name="General room"

; Room description for the room number 1
roomlist\1\description="Play anything here."

; Wether to make users autojoin this room when connected to the server
roomlist\1\autojoin=true

; Message displayed to each user when he joins room  number 1
roomlist\1\joinmessage="This message is only here to show that rooms can have a join message."

; Number of game types allowed (defined) in the room number 1
roomlist\1\game_types\size=3

; Name of the three game types for the room number 1
roomlist\1\game_types\1\name="GameType1"
roomlist\1\game_types\2\name="GameType2"
roomlist\1\game_types\3\name="GameType3"


[game]

; Maximum time in seconds a player can stay inactive, with his client hot even responding to pings, before is
; considered disconnected; default is 15
max_player_inactivity_time=15

; Maximum time in seconds all players in a game can stay inactive before the game is automatically closed;
; default is 120
max_game_inactivity_time=120


[security]

; Maximum number of users that can connect from the same IP address; useful to avoid bots, default is 4
max_users_per_address=4

; You may want to allow an unlimited number of users from a trusted source. This setting can contain a
; comma-separed list of IP addresses which will allow an unlimited number of connections from each of the
; IP addresses listed (ignoring the max_users_per_address). Default is "127.0.0.1,::1"; example: "192.73.233.244,81.4.100.74"
trusted_sources="127.0.0.1,::1"

; Servatrice can avoid users from flooding rooms with large number of messages in an interval of time.
; This setting defines the length in seconds of the considered interval; default is 10
message_counting_interval=10

; Maximum size in characters of all messages in an interval before new messages gets dropped; default is 1000
max_message_size_per_interval=1000

; Maximum number of messages in an interval before new messages gets dropped; default is 10
max_message_count_per_interval=10

; Maximum number of games a single user can create; default is 5
max_games_per_user=5

; Servatrice can avoid users from flooding games with large number of game commands in an interval of time.
; This setting defines the length in seconds of the considered interval; default is 10
command_counting_interval=10

; Maximum number of game commands in an interval before new commands gets dropped; default is 20
max_command_count_per_interval=20

[logging]

; Servatrice can log user messages to the database table cockatrice_log.
; These messages can come from different sources; each source can be enabled separately.

; Log user messages inside chat rooms
log_user_msg_room=false

; Log user messages inside games
log_user_msg_game=false

; Log user messages in private chats
log_user_msg_chat=false

; Log user messages coming from other servers in the network
log_user_msg_isl=false


; EXPERIMENTAL - NOT WORKING YET
; The following settings are relative to the server network functionality, that is not yet complete.
; Avoid enabling it unless you are willing to test it and help its development.

[servernetwork]

; Servatrice servers can connect themselves and build a network. This settins enable the ability of servatrice
; of waiting for other server's connections and connect to other servers. Other servers can be defined in the
; "servers" table of the database. Default is 0 (disabled)
active=0

; The TCP port number servatrice will listen on for other servers; default is 14747
port=14747

; Server-to-server communication needs a valid certificate in PEM format. Enter its filename in this setting
ssl_cert=ssl_cert.pem

; Filename of the private key for the server-to-server certificate
ssl_key=ssl_key.pem
