Merge pull request #105 from vishal332008/public-server

Small changes.
This commit is contained in:
Ayush Saini 2025-02-08 19:46:21 +05:30 committed by GitHub
commit 2a07c0c840
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 175 additions and 142 deletions

View file

@ -551,7 +551,7 @@ class ServerManagerApp:
print(f'{Clr.RED}Error loading config file:\n{exc}.{Clr.RST}',
flush=True)
with open(self._ba_root_path + "/mods/defaults/config.yaml", "r") as infile:
with open(self._ba_root_path + "/mods/defaults/config.toml", "r") as infile:
default_file = infile.read()
with open(self._config_path, "w") as outfile:
outfile.write(default_file)

168
dist/ba_root/mods/defaults/config.toml vendored Normal file
View file

@ -0,0 +1,168 @@
# To configure your server, create a config.toml file in the same directory
# as the ballisticakit_server script. The config_template.toml file can be
# copied or renamed as a convenient starting point.
# Uncomment any of these values to override defaults.
# Name of our server in the public parties list.
party_name = "BombSquad Community Server"
# If true, your party will show up in the global public party list
# Otherwise it will still be joinable via LAN or connecting by IP
# address.
#party_is_public = true
# If true, all connecting clients will be authenticated through the
# master server to screen for fake account info. Generally this
# should always be enabled unless you are hosting on a LAN with no
# internet connection.
#authenticate_clients = true
# IDs of server admins. Server admins are not kickable through the default
# kick vote system and they are able to kick players without a vote. To get
# your account id, enter 'getaccountid' in settings->advanced->enter-code.
admins = ["pb-yOuRAccOuNtIdHErE", "pb-aNdMayBeAnotherHeRE"]
# Whether the default kick-voting system is enabled.
#enable_default_kick_voting = true
# To be included in the public server list, your server MUST be
# accessible via an ipv4 address. By default, the master server will
# try to use the address your server contacts it from, but this may
# be an ipv6 address these days so you may need to provide an ipv4
# address explicitly.
#public_ipv4_address = "123.123.123.123"
# You can optionally provide an ipv6 address for your server for the
# public server list. Unlike ipv4, a server is not required to have
# an ipv6 address to appear in the list, but is still good to
# provide when available since more and more devices are using ipv6
# these days. Your server's ipv6 address will be autodetected if
# your server uses ipv6 when communicating with the master server. You
# can pass an empty string here to explicitly disable the ipv6
# address.
#public_ipv6_address = "123A::A123:23A1:A312:12A3:A213:2A13"
# UDP port to host on. Change this to work around firewalls or run
# multiple servers on one machine.
#
# 43210 is the default and the only port that will show up in the
# LAN browser tab.
#port = 43210
# Max devices in the party. Note that this does *NOT* mean max
# players. Any device in the party can have more than one player on
# it if they have multiple controllers. Also, this number currently
# includes the server so generally make it 1 bigger than you need.
#max_party_size = 6
# Max players that can join a session. If present this will override
# the session's preferred max_players. if a value below 0 is given
# player limit will be removed.
#session_max_players_override = 8
# Options here are 'ffa' (free-for-all), 'teams' and 'coop'
# (cooperative) This value is ignored if you supply a playlist_code
# (see below).
#session_type = "ffa"
# Playlist-code for teams or free-for-all mode sessions.
# To host your own custom playlists, use the 'share' functionality in the
# playlist editor in the regular version of the game.
# This will give you a numeric code you can enter here to host that
# playlist.
playlist_code = 12345
# Alternately, you can embed playlist data here instead of using
# codes. Make sure to set session_type to the correct type for the
# data here.
#playlist_inline = []
# Whether to shuffle the playlist or play its games in designated
# order.
#playlist_shuffle = true
# If true, keeps team sizes equal by disallowing joining the largest
# team (teams mode only).
#auto_balance_teams = true
# The campaign used when in co-op session mode. Do
# print(ba.app.campaigns) to see available campaign names.
#coop_campaign = "Easy"
# The level name within the campaign used in co-op session mode. For
# campaign name FOO, do print(ba.app.campaigns['FOO'].levels) to see
# available level names.
#coop_level = "Onslaught Training"
# Whether to enable telnet access.
#
# IMPORTANT: This option is no longer available, as it was being
# used for exploits. Live access to the running server is still
# possible through the mgr.cmd() function in the server script. Run
# your server through tools such as 'screen' or 'tmux' and you can
# reconnect to it remotely over a secure ssh connection.
#enable_telnet = false
# Series length in teams mode (7 == 'best-of-7' series; a team must
# get 4 wins)
teams_series_length = 7
# Points to win in free-for-all mode (Points are awarded per game based on
# performance)
ffa_series_length = 24
# If you have a custom stats webpage for your server, you can use
# this to provide a convenient in-game link to it in the
# server-browser alongside the server name.
#
# if ${ACCOUNT} is present in the string, it will be replaced by the
# currently-signed-in account's id. To fetch info about an account,
# your back-end server can use the following url:
# https://legacy.ballistica.net/accountquery?id=ACCOUNT_ID_HERE
stats_url = "https://discord.gg/ucyaesh"
# If present, the server subprocess will attempt to gracefully exit
# after this amount of time. A graceful exit can occur at the end of
# a series or other opportune time. Server-managers set to
# auto-restart (the default) will then spin up a fresh subprocess.
# This mechanism can be useful to clear out any memory leaks or
# other accumulated bad state in the server subprocess.
#clean_exit_minutes = 60
# If present, the server subprocess will shut down immediately after
# this amount of time. This can be useful as a fallback for
# clean_exit_time. The server manager will then spin up a fresh
# server subprocess if auto-restart is enabled (the default).
#unclean_exit_minutes = 90
# If present, the server subprocess will shut down immediately if
# this amount of time passes with no activity from any players. The
# server manager will then spin up a fresh server subprocess if
# auto-restart is enabled (the default).
#idle_exit_minutes = 20
# Should the tutorial be shown at the beginning of games?
#show_tutorial = false
# Team names (teams mode only).
team_names = ["ladoo", "barfi"]
# Team colors (teams mode only).
team_colors = [[0.8, 0.0, 0.6], [0, 1, 0.8]]
# Whether to enable the queue where players can line up before
# entering your server. Disabling this can be used as a workaround
# to deal with queue spamming attacks.
#enable_queue = true
# Protocol version we host with. Currently the default is 33 which
# still allows older 1.4 game clients to connect. Explicitly setting
# to 35 no longer allows those clients but adds/fixes a few things
# such as making camera shake properly work in net games.
#protocol_version = 35
# How many seconds individual players from a given account must wait
# before rejoining the game. This can help suppress exploits
# involving leaving and rejoining or switching teams rapidly.
#player_rejoin_cooldown = 10.0

