2015-02-22 02:09:22 +00:00
|
|
|
pyx.cookie_domain=.localhost
|
|
|
|
pyx.max_users=100
|
|
|
|
pyx.max_games=25
|
2018-10-24 03:47:41 +01:00
|
|
|
pyx.include_inactive_cardsets=false
|
2015-02-22 03:38:23 +00:00
|
|
|
pyx.broadcast_connects_and_disconnects=true
|
2018-02-28 19:19:34 +00:00
|
|
|
pyx.global_chat_enabled=true
|
2018-07-28 18:08:16 +01:00
|
|
|
pyx.game_chat_enabled=true
|
2018-07-28 17:50:31 +01:00
|
|
|
# allow fill-in-the-blank cards at all. Limits are set via constants in GameOptions.
|
|
|
|
pyx.allow_blank_cards=true
|
Add ID codes for positive user identification, and minor fixups.
Users can specify an identification code when they connect (8-100 characters), only if they are using HTTPS. This code is combined with their nickname and a server-side secret, hashed with SHA-256, and condensed down to 64 bits by XORing every 8th byte with each other, and finally converted to base64 (with the trailing = removed). This code is displayed in a tooltip when hovering over the user's chat (TODO: mobile way to view it).
Sigils have been added to be displayed before the user's name in the chat. Admins get @, users with an ID code get +, and normal users get nothing. The IS_ADMIN field is now deprecated, as this can be determined from the user's sigil. It will be removed eventually, but is still being included in events even though the official client should not be using it anymore.
Kicks and bans are now always displayed to all users, even if the server isn't transmitting quit events normally.
2018-03-03 01:24:58 +00:00
|
|
|
# allow identification codes to be used without HTTPS
|
|
|
|
pyx.insecure_id_allowed=true
|
|
|
|
# set this to some secure random value, and never change it, unless you want to break all codes
|
|
|
|
pyx.id_code_salt=
|
2018-03-22 23:26:30 +00:00
|
|
|
# comma-separated listed of IP addresses (v4 or v6) from which users are considered admins.
|
2018-03-26 21:59:04 +01:00
|
|
|
# IPv6 addresses must be fully spelt out without omitting groups of 0s with ::
|
|
|
|
pyx.admin_addrs=127.0.0.1,0:0:0:0:0:0:0:1
|
2018-06-13 19:36:28 +01:00
|
|
|
# comma-separated list of strings banned from appearing in nicks.
|
|
|
|
pyx.banned_nicks=xyzzy
|
2018-03-24 00:08:28 +00:00
|
|
|
|
2018-03-24 06:18:21 +00:00
|
|
|
# The name of a class that implements net.socialgamer.cah.util.ChatFilter.ShadowBannedStringProvider
|
|
|
|
# which will then be called to get the shadowbanned strings.
|
|
|
|
# Ideally we'd just have the list of strings here, but providing unicode characters directly gets
|
|
|
|
# mangled during the build process, and for some reason unicode escapes were not being loaded
|
|
|
|
# properly at runtime.
|
|
|
|
# If this is blank, it is ignored and no strings will cause such filtering to occur.
|
|
|
|
pyx.shadowban_strings_provider=
|
2018-03-24 00:08:28 +00:00
|
|
|
# Settings for global chat protection. Some of these do not apply to game chats.
|
|
|
|
# Ratio of 'basic' characters to length of message. Basic characters are defined by
|
|
|
|
# Character.isJavaIdentifierPart, which stipulates:
|
|
|
|
# -it is a letter
|
|
|
|
# -it is a currency symbol (such as '$')
|
|
|
|
# -it is a connecting punctuation character (such as '_')
|
|
|
|
# -it is a digit
|
|
|
|
# -it is a numeric letter (such as a Roman numeral character)
|
|
|
|
# -it is a combining mark
|
|
|
|
# -it is a non-spacing mark
|
|
|
|
# -isIdentifierIgnorable(codePoint) returns true for the character
|
|
|
|
pyx.global.basic_ratio=.5
|
|
|
|
# A message must have at least this many characters for that ratio to apply.
|
|
|
|
pyx.global.basic_min_len=10
|
2018-03-24 05:32:16 +00:00
|
|
|
# Message longer than min_len characters cannot have more than ratio of CAPS CHARACTERS
|
|
|
|
pyx.global.capslock_min_len=50
|
|
|
|
pyx.global.capslock_ratio=.5
|
2018-03-24 00:08:28 +00:00
|
|
|
# messages longer than min_len characters require at least min_count spaces between words
|
|
|
|
pyx.global.spaces_min_len=50
|
|
|
|
pyx.global.spaces_min_count=4
|
2018-03-23 21:36:26 +00:00
|
|
|
# this many messages to global chat in that many seconds is considered chatting too fast.
|
2018-03-24 00:08:28 +00:00
|
|
|
pyx.global.flood_count=3
|
2018-03-23 00:12:47 +00:00
|
|
|
# seconds
|
2018-03-24 00:08:28 +00:00
|
|
|
pyx.global.flood_time=25
|
2018-04-02 03:46:26 +01:00
|
|
|
# Messages with more than repeated_words_min_count words must have at least
|
|
|
|
# repeated_words_unique_ratio unique words in them.
|
|
|
|
pyx.global.repeated_words_min_count=10
|
|
|
|
pyx.global.repeated_words_unique_ratio=.5
|
2018-03-24 00:08:28 +00:00
|
|
|
|
|
|
|
# Settings for game chat protection. If it isn't listed here, it isn't supported.
|
2018-03-23 21:36:26 +00:00
|
|
|
# same but for game chats
|
2018-03-24 00:08:28 +00:00
|
|
|
pyx.game.flood_count=5
|
2018-03-23 21:36:26 +00:00
|
|
|
# seconds
|
2018-03-24 00:08:28 +00:00
|
|
|
pyx.game.flood_time=30
|
2018-03-23 21:36:26 +00:00
|
|
|
|
2015-02-22 02:09:22 +00:00
|
|
|
|
2015-02-16 01:29:45 +00:00
|
|
|
# for production use, use postgres
|
|
|
|
#hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
|
|
|
|
#hibernate.driver_class=org.postgresql.Driver
|
|
|
|
#hibernate.url=jdbc:postgresql://localhost/pyx
|
|
|
|
|
|
|
|
# for local use, you can also use sqlite
|
|
|
|
hibernate.dialect=net.socialgamer.cah.hibernate.SqliteDialect
|
|
|
|
hibernate.driver_class=org.sqlite.JDBC
|
|
|
|
hibernate.url=jdbc:sqlite:pyx.sqlite
|
|
|
|
|
|
|
|
# these likely need specified even with sqlite, even though they don't matter
|
2015-02-14 04:03:46 +00:00
|
|
|
hibernate.username=pyx
|
|
|
|
hibernate.password=CorrectHorseBatteryStaple
|
2015-02-16 01:29:45 +00:00
|
|
|
|
|
|
|
# debugging information
|
|
|
|
hibernate.sql.show=false
|
|
|
|
hibernate.sql.format=false
|
2015-02-28 19:58:47 +00:00
|
|
|
|
|
|
|
# second-level hibernate cache.
|
|
|
|
# vastly reduces database load at expense of data potentially being stale.
|
|
|
|
# use an in-memory cache provider. this is not suitable for long-term use, however I am using it for
|
|
|
|
# my servers for the time being -- better than nothing
|
|
|
|
#hibernate.cache.use_second_level_cache=true
|
|
|
|
#hibernate.cache.use_query_cache=true
|
|
|
|
#hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
|
|
|
|
|
|
|
|
# to turn it off, use these settings instead. you will hit the db a lot more often.
|
|
|
|
hibernate.cache.use_second_level_cache=false
|
|
|
|
hibernate.cache.use_query_cache=false
|
|
|
|
hibernate.cache.provider_class=org.hibernate.cache.NoCacheProvider
|
2017-02-21 05:35:44 +00:00
|
|
|
|
2018-05-30 20:19:53 +01:00
|
|
|
# If the server should send replay IDs to clients after certain events, and if the client should
|
|
|
|
# display a permalink to them. You must be using the KafkaMetrics implementation, and have
|
2018-04-05 00:09:17 +01:00
|
|
|
# pyx-metrics-processor running somewhere to put the data into a database, and have
|
|
|
|
# pyx-metrics-viewer running somewhere connected to that database. The URL to the viewer is provided
|
2018-05-30 20:19:53 +01:00
|
|
|
# below. If you don't know what any of that is, you certainly don't have it running, so leave these
|
2018-04-05 00:09:17 +01:00
|
|
|
# set to false.
|
2018-05-30 20:19:53 +01:00
|
|
|
pyx.metrics.game.enabled=false
|
2018-04-05 00:09:17 +01:00
|
|
|
pyx.metrics.round.enabled=false
|
2018-05-30 20:19:53 +01:00
|
|
|
pyx.metrics.session.enabled=false
|
|
|
|
pyx.metrics.user.enabled=false
|
|
|
|
# Format string to the URL to view previous gameplay. Must contain exactly one %s which will be
|
|
|
|
# replaced with the event's ID.
|
|
|
|
pyx.metrics.game.url_format=http://localhost:4080/game/%s
|
|
|
|
pyx.metrics.round.url_format=http://localhost:4080/round/%s
|
|
|
|
pyx.metrics.session.url_format=http://localhost:4080/session/%s
|
|
|
|
pyx.metrics.user.url_format=http://localhost:4080/user/%s
|
|
|
|
# Metrics logger implementation.
|
2017-02-21 05:35:44 +00:00
|
|
|
pyx.metrics.impl=net.socialgamer.cah.metrics.NoOpMetrics
|
|
|
|
|
2017-02-27 06:27:56 +00:00
|
|
|
# for kafka metrics
|
|
|
|
kafka.host=kafka-host:9092
|
|
|
|
kafka.topic=pyx-metrics
|
2017-03-04 21:55:41 +00:00
|
|
|
# if this is false, the rest don't matter
|
|
|
|
kafka.ssl=false
|
|
|
|
kafka.truststore.path=
|
|
|
|
kafka.truststore.password=
|
|
|
|
# if this is false, the rest don't matter
|
2017-03-04 23:43:00 +00:00
|
|
|
kafka.ssl.usekey=false
|
2017-03-04 21:55:41 +00:00
|
|
|
kafka.keystore.path=
|
|
|
|
kafka.keystore.password=
|
|
|
|
kafka.key.password=
|
2017-03-04 23:43:00 +00:00
|
|
|
# only SCRAM-SHA-512 supported; if this is false, the rest don't matter
|
|
|
|
# must be used with ssl, does not need client key
|
|
|
|
kafka.sasl=false
|
|
|
|
kafka.sasl.username=
|
|
|
|
kafka.sasl.password=
|
|
|
|
|
2017-02-27 06:27:56 +00:00
|
|
|
|
|
|
|
|
2017-02-21 05:35:44 +00:00
|
|
|
# GeoIP database for analytics. If unset, will not be used.
|
|
|
|
# Only used if the above is not NoOpMetrics.
|
|
|
|
# See README.md for instructions.
|
|
|
|
geoip.db=
|