Implement a shared config between servers (#795)

* Implement a shared config between servers

* Auto move config file on CMake run
This commit is contained in:
Jett 2022-10-30 00:17:35 +01:00 committed by GitHub
parent d8e73def9d
commit a745cdb727
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 41 additions and 90 deletions

View File

@ -90,7 +90,7 @@ make_directory(${CMAKE_BINARY_DIR}/locale)
make_directory(${CMAKE_BINARY_DIR}/logs) make_directory(${CMAKE_BINARY_DIR}/logs)
# Copy resource files on first build # Copy resource files on first build
set(RESOURCE_FILES "authconfig.ini" "chatconfig.ini" "worldconfig.ini" "masterconfig.ini" "blacklist.dcf") set(RESOURCE_FILES "sharedconfig.ini" "authconfig.ini" "chatconfig.ini" "worldconfig.ini" "masterconfig.ini" "blacklist.dcf")
foreach(resource_file ${RESOURCE_FILES}) foreach(resource_file ${RESOURCE_FILES})
if (NOT EXISTS ${PROJECT_BINARY_DIR}/${resource_file}) if (NOT EXISTS ${PROJECT_BINARY_DIR}/${resource_file})
configure_file( configure_file(

View File

@ -209,7 +209,7 @@ Initial setup can vary drastically based on which operating system or distributi
#### Configuration #### Configuration
After the server has been built there should be four `ini` files in the build director: `authconfig.ini`, `chatconfig.ini`, `masterconfig.ini`, and `worldconfig.ini`. Go through them and fill in the database credentials and configure other settings if necessary. After the server has been built there should be four `ini` files in the build director: `sharedconfig.ini`, `authconfig.ini`, `chatconfig.ini`, `masterconfig.ini`, and `worldconfig.ini`. Go through them and fill in the database credentials and configure other settings if necessary.
#### Migrations #### Migrations

View File

@ -12,6 +12,15 @@ dConfig::dConfig(const std::string& filepath) {
if (line[0] != '#') ProcessLine(line); if (line[0] != '#') ProcessLine(line);
} }
} }
std::ifstream sharedConfig("sharedconfig.ini", std::ios::in);
if (!sharedConfig.good()) return;
while (std::getline(sharedConfig, line)) {
if (line.length() > 0) {
if (line[0] != '#') ProcessLine(line);
}
}
} }
dConfig::~dConfig(void) { dConfig::~dConfig(void) {
@ -40,6 +49,12 @@ void dConfig::ProcessLine(const std::string& line) {
if (!seglist[1].empty() && seglist[1][seglist[1].size() - 1] == '\r') if (!seglist[1].empty() && seglist[1][seglist[1].size() - 1] == '\r')
seglist[1].erase(seglist[1].size() - 1); seglist[1].erase(seglist[1].size() - 1);
for (const auto& key : m_Keys) {
if (seglist[0] == key) {
return; // first loaded key is preferred due to loading shared config secondarily
}
}
m_Keys.push_back(seglist[0]); m_Keys.push_back(seglist[0]);
m_Values.push_back(seglist[1]); m_Values.push_back(seglist[1]);
} }

View File

@ -1,27 +1,6 @@
# MySQL connection info:
mysql_host=
mysql_database=
mysql_username=
mysql_password=
# The public facing IP address. Can be 'localhost' for locally hosted servers
external_ip=localhost
# Port number. The client has the authserver port hardcoded to 1001 # Port number. The client has the authserver port hardcoded to 1001
port=1001 port=1001
# Where to put crashlogs
dump_folder=
# How many clients can be connected to the server at once
max_clients=999
# 0 or 1, should log to console
log_to_console=1
# 0 or 1, should log debug (developer only) statements to console for debugging, not needed for normal operation
log_debug_statements=0
# 0 or 1, should ignore playkeys # 0 or 1, should ignore playkeys
# If 1 everyone with an account will be able to login, regardless of if they have a key or not # If 1 everyone with an account will be able to login, regardless of if they have a key or not
dont_use_keys=0 dont_use_keys=0

View File

@ -1,26 +1,2 @@
# MySQL connection info:
mysql_host=
mysql_database=
mysql_username=
mysql_password=
# The public facing IP address. Can be 'localhost' for locally hosted servers
external_ip=localhost
# Port number # Port number
port=2005 port=2005
# Where to put crashlogs
dump_folder=
# How many clients can be connected to the server at once
max_clients=999
# 0 or 1, should log to console
log_to_console=1
# 0 or 1, should log debug (developer only) statements to console for debugging, not needed for normal operation
log_debug_statements=0
# 0 or 1, should not compile chat hash map to file
dont_generate_dcf=0

View File

@ -1,12 +1,3 @@
# MySQL connection info:
mysql_host=
mysql_database=
mysql_username=
mysql_password=
# The public facing IP address. Can be 'localhost' for locally hosted servers
external_ip=localhost
# The internal ip of the master server # The internal ip of the master server
master_ip=localhost master_ip=localhost
@ -26,17 +17,5 @@ use_sudo_chat=0
# Use sudo when launching world servers # Use sudo when launching world servers
use_sudo_world=0 use_sudo_world=0
# Where to put crashlogs
dump_folder=
# How many clients can be connected to the server at once
max_clients=999
# 0 or 1, should log to console
log_to_console=1
# 0 or 1, should log debug (developer only) statements to console for debugging, not needed for normal operation
log_debug_statements=0
# 0 or 1, should autostart auth, chat, and char servers # 0 or 1, should autostart auth, chat, and char servers
prestart_servers=1 prestart_servers=1

View File

@ -0,0 +1,23 @@
# MySQL connection info:
mysql_host=
mysql_database=
mysql_username=
mysql_password=
# 0 or 1, should log to console
log_to_console=1
# 0 or 1, should log debug (developer only) statements to console for debugging, not needed for normal operation
log_debug_statements=0
# The public facing IP address. Can be 'localhost' for locally hosted servers
external_ip=localhost
# 0 or 1, should not compile chat hash map to file
dont_generate_dcf=0
# How many clients can be connected to the server at once
max_clients=999
# Where to put crashlogs
dump_folder=

View File

@ -1,9 +1,3 @@
# MySQL connection info:
mysql_host=
mysql_database=
mysql_username=
mysql_password=
# URL to the code repository for the hosted server # URL to the code repository for the hosted server
# If you fork this repository and/or make changes to the code, reflect that here to comply with AGPLv3 # If you fork this repository and/or make changes to the code, reflect that here to comply with AGPLv3
source=https://github.com/DarkflameUniverse/DarkflameServer source=https://github.com/DarkflameUniverse/DarkflameServer
@ -11,21 +5,6 @@ source=https://github.com/DarkflameUniverse/DarkflameServer
# Port to the chat server, same as in chatconfig.ini # Port to the chat server, same as in chatconfig.ini
chat_server_port=2005 chat_server_port=2005
# Where to put crashlogs
dump_folder=
# How many clients can be connected to the server at once
max_clients=999
# 0 or 1, should log to console
log_to_console=1
# 0 or 1, should log debug (developer only) statements to console for debugging, not needed for normal operation
log_debug_statements=0
# 0 or 1, should not compile chat hash map to file
dont_generate_dcf=0
# 0 or 1, should disable chat # 0 or 1, should disable chat
disable_chat=0 disable_chat=0