commit 0ffa5baae5794bd65872e53449622a5e3edc8337 Author: rogueking Date: Sun Nov 2 11:49:12 2025 -0800 init server config diff --git a/servatrice.ini b/servatrice.ini new file mode 100644 index 0000000..2806660 --- /dev/null +++ b/servatrice.ini @@ -0,0 +1,432 @@ +; 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. +; +; Can be passed to servatrice with --config /path/to/servatrice.ini + +[server] + +; This is the name that servatrice exposes to the users; the default value is pretty boring +name="magic wawa" + +; 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 IP address servatrice will listen on for clients; defaults to "any" to listen on all the interfaces, +; a specific IPv4/v6 addresses can be used, eg for localhost-only 127.0.0.1 for IPv4 or ::1 for IPv6. + +host=any + +; The TCP port number Servatrice will listen on for clients; default is 4747; +; Will be removed in the future, use websocket connection instead +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. +; Set to 0 to disable the tcp server. +number_pools=1 + +; Servatrice can listen for clients on websockets, too. Multiple connection pools are available but +; unfortunately, due to a Qt limitation, they must run in the same execution thread. +; Set to 0 to disable the websocket server. +websocket_number_pools=1 + +; The IP address servatrice will listen on for websockets clients; defaults to "any" +websocket_host=any + +; The TCP port number servatrice will listen on for websockets clients; default is 4748 +websocket_port=4748 + +; 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) +; Note: When running servatrice under windows you will need to use double backslashes between folder locations +; [ex: C:\\Temp\\server.log ] +logfile=server.log + +; You may want to log only certain messages in the logfile. The default log level is extremely verbose. +; This setting should contain a comma-separated list of strings that will be selectively logged. +; All other lines will be excluded from the log. Default is empty; example: "Registration,_Login,foobar" +logfilters="" + +; Set the time interval in seconds that servatrice will use to communicate with each connected client +; to verify the client has not timed out. Defaults is 1 seconds +clientkeepalive=1 + +; Maximum time in seconds a player can stay inactive with there client not even responding to pings, before is +; considered disconnected; default is 15 +max_player_inactivity_time=15 + +; More modern clients generate client IDs based on specific client side information. Enable this option to +; require that clients report the client ID in order to log into the server. Default is false +requireclientid=true + +; You can limit the types of clients that connect to the server by requiring different features be available +; on the client. This setting can contain a comma-seperated list of features. if any of the features +; listed in this line are not available on the client the client will be denied access to the server upon +; attempting to log in. Example: "client_id,client_ver,websocket" +requiredfeatures="" + +; You can define custom warnings that users are sent when the moderation staff uses the right client warn user +; menu option. This list is comma seperated that each item will appear in the drop down list for staff members +; to choose from. Example: "Flaming,Foul Language" +officialwarnings="Flaming,Spamming,Causing Drama,Abusive Language" + +; Maximum time in seconds a player can stay connected but idle. Default is 3600 (0 = disabled) +; Clients will be notified at the 90% time period of pending disconnection if they do not take action. +idleclienttimeout=3600 + +[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=sql + +; 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 false (accept unregistered users) +regonly=true + +[users] + +; The minimum length a username can be +minnamelength=4 + +; The maximum length a username can be +maxnamelength=18 + +; If a username should be allowed to contain lowercase chars [a-z] +allowlowercase=true + +; If a username should be allowed to conatain uppercase chars [A-Z] +allowuppercase=true + +; If a username should be allowed to contain numbers [0-9] +allownumerics=true + +; Define punctuation allowed in usernames +allowedpunctuation=_.- + +; If a username can begin with punctuation defined in allowedpunctuation +allowpunctuationprefix=false + +; Disallow usernames containing these words. This list is comma seperated, e.g. +; "admin,user,name" +disallowedwords="admin" + +; Overwrite the words shown to the user when they enter a wrong username, +; use \n to start a new line. Neither the real wordlist nor the disallowed +; expressions will be sent to the user if this is set. +; In the old versions of the client this list will be prefaced with +; "can not contain any of the following words:" +; example: +;displaydisallowedwords="no attempts at impersonating staff\nno unparliamentary language\nno references to controversial figures\nstaff reserves the right to remove accounts deemed inappropriate" +; Setting it to nothing will simply hide the list: +;displaydisallowedwords= + +; Disallow usernames matching these regular expressions. This list is comma +; separated, e.g. "\\w+\\d+,\\d{2}user", hence you cannot use commas in your +; expressions. Backslashes must be escaped, so `\w+\d+` becomes `\\w+\\d+`. +; WARNING: Complex expressions can be harmful to performance. Please make sure +; your expressions are considered well formed. See this page for info: +; http://www.regular-expressions.info/catastrophic.html +disallowedregexp="" + +; Define minimum password length +; Default 6. +minpasswordlength = 6 + +[registration] + +; Servatrice can process registration requests to add new users on the fly. +; Enable this feature? Default false. +enabled=true + +; Require users to provide an email address in order to register. Default true. +requireemail=false + +; Require email activation. 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. +requireemailactivation=false + +; Set this number to the maximum number of accounts any one user can use to create new accounts +; using the same email address. 0 = Unlimited number of accounts (default). +;maxaccountsperemail=0 + +; You can prevent users from using certain mail domains for registration. This setting contains a +; comma-seperated list of email provider domains that you would like to prevent users from using +; during registration. Comparison's are implicit, so placing an entry such as mail.com will also +; prevent users from registering accounts with providers such as gmail.com and hotmail.com +; Example: "10minutemail.com,gmail.com" +;emailproviderblacklist="" + +; You can require users to only use certain email domains for registration. This setting is a +; comma-separated list of email provider domains that you have explicitly audited and require +; the use of in order to create an account. Comparison's are explicit, so you must specify the +; domain in completion, such as gmail.com and hotmail.com. Email whitelist is checked before +; Email blacklist is checked, so an email cannot be in both setting configurations. +; Example: "gmail.com,hotmail.com,icloud.com" +;emailproviderwhitelist="" + +[forgotpassword] + +; Servatrice can process reset password requests allowing users to reset their account +; passwords in the event they forget it. Should this feature be enabled? Default: false. +; enable=false + +; Reset password request should not be allowed to stay valid forever. This settings +; informs servatrice how long a players reset password reset token is valid for (in minutes). +; Default: 60 +; tokenlife=60 + +; Servatrice can challenge users that are making reset password requests to answer +; questions in regards to their account to help validate they are the true owner of the account. +; Should this feature be enabled? Default: false +; enablechallenge=false + +; Email subject for the reset password emails +; subject="Cockatrice reset password token" + +; Reset password email body. You can use these tags here: %username %token +; They will be substituted with the actual values in the email +; +; body="Hi %username,\r\nthanks for reaching out to us with your password reset request for our Cockatrice server.\r\nHere's your unique token in order to reset your account password in the app:\r\n\r\n%token\r\n\r\nHappy gaming!" + + +[smtp] + +; Enable the internal smtp client to send registration emails. If you would like to +; use some other method to send email activation tokens set this value to false. Otherwise +; setting it to true (default) the server will send canned generated emails containing +; activation tokens for you during update intervals. Setting this to false will require +; you to either manually activate user accounts or manually send users the activation token +; by whatever means. +enableinternalsmtpclient=true + +; Connectin type: currently supported method are "tcp" and "ssl"; tls is autodetected if available +connection=tcp + +; Accept all certificates: in ssl mode, enable this if your server is using an invalid/self signed certificate +acceptallcerts=false; + +; 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 activating 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." + +; Rooms can restrict the level of user that can join. Current supported options are none, registered, moderator, administrator. +; Default is none. +roomlist\1\permissionlevel=none + +; Rooms can restrict the permission level of users that can join, Currnetly supported options are none, privileged, vip, and donator. +; Default is none. +roomlist\1\privilegelevel=none + +; 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." + +; The number of chat history messages to save that gets presented to a user joining the room +roomlist\1\chathistorysize=1000 + +; 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 all players in a game can stay inactive before the game is automatically closed; +; default is 120 +max_game_inactivity_time=120 + +; All actions during a game are recorded and stored in the database as a replay that all participants of +; the game can go back to and review after the game is closed. This can require a fairly large amount of +; storage to save all the information. Disable this option to prevent the storing of replay data in +; the database. Default value is true. +store_replays=true + +; Allow users to create a new game and join it as a judge. The host will be able to execute any action on +; the cards of every player. This is needed in order to support some games (eg. Werewolf). +; Default off to prevent abuse on servers that are mostly running other games. +allow_create_as_judge=false + +[security] +; You may want to restrict the number of users that can connect to your server at any given time. +enable_max_user_limit=false + +; Maximum number of users that can connect to the server, default is 500. +max_users_total=500 + +; Maximum number of users that can connect to the server using a tcp connection, default is 500. +max_users_tcp=500 + +; Maximum number of users that can connect to the server using a websocket connection, default is 500. +max_users_websocket=500 + +; 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=10000 + +; Maximum number of messages in an interval before new messages gets dropped; default is 10 +max_message_count_per_interval=100 + +; Maximum number of games a single user can create; default is 5; set to -1 to disable; 0 disallows game creation +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] +; Admin/Moderators can query the stored logs for information when looking up reports by various players. This +; option can allow or disallow them from doing so. +; !!NOTE!! Enabling this feature puts a very high CPU and DISK load on the server, enable with caution. +enablelogquery=true + +; 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 + +[audit] + +; Servatrice can record certain actions being performed in the database for server operators to better understand +; if some one may be abusing application functionality. Enabling auditing will allow servatrice to record any +; of the below enabled audit functionality to be recorded. +; Default: true +enable_audit=true + +; Servatrice can record when users attempt a new account registration. Should we enable auditing for this action? +; Default: true +enable_registration_audit=true + +; Servatrice can record when a users attempts to reset the account password. Should we enable auditing for this action? +; Default: true +enable_forgotpassword_audit=true + + +; 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 \ No newline at end of file