764 lines
15 KiB
Plaintext
764 lines
15 KiB
Plaintext
mongodb {
|
|
uri = "mongodb://127.0.0.1:27017/lichess"
|
|
mongo-async-driver = {}
|
|
image.collection = "image"
|
|
}
|
|
net {
|
|
domain = "lichess.org"
|
|
protocol = "http://"
|
|
base_url = ${net.protocol}${net.domain}
|
|
ip = "5.196.91.160"
|
|
asset {
|
|
domain = ${net.domain}
|
|
version = 1730
|
|
}
|
|
email = "contact@lichess.org"
|
|
crawlable = false
|
|
}
|
|
forcedev = false
|
|
play {
|
|
server {
|
|
netty {
|
|
# The maximum length of the initial line. This effectively restricts the maximum length of a URL that the server will
|
|
# accept, the initial line consists of the method (3-7 characters), the URL, and the HTTP version (8 characters),
|
|
# including typical whitespace, the maximum URL length will be this number - 18.
|
|
maxInitialLineLength = 2048 # 4096
|
|
|
|
# The maximum length of the HTTP headers. The most common effect of this is a restriction in cookie length, including
|
|
# number of cookies and size of cookie values.
|
|
maxHeaderSize = 4096 # 8192
|
|
}
|
|
}
|
|
http {
|
|
session {
|
|
cookieName = "lila2"
|
|
maxAge = 365 days
|
|
}
|
|
}
|
|
ws {
|
|
useragent = ${net.base_url}
|
|
compressionEnabled = true
|
|
timeout {
|
|
connection = 5 seconds
|
|
idle = 5 minutes
|
|
request = 5 minutes
|
|
}
|
|
}
|
|
crypto {
|
|
secret="CiebwjgIM9cHQ;I?Xk:sfqDJ;BhIe:jsL?r=?IPF[saf>s^r0]?0grUq4>q?5mP^"
|
|
}
|
|
akka.actor-system = "lila"
|
|
}
|
|
app {
|
|
scheduler {
|
|
disabled = false
|
|
debug = false
|
|
}
|
|
renderer.name = "renderer"
|
|
web_path = "public"
|
|
casual_only = false
|
|
}
|
|
api {
|
|
token = secret
|
|
influx_event = {
|
|
endpoint = "http://bofur.lichess.org:8086/write?db=events"
|
|
env = "dev"
|
|
}
|
|
}
|
|
cli {
|
|
username = "thibault"
|
|
}
|
|
chessground {
|
|
animation {
|
|
duration = 250 ms
|
|
}
|
|
}
|
|
editor {
|
|
animation.duration = ${chessground.animation.duration}
|
|
}
|
|
accessibility {
|
|
blind {
|
|
cookie {
|
|
name = "mBzamRgfXgRBSnXB"
|
|
salt = "WWcTbz5xxaHU4d96"
|
|
max_age = 31536000 # one year
|
|
}
|
|
}
|
|
}
|
|
prismic {
|
|
api_url = "https://lichess.cdn.prismic.io/api"
|
|
}
|
|
blog {
|
|
prismic {
|
|
api_url = ${prismic.api_url}
|
|
collection = blog
|
|
}
|
|
last_post_cache.ttl = 5 minutes
|
|
rss {
|
|
email = ${net.email}
|
|
}
|
|
}
|
|
qa {
|
|
collection {
|
|
question = qa_question
|
|
answer = qa_answer
|
|
}
|
|
}
|
|
chat {
|
|
collection {
|
|
chat = chat
|
|
timeout = chat_timeout
|
|
}
|
|
max_lines = 200
|
|
net.domain = ${net.domain}
|
|
actor.name = chat
|
|
timeout {
|
|
duration = 15 minutes
|
|
check_every = 15 seconds
|
|
}
|
|
}
|
|
puzzle {
|
|
mongodb {
|
|
uri = "mongodb://127.0.0.1:27017/lichess"
|
|
mongo-async-driver = {}
|
|
}
|
|
collection {
|
|
puzzle = puzzle
|
|
round = puzzle_round
|
|
learning = puzzle_learning
|
|
vote = puzzle_vote
|
|
head = puzzle_head
|
|
}
|
|
api.token = ${api.token}
|
|
selector {
|
|
puzzle_id_min = 61000
|
|
}
|
|
animation.duration = ${chessground.animation.duration}
|
|
}
|
|
coordinate {
|
|
collection {
|
|
score = coordinate_score
|
|
}
|
|
}
|
|
event {
|
|
collection {
|
|
event = event
|
|
}
|
|
}
|
|
opening {
|
|
collection {
|
|
opening = opening
|
|
attempt = opening_attempt
|
|
name = opening_name
|
|
}
|
|
selector {
|
|
tolerance = {
|
|
step = 160
|
|
max = 1000
|
|
}
|
|
max_attempts = 10000
|
|
}
|
|
animation.duration = ${chessground.animation.duration}
|
|
api.token = ${api.token}
|
|
}
|
|
video {
|
|
collection {
|
|
video = video
|
|
view = video_view
|
|
}
|
|
sheet {
|
|
url = "https://spreadsheets.google.com/feeds/list/1qYU1XhvC8TlBggXEkjI481ieNGyYGmMTy97A9iboyrM/2/public/values?alt=json"
|
|
delay = 3 hour
|
|
}
|
|
youtube {
|
|
url = "https://www.googleapis.com/youtube/v3/videos"
|
|
api_key = ""
|
|
max = 50
|
|
delay = 20 minutes
|
|
}
|
|
}
|
|
search {
|
|
enabled = false
|
|
writeable = true
|
|
endpoint = "http://localhost:9673"
|
|
}
|
|
team {
|
|
collection{
|
|
team = team
|
|
member = team_member
|
|
request = team_request
|
|
}
|
|
paginator.max_per_page = 15
|
|
paginator.max_user_per_page = 24
|
|
}
|
|
teamSearch {
|
|
index = team
|
|
paginator.max_per_page = ${team.paginator.max_per_page}
|
|
actor.name = team-search
|
|
}
|
|
relation {
|
|
collection {
|
|
relation = relation
|
|
}
|
|
actor {
|
|
name = relation
|
|
notify_freq = 2 seconds
|
|
}
|
|
limit {
|
|
follow = 300
|
|
block = 500
|
|
}
|
|
}
|
|
pref {
|
|
collection.pref = pref
|
|
cache.ttl = 10 minutes
|
|
}
|
|
bookmark {
|
|
collection.bookmark = bookmark
|
|
paginator.max_per_page = ${game.paginator.max_per_page}
|
|
actor.name = bookmark
|
|
}
|
|
analyse {
|
|
socket {
|
|
name = analyse-socket
|
|
uid.ttl = ${site.socket.uid.ttl}
|
|
}
|
|
collection.analysis = analysis2
|
|
collection.requester = analysis_requester
|
|
net.domain = ${net.domain}
|
|
}
|
|
geoip {
|
|
file = ""
|
|
cache_ttl = 20 minutes
|
|
}
|
|
security {
|
|
collection.security = security
|
|
flood.duration = 60 seconds
|
|
firewall {
|
|
enabled=true
|
|
cached.ips.ttl = 10 minutes
|
|
cookie {
|
|
enabled = false
|
|
name=fEKHA4zI74ZrZrom
|
|
}
|
|
collection.firewall = firewall
|
|
}
|
|
geoip = ${geoip}
|
|
password_reset {
|
|
mailgun = ${mailgun}
|
|
secret = "???"
|
|
}
|
|
email_confirm {
|
|
enabled = false
|
|
mailgun = ${mailgun}
|
|
secret = "???"
|
|
}
|
|
login_token {
|
|
secret = "???"
|
|
}
|
|
tor {
|
|
provider_url = "https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip="${net.ip}"&port=80"
|
|
refresh_delay = 1 hour
|
|
}
|
|
disposable_email {
|
|
provider_url = "https://raw.githubusercontent.com/ornicar/disposable-email-domains/master/list"
|
|
refresh_delay = 10 minutes
|
|
}
|
|
recaptcha = ${recaptcha}
|
|
whois {
|
|
key = "matewithknightandbishop"
|
|
}
|
|
net.domain = ${net.domain}
|
|
csrf.enabled = true
|
|
}
|
|
recaptcha {
|
|
endpoint = "https://www.google.com/recaptcha/api/siteverify"
|
|
public_key = "6LeMhwsTAAAAAElD4KwTo_IUmqIXqx7hkSLLaNSP"
|
|
private_key = ""
|
|
enabled = false
|
|
}
|
|
shutup {
|
|
collection.shutup = shutup
|
|
actor.name = shutup
|
|
}
|
|
playban {
|
|
collection.playban = playban
|
|
}
|
|
perfStat {
|
|
collection.perf_stat = "perf_stat"
|
|
}
|
|
push {
|
|
collection.device = push_device
|
|
google {
|
|
url = "https://android.googleapis.com/gcm/send"
|
|
key = ""
|
|
}
|
|
onesignal {
|
|
url = "https://onesignal.com/api/v1/notifications"
|
|
app_id = ""
|
|
key = ""
|
|
}
|
|
}
|
|
mod {
|
|
collection {
|
|
modlog = modlog
|
|
player_assessment = player_assessment
|
|
boosting = boosting
|
|
gaming_history = mod_gaming_history
|
|
}
|
|
boosting.nb_games_to_mark = 5
|
|
boosting.ratio_games_to_mark = 0.01
|
|
actor.name = mod
|
|
api.key = ""
|
|
}
|
|
report {
|
|
collection.report = report
|
|
actor.name = report
|
|
}
|
|
i18n {
|
|
web_path.relative = ${app.web_path}/trans
|
|
net.domain = ${net.domain}
|
|
}
|
|
detectlanguage.api {
|
|
url = "http://ws.detectlanguage.com/0.2/detect"
|
|
key = "???"
|
|
}
|
|
mailgun {
|
|
api {
|
|
url = "???"
|
|
key = "???"
|
|
}
|
|
sender = "lichess.org <noreply@lichess.org>"
|
|
reply_to = "lichess.org <contact@lichess.org>"
|
|
base_url = ${net.base_url}
|
|
}
|
|
lobby {
|
|
socket {
|
|
name = lobby-socket
|
|
uid.ttl = ${site.socket.uid.ttl}
|
|
}
|
|
actor.name = lobby-actor
|
|
net.domain = ${net.domain}
|
|
broom_period = 2 seconds
|
|
resync_ids_period = 25 seconds
|
|
collection.seek = seek
|
|
collection.seek_archive = seek_archive
|
|
seek {
|
|
max_per_page = 13
|
|
max_per_user = 5
|
|
}
|
|
max_playing = ${setup.max_playing}
|
|
}
|
|
timeline {
|
|
collection {
|
|
unsub = timeline_unsub
|
|
entry = timeline_entry
|
|
}
|
|
user {
|
|
display_max = 12
|
|
actor.name = user-timeline
|
|
}
|
|
}
|
|
game {
|
|
paginator.max_per_page = 12
|
|
collection {
|
|
game = game5
|
|
crosstable = crosstable2
|
|
}
|
|
captcher {
|
|
name = captcher
|
|
duration = 7 seconds
|
|
}
|
|
net.base_url = ${net.base_url}
|
|
uci_memo.ttl = 3 minutes
|
|
png {
|
|
url = "http://boardimage.lichess.org:8080/board.png"
|
|
size = 1024
|
|
}
|
|
}
|
|
tv {
|
|
channel.select.name = tv-select-channel
|
|
featured {
|
|
select = 3 seconds
|
|
}
|
|
streaming {
|
|
search = 20 seconds
|
|
google.api_key = ""
|
|
keyword = "lichess.org"
|
|
twitch.client_id = ""
|
|
}
|
|
}
|
|
explorer {
|
|
endpoint = "https://expl.lichess.org"
|
|
internal_endpoint = "http://expl.lichess.org"
|
|
index_flow = false
|
|
tablebase = {
|
|
endpoint = "https://tablebase.lichess.org"
|
|
}
|
|
}
|
|
gameSearch {
|
|
index = game
|
|
paginator.max_per_page = 12
|
|
actor.name = game-search
|
|
}
|
|
round {
|
|
active.ttl = 30 seconds
|
|
uid.timeout = 10 seconds
|
|
animation.duration = ${chessground.animation.duration}
|
|
moretime = 15 seconds
|
|
casual_only = ${app.casual_only}
|
|
player {
|
|
disconnect.timeout = 90 seconds
|
|
ragequit.timeout = 10 seconds
|
|
}
|
|
socket {
|
|
name = round-socket
|
|
timeout = 30 seconds
|
|
}
|
|
actor.map.name = round-map
|
|
channel.move_time.name = round-move-time-channel
|
|
collection {
|
|
note = game_note
|
|
history = round_history
|
|
forecast = forecast
|
|
alarm = round_alarm
|
|
}
|
|
net.domain = ${net.domain}
|
|
}
|
|
tournament {
|
|
channel.standing.name = tournament-standing-channel
|
|
collection {
|
|
tournament = tournament2
|
|
player = tournament_player
|
|
pairing = tournament_pairing
|
|
leaderboard = tournament_leaderboard
|
|
}
|
|
history.message.ttl = 30 seconds
|
|
uid.timeout = 7 seconds # small to avoid missed events
|
|
socket {
|
|
name = tournament-socket
|
|
timeout = 2 minutes
|
|
}
|
|
api_actor.name = tournament-api
|
|
sequencer {
|
|
timeout = 10 minutes
|
|
}
|
|
pairing.delay = 3.1 seconds
|
|
created.cache.ttl = 2 seconds
|
|
leaderboard.cache.ttl = 1 hour
|
|
ranking.cache.ttl = 1 hour
|
|
net.domain = ${net.domain}
|
|
}
|
|
simul {
|
|
collection {
|
|
simul = simul
|
|
}
|
|
sequencer {
|
|
timeout = 10 minutes
|
|
}
|
|
socket {
|
|
name = simul-socket
|
|
timeout = 5 minutes
|
|
}
|
|
created.cache.ttl = 2 seconds
|
|
history.message.ttl = 30 seconds
|
|
uid.timeout = 7 seconds # small to avoid missed events
|
|
actor.name = simul
|
|
}
|
|
forum {
|
|
topic.max_per_page = 10
|
|
post.max_per_page = 10
|
|
recent {
|
|
ttl = 1 hour
|
|
nb = 20
|
|
}
|
|
collection {
|
|
categ = f_categ
|
|
topic = f_topic
|
|
post = f_post
|
|
}
|
|
public_categ_ids = [
|
|
general-chess-discussion
|
|
game-analysis
|
|
lichess-feedback
|
|
off-topic-discussion
|
|
]
|
|
actor.name = forum
|
|
}
|
|
forumSearch {
|
|
index = forum
|
|
paginator.max_per_page = 10
|
|
actor.name = forum-search
|
|
}
|
|
message {
|
|
thread.max_per_page = 30
|
|
collection.thread = m_thread
|
|
}
|
|
coach {
|
|
collection.coach = coach
|
|
collection.review = coach_review
|
|
collection.image = ${mongodb.image.collection}
|
|
}
|
|
memo {
|
|
collection {
|
|
cache = cache
|
|
config = flag
|
|
}
|
|
}
|
|
practice {
|
|
collection {
|
|
progress = practice_progress
|
|
}
|
|
}
|
|
setup {
|
|
casual_only = ${app.casual_only}
|
|
collection {
|
|
user_config = config
|
|
anon_config = config_anon
|
|
}
|
|
max_playing = 200
|
|
}
|
|
challenge {
|
|
collection.challenge = challenge
|
|
max_per_user = 20
|
|
socket {
|
|
name = challenge-socket
|
|
timeout = 1 minute
|
|
}
|
|
history.message.ttl = 40 seconds
|
|
uid.timeout = 7 seconds
|
|
max_playing = ${setup.max_playing}
|
|
}
|
|
evalCache {
|
|
collection.eval_cache = eval_cache
|
|
}
|
|
irwin {
|
|
collection.report = irwin_report
|
|
collection.request = irwin_request
|
|
}
|
|
study {
|
|
collection.study = study
|
|
collection.chapter = study_chapter
|
|
socket {
|
|
name = study-socket
|
|
timeout = 1 minute
|
|
}
|
|
sequencer {
|
|
timeout = 10 minutes
|
|
}
|
|
history.message.ttl = 40 seconds
|
|
uid.timeout = 10 seconds
|
|
net.domain = ${net.domain}
|
|
net.base_url = ${net.base_url}
|
|
paginator.max_per_page = 14
|
|
}
|
|
studySearch {
|
|
index = study
|
|
paginator.max_per_page = ${study.paginator.max_per_page}
|
|
}
|
|
site {
|
|
socket {
|
|
name = site-socket
|
|
uid.ttl = 10 seconds
|
|
}
|
|
}
|
|
user {
|
|
paginator.max_per_page = 40
|
|
cached.nb.ttl = 10 minutes
|
|
online.ttl = 7 seconds
|
|
collection {
|
|
user = user4
|
|
note = note
|
|
trophy = trophy
|
|
ranking = ranking
|
|
}
|
|
}
|
|
history {
|
|
collection.history = history3
|
|
cached.rating_chart.ttl = 1 hour
|
|
}
|
|
fishnet {
|
|
collection {
|
|
analysis = fishnet_analysis
|
|
client = fishnet_client
|
|
}
|
|
offline_mode = true # any client can provide moves and analysis
|
|
actor.name = fishnet
|
|
analysis.nodes = 4000000
|
|
move.plies = 300
|
|
client_min_version = "1.13.0"
|
|
}
|
|
application {
|
|
global="lila.app.Global"
|
|
}
|
|
importer {
|
|
delay = 50 milliseconds
|
|
}
|
|
insight {
|
|
mongodb {
|
|
uri = "mongodb://127.0.0.1:27017/lichess-insight"
|
|
mongo-async-driver = {}
|
|
}
|
|
collection {
|
|
entry = insight
|
|
user_cache = insight_user_cache
|
|
}
|
|
}
|
|
notify {
|
|
collection.notify = notify
|
|
actor.name = notify
|
|
}
|
|
learn {
|
|
collection.progress = learn_progress
|
|
}
|
|
simulation {
|
|
enabled = false
|
|
players = 300
|
|
watchers = 200
|
|
}
|
|
slack {
|
|
incoming {
|
|
url = ""
|
|
default_channel = tavern
|
|
}
|
|
domain = ${net.domain}
|
|
}
|
|
plan {
|
|
stripe {
|
|
endpoint="https://api.stripe.com/v1"
|
|
keys {
|
|
public="pk_test_31E5TIuGtMs4ojhzMIMu8oIc"
|
|
secret="sk_test_erAQMvv5cF90WXUFlkv7Tke0"
|
|
}
|
|
}
|
|
paypal {
|
|
ipn_key=""
|
|
}
|
|
collection {
|
|
patron = plan_patron
|
|
charge = plan_charge
|
|
}
|
|
monthly_goal = 4296
|
|
}
|
|
hub {
|
|
actor {
|
|
game {
|
|
search = ${gameSearch.actor.name}
|
|
}
|
|
renderer = ${app.renderer.name}
|
|
captcher = ${game.captcher.name}
|
|
forum {
|
|
actor = ${forum.actor.name}
|
|
search = ${forumSearch.actor.name}
|
|
}
|
|
team.search = ${teamSearch.actor.name}
|
|
fishnet = ${fishnet.actor.name}
|
|
tournament.api = ${tournament.api_actor.name}
|
|
timeline {
|
|
user = ${timeline.user.actor.name}
|
|
}
|
|
bookmark = ${bookmark.actor.name}
|
|
round {
|
|
map = ${round.actor.map.name}
|
|
}
|
|
lobby = ${lobby.actor.name}
|
|
relation = ${relation.actor.name}
|
|
report = ${report.actor.name}
|
|
shutup = ${shutup.actor.name}
|
|
mod = ${mod.actor.name}
|
|
chat = ${chat.actor.name}
|
|
move_broadcast = ${socket.move_broadcast.name}
|
|
user_register = ${socket.user_register.name}
|
|
simul = ${simul.actor.name}
|
|
notify = ${notify.actor.name}
|
|
}
|
|
socket {
|
|
lobby = ${lobby.socket.name}
|
|
site = ${site.socket.name}
|
|
round = ${round.socket.name}
|
|
tournament = ${tournament.socket.name}
|
|
simul = ${simul.socket.name}
|
|
challenge = ${challenge.socket.name}
|
|
hub = ${socket.hub.name}
|
|
}
|
|
channel {
|
|
round.move_time = ${round.channel.move_time.name}
|
|
tv.select = ${tv.channel.select.name}
|
|
tournament.standing = ${tournament.channel.standing.name}
|
|
}
|
|
}
|
|
|
|
socket {
|
|
hub.name = socket.hub
|
|
move_broadcast.name = socket.move-broadcast
|
|
user_register.name = socket.user-register
|
|
population.name = socket.population
|
|
}
|
|
|
|
dbplugin = disabled
|
|
ehcacheplugin = disabled
|
|
|
|
akka {
|
|
loggers = ["akka.event.slf4j.Slf4jLogger"]
|
|
loglevel = INFO
|
|
stdout-loglevel = INFO
|
|
log-config-on-start = off
|
|
log-dead-letters-during-shutdown = off
|
|
}
|
|
|
|
kamon {
|
|
metric {
|
|
tick-interval = 2 second
|
|
track-unmatched-entities = yes
|
|
filters {
|
|
trace {
|
|
includes = [ "**" ]
|
|
excludes = [ ]
|
|
}
|
|
}
|
|
}
|
|
|
|
influxdb {
|
|
hostname = "127.0.0.1"
|
|
port = 8086
|
|
|
|
# The maximum packet size for one POST request, set to 0 to disable batching
|
|
max-packet-size = 16384
|
|
|
|
# The protocol, either http or udp
|
|
protocol = "udp"
|
|
|
|
# The measurements will be named ${application-name}-timers and -counters
|
|
application-name = "dev"
|
|
|
|
# Allow users to override the name of the hostname reported by kamon. When changed, the hostname tag will be
|
|
# the value given here.
|
|
hostname-override = none
|
|
|
|
# For histograms, which percentiles to count
|
|
percentiles = []
|
|
|
|
# Subscription patterns used to select which metrics will be pushed to InfluxDB. Note that first, metrics
|
|
# collection for your desired entities must be activated under the kamon.metrics.filters settings.
|
|
subscriptions {
|
|
histogram = [ "**" ]
|
|
min-max-counter = [ "**" ]
|
|
gauge = [ "**" ]
|
|
counter = [ "**" ]
|
|
trace = [ "**" ]
|
|
trace-segment = [ "**" ]
|
|
akka-actor = [ "**" ]
|
|
akka-dispatcher = [ "**" ]
|
|
akka-router = [ "**" ]
|
|
system-metric = [ "**" ]
|
|
http-server = [ "**" ]
|
|
}
|
|
}
|
|
|
|
modules {
|
|
kamon-influxdb {
|
|
auto-start = no
|
|
}
|
|
}
|
|
}
|