View file

@ -1,134 +0,0 @@
# To configure your server, create a config.yaml file in the same directory
# as the ballisticacore_server script. The config_template.yaml file can be
# copied or renamed as a convenient starting point.
# Uncomment any of these values to override defaults.
# Name of our server in the public parties list.
party_name: "BombSquad Community Server"
# If true, your party will show up in the global public party list
# Otherwise it will still be joinable via LAN or connecting by IP address.
#party_is_public: true
# If true, all connecting clients will be authenticated through the master
# server to screen for fake account info. Generally this should always
# be enabled unless you are hosting on a LAN with no internet connection.
authenticate_clients: true
# IDs of server admins. Server admins are not kickable through the default
# kick vote system and they are able to kick players without a vote. To get
# your account id, enter 'getaccountid' in settings->advanced->enter-code.
admins:
- pb-yOuRAccOuNtIdHErE
- pb-aNdMayBeAnotherHeRE
# Whether the default kick-voting system is enabled.
enable_default_kick_voting: true
# UDP port to host on. Change this to work around firewalls or run multiple
# servers on one machine.
# 43210 is the default and the only port that will show up in the LAN
# browser tab.
port: 43210
# Max devices in the party. Note that this does *NOT* mean max players.
# Any device in the party can have more than one player on it if they have
# multiple controllers. Also, this number currently includes the server so
# generally make it 1 bigger than you need. Max-players is not currently
# exposed but I'll try to add that soon.
max_party_size: 6
# Options here are 'ffa' (free-for-all), 'teams' and 'coop' (cooperative)
# This value is ignored if you supply a playlist_code (see below).
#session_type: ffa
# Playlist-code for teams or free-for-all mode sessions.
# To host your own custom playlists, use the 'share' functionality in the
# playlist editor in the regular version of the game.
# This will give you a numeric code you can enter here to host that
# playlist.
playlist_code: 12345
# Alternately, you can embed playlist data here instead of using codes.
# Make sure to set session_type to the correct type for the data here.
#playlist_inline: []
# Whether to shuffle the playlist or play its games in designated order.
#playlist_shuffle: true
# If true, keeps team sizes equal by disallowing joining the largest team
# (teams mode only).
#auto_balance_teams: true
# The campaign used when in co-op session mode.
# Do print(ba.app.campaigns) to see available campaign names.
#coop_campaign: Easy
# The level name within the campaign used in co-op session mode.
# For campaign name FOO, do print(ba.app.campaigns['FOO'].levels) to see
# available level names.
#coop_level: Onslaught Training
# Whether to enable telnet access.
# IMPORTANT: This option is no longer available, as it was being used
# for exploits. Live access to the running server is still possible through
# the mgr.cmd() function in the server script. Run your server through
# tools such as 'screen' or 'tmux' and you can reconnect to it remotely
# over a secure ssh connection.
#enable_telnet: false
# Series length in teams mode (7 == 'best-of-7' series; a team must
# get 4 wins)
teams_series_length: 7
# Points to win in free-for-all mode (Points are awarded per game based on
# performance)
ffa_series_length: 24
# If you have a custom stats webpage for your server, you can use this
# to provide a convenient in-game link to it in the server-browser
# alongside the server name.
# if ${ACCOUNT} is present in the string, it will be replaced by the
# currently-signed-in account's id. To fetch info about an account,
# your back-end server can use the following url:
# http://bombsquadgame.com/accountquery?id=ACCOUNT_ID_HERE
stats_url: https://discord.gg/ucyaesh
# If present, the server subprocess will attempt to gracefully exit after
# this amount of time. A graceful exit can occur at the end of a series
# or other opportune time. Server-managers set to auto-restart (the
# default) will then spin up a fresh subprocess. This mechanism can be
# useful to clear out any memory leaks or other accumulated bad state
# in the server subprocess.
#clean_exit_minutes: 60
# If present, the server subprocess will shut down immediately after this
# amount of time. This can be useful as a fallback for clean_exit_time.
# The server manager will then spin up a fresh server subprocess if
# auto-restart is enabled (the default).
#unclean_exit_minutes: 90
# If present, the server subprocess will shut down immediately if this
# amount of time passes with no activity from any players. The server
# manager will then spin up a fresh server subprocess if auto-restart is
# enabled (the default).
#idle_exit_minutes: 20
# Should the tutorial be shown at the beginning of games?
#show_tutorial: false
# Team names (teams mode only).
team_names:
- ladoo
- barfi
# Team colors (teams mode only).
team_colors:
- [0.8, 0.0, 0.6]
- [0, 1, 0.8]
# Whether to enable the queue where players can line up before entering
# your server. Disabling this can be used as a workaround to deal with
# queue spamming attacks.
#enable_queue: true

