294 lines
7.1 KiB
TOML
294 lines
7.1 KiB
TOML
[general]
|
|
# if this path is encountered during path traversal,
|
|
# it will be removed. this is useful for instances
|
|
# where your absolute domain path is not long enough
|
|
# to replace boomlings.com, because you can then point
|
|
# it at a different, longer path to fill the gap
|
|
#
|
|
# example:
|
|
# boomlings.com/database/
|
|
# example.com/aaaaaaaaaa/
|
|
# ^^^^^^^^^^^
|
|
#
|
|
# leaving blank will disable this
|
|
append_path = ""
|
|
# where can your server be accessible?
|
|
# for dev environments, "localhost:8080" will do
|
|
# otherwise, try something like "gdpstest.oat.zone"
|
|
hostname = "localhost:8080"
|
|
# if you're putting the server behind nginx or cloudflare,
|
|
# keep this on to keep ips accurate
|
|
trust_proxy = true
|
|
# 🤫
|
|
easter_eggs = false
|
|
|
|
[formatting]
|
|
# whether to format dates as relative or absolute
|
|
# "relative" = relative, "absolute" = absolute
|
|
# do note that absolute times can result in uglier
|
|
# times due to colons being forbiddne in certain
|
|
# spots
|
|
date = "relative"
|
|
|
|
[comments]
|
|
# comments with a like count <= this number
|
|
# will be marked as spam
|
|
spam_thres = -3
|
|
|
|
[accounts]
|
|
# allow new accounts to be created
|
|
allow_registration = true
|
|
|
|
# determine what permissions different ranks of users get
|
|
# ranks (based on `position`) will get all perms of
|
|
# ranks below (<) their own
|
|
# todo: document this fully
|
|
[ranks.everyone]
|
|
position = 0
|
|
[ranks.everyone.permissions]
|
|
upload_levels = true # todo: unimplemented
|
|
backup_save = true # todo: unimplemented
|
|
level_comment = true # todo: unimplemented
|
|
profile_comment = true # todo: unimplemented
|
|
leaderboard = true # todo: unimplemented
|
|
level_leaderboard = true # todo: unimplemented
|
|
send_friend_requests = true # todo: unimplemented
|
|
send_messages = true # todo: unimplemented
|
|
|
|
reupload_songs = true # todo: unimplemented
|
|
reupload_levels = true # todo: unimplemented
|
|
|
|
[ranks.mod]
|
|
position = 1
|
|
badge = 1
|
|
is_mod = true # can request mod access ingame
|
|
text_color = [200, 255, 200]
|
|
[ranks.mod.permissions]
|
|
rate_levels = true
|
|
rate_levels_demon = true # todo: unimplemented
|
|
|
|
[ranks.eldermod]
|
|
position = 2
|
|
badge = 2
|
|
is_mod = true
|
|
text_color = [75, 255, 75]
|
|
[ranks.eldermod.permissions]
|
|
delete_level_comments = true # todo: unimplemented
|
|
delete_others_levels = true # todo: unimplemented
|
|
|
|
[sessions]
|
|
# allow sessions to be created (for 1.9, as it
|
|
# doesn't send the password for authentication
|
|
# in any shape or form, making relying on ip
|
|
# addresses the only secure way of accessing
|
|
# the server)
|
|
allow = true
|
|
|
|
# how long the session should last for (in seconds)
|
|
expiry_time = 604800
|
|
|
|
[reuploads]
|
|
# allow reuploading levels from other servers
|
|
allowed = true
|
|
|
|
[chests]
|
|
enabled = true
|
|
|
|
# these are the vanilla values, but free for you to tweak
|
|
[chests.small]
|
|
# in seconds
|
|
timer = 14400 # 4hr
|
|
orbs_min = 20
|
|
orbs_max = 50
|
|
orbs_increment = 5
|
|
diamonds_min = 1
|
|
diamonds_max = 4
|
|
shards_min = 0
|
|
shards_max = 1
|
|
keys_min = 0
|
|
keys_max = 1
|
|
|
|
[chests.large]
|
|
# in seconds
|
|
timer = 86400 # 24hr
|
|
orbs_min = 100
|
|
orbs_max = 300
|
|
orbs_increment = 25
|
|
diamonds_min = 4
|
|
diamonds_max = 10
|
|
shards_min = 1
|
|
shards_max = 2
|
|
keys_min = 0
|
|
keys_max = 1
|
|
|
|
[quests]
|
|
enabled = true
|
|
# in seconds
|
|
timer = 21600 # 6hr
|
|
|
|
# top slot quests
|
|
[[quests.tier_1]]
|
|
name = "Orb Finder"
|
|
required_type = "orb"
|
|
required_amt = 200
|
|
reward_diamonds = 5
|
|
|
|
[[quests.tier_1]]
|
|
name = "Star Finder"
|
|
required_type = "star"
|
|
required_amt = 5
|
|
reward_diamonds = 5
|
|
|
|
[[quests.tier_1]]
|
|
name = "Coin Finder"
|
|
required_type = "coin"
|
|
required_amt = 2
|
|
reward_diamonds = 5
|
|
|
|
# middle slot quests
|
|
[[quests.tier_2]]
|
|
name = "Orb Collector"
|
|
required_type = "orb"
|
|
required_amt = 500
|
|
reward_diamonds = 10
|
|
|
|
[[quests.tier_2]]
|
|
name = "Star Collector"
|
|
required_type = "star"
|
|
required_amt = 10
|
|
reward_diamonds = 10
|
|
|
|
[[quests.tier_2]]
|
|
name = "Coin Collector"
|
|
required_type = "coin"
|
|
required_amt = 4
|
|
reward_diamonds = 10
|
|
|
|
# bottom slot quests
|
|
[[quests.tier_3]]
|
|
name = "Orb Master"
|
|
required_type = "orb"
|
|
required_amt = 1000
|
|
reward_diamonds = 15
|
|
|
|
[[quests.tier_3]]
|
|
name = "Star Master"
|
|
required_type = "star"
|
|
required_amt = 15
|
|
reward_diamonds = 15
|
|
|
|
[[quests.tier_3]]
|
|
name = "Coin Master"
|
|
required_type = "coin"
|
|
required_amt = 6
|
|
reward_diamonds = 15
|
|
|
|
|
|
[voting]
|
|
# allow votes to influence a level's difficulty when it
|
|
# hasn't been set yet. when set to false, all unrated
|
|
# levels will be NA
|
|
allow_votes = true
|
|
# same as above, but for demon difficulties
|
|
# this will let people vote and influence a demon'S
|
|
# difficulty past its original demon rating
|
|
allow_demon_votes = true
|
|
# the minimum amount of votes before a level's difficulty
|
|
# will go from NA to the average
|
|
min_votes = 10
|
|
# same as above, but for demon ratings
|
|
min_demon_votes = 10
|
|
|
|
[levels]
|
|
# prevent users from deleting their own levels
|
|
# if they are rated
|
|
prevent_deletion_rated = true
|
|
# prevent users from deleting their own levels
|
|
# if they are featured
|
|
prevent_deletion_featured = true
|
|
# prevents levels above a certain object count from
|
|
# being uploaded
|
|
# works best with levels.parsing.enabled = true
|
|
# set to 0 to disable
|
|
max_objects = 80_000
|
|
|
|
[levels.creator_points]
|
|
# how many creator points to award per type of event
|
|
rated = 1
|
|
featured = 1
|
|
epic = 1
|
|
daily = 0
|
|
weekly = 0
|
|
mappack = 0
|
|
gauntlet = 0
|
|
|
|
[levels.parsing]
|
|
# parse the level to extract data and enforce
|
|
# rulesets. makes uploads a tiny bit slower and
|
|
# less stable
|
|
enabled = true
|
|
|
|
# a list of ids to prevent levels from including
|
|
# see ID 58079690 on vanilla GD servers
|
|
object_blocklist = [ 31 ] # 31 : start pos
|
|
#object_blocklist = [ 901, 1006, 1007, 1049, 1268, 1346, 1347, 1520, 1585, 1595, 1611, 1612, 1613, 1616, 1811, 1812, 1814, 1815, 1817, 1818, 1819 ] # every 2.0+ trigger, essentially turns your server into a 1.9 gdps
|
|
|
|
# a list of ids to exclusively allow; leave empty
|
|
# to disable
|
|
object_allowlist = [ ]
|
|
|
|
[songs]
|
|
# allow custom songs in general to be used,
|
|
# whether it be non-newgrounds or newgrounds ones
|
|
allow_custom_songs = true
|
|
# pushes all non-newgrounds songs above an arbitrary
|
|
# id to prevent collisions with newgrounds ids, meaning
|
|
# all song ids that work in vanilla GD will work
|
|
# on the server
|
|
preserve_newgrounds_ids = true
|
|
|
|
[songs.sources]
|
|
# allow ALL sources that yt-dlp supports for music
|
|
# this is a BAD idea for many reasons
|
|
allow_all_sources = false
|
|
|
|
# lets you support much more sites but may result in much
|
|
# slower download speeds and more bandwidth. requires ffmpeg
|
|
allow_transcoding = true
|
|
|
|
# location of your yt-dlp binary. get one here: https://github.com/yt-dlp/yt-dlp/releases/tag/2022.11.11
|
|
# defaults to checking through path
|
|
ytdlp_binary = "/usr/bin/yt-dlp"
|
|
|
|
# location of your ffmpeg binary. get one here: https://ffmpeg.org/download.html
|
|
# allows for transcoding
|
|
# defaults to checking through path
|
|
ffmpeg_binary = "/usr/bin/ffmpeg"
|
|
|
|
# leads to more stable downloads at the cost of
|
|
# using up much more storage to store every song
|
|
#
|
|
# required for allow_transcoding
|
|
proxy_downloads = true
|
|
|
|
# expressed in seconds
|
|
max_duration = 600
|
|
|
|
# expressed in bytes
|
|
max_filesize = 10000000 # = 10MB
|
|
|
|
# see: https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md
|
|
# not every source is supported, and most video sites will fail w/o transcoding enabled
|
|
[songs.sources.newgrounds]
|
|
allow = true
|
|
|
|
[songs.sources.youtube]
|
|
allow = true
|
|
|
|
[songs.sources.soundcloud]
|
|
allow = true
|
|
|
|
[songs.sources.generic]
|
|
# direct URLs and similar
|
|
allow = true
|