View file

@ -78,19 +78,19 @@ def get_profiles() -> dict:
newpath = f'{PLAYERS_DATA_PATH}profiles-{str(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))}.json'
shutil.copyfile(PLAYERS_DATA_PATH + "profiles.json", newpath)
profiles = {"pb-sdf": {}}
print("resetting profiles")
print("Resetting Profiles.")
else:
f = open(PLAYERS_DATA_PATH + "profiles.json", "r")
profiles = json.load(f)
f.close()
print("loading old proiles.json")
print("Loading old profiles.json")
CacheData.profiles = profiles
except Exception as e:
f = open(PLAYERS_DATA_PATH + "profiles.json.backup", "r")
profiles = json.load(f)
print(e)
print("exception happened , falling back to profiles.json.backup")
print("Exception occurred, falling back to profiles.json.backup")
CacheData.profiles = profiles
f.close()
return profiles
@ -118,7 +118,7 @@ def get_blacklist() -> dict:
with open(PLAYERS_DATA_PATH + "blacklist.json", "r") as f:
CacheData.blacklist = json.load(f)
except:
print('error opening blacklist json')
print('Error opening blacklist.json')
return {
"ban": {
"ids": {},
@ -461,7 +461,7 @@ def add_player_role(role: str, account_id: str) -> None:
commit_roles(roles)
else:
print("no role such")
print(f'Role named {role} does not exist.')
def remove_player_role(role: str, account_id: str) -> str:

View file

@ -346,7 +346,6 @@ def _update_text(self) -> None:
self._text_node.text = text
# ba_meta export plugin
def enable():
_lobby.Chooser.__init__ = __init__
_lobby.Chooser._set_ready = _set_ready

View file

@ -33,7 +33,7 @@ def port(file_path):
# stay local or if it'll also be needed to transmitted to the clients.
## For local:
if False:
if bool(False):
content = content.replace("_babase.screenmessage", "bui.screenmessage")
content = content.replace("babase.screenmessage", "bui.screenmessage")
content = content.replace("babase.getsound", "bui.getsound")