From 5188955339489edcd672f67a7b7de74995d738ce Mon Sep 17 00:00:00 2001 From: skull132 Date: Sun, 26 Mar 2017 17:57:03 +0300 Subject: [PATCH] Revert Convert database configs to JSON (#1998) (#2000) This is get over the shortcomings and failures of the old config system. Currently only applied to the DB configs because they're the ones fucking up. (reverted from commit 7e1f0d2285ea43d846d959f2c7dcf8fd20e19acb) Reverted because further testing showcased the issue to be inside the mysql.dll instead of the game code. Weee I feel dumb. --- code/world.dm | 33 ++++++++++++++++++++++----------- config/example/dbconfig.json | 11 ----------- config/example/dbconfig.txt | 23 +++++++++++++++++++++++ 3 files changed, 45 insertions(+), 22 deletions(-) delete mode 100644 config/example/dbconfig.json create mode 100644 config/example/dbconfig.txt diff --git a/code/world.dm b/code/world.dm index 1be73ea8bc1..66db0ad5a1a 100644 --- a/code/world.dm +++ b/code/world.dm @@ -390,7 +390,7 @@ var/inerror = 0 /hook/startup/proc/load_databases() //Construct the database object from an init file. - dbcon = initialize_database_object("config/dbconfig.json") + dbcon = initialize_database_object("config/dbconfig.txt") if (!setup_database_connection(dbcon)) world.log << "Your server failed to establish a connection with the feedback database." @@ -405,20 +405,31 @@ var/inerror = 0 var/list/data = list("address", "port", "database", "login", "password") - var/list/Lines + var/list/Lines = file2list(filename) - try - Lines = json_decode(file2text(filename)) - catch(var/exception/e) - error("Error reading database config file '[filename]': [e]") - return new/DBConnection() - - if (!Lines || !Lines.len) + if (!Lines) // Return dummy object for safety. return new/DBConnection() - for (var/name in Lines) - var/value = Lines[name] + for (var/t in Lines) + if (!t) + continue + + t = trim(t) + if (length(t) == 0) + continue + else if (copytext(t, 1, 2) == "#") + continue + + var/pos = findtext(t, " ") + var/name = null + var/value = null + + name = lowertext(copytext(t, 1, pos)) + value = copytext(t, pos + 1) + + if (!name) + continue if (name in data) data[name] = value diff --git a/config/example/dbconfig.json b/config/example/dbconfig.json deleted file mode 100644 index 47c15659a02..00000000000 --- a/config/example/dbconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - // This config file is JSON-ed, to permit the usage of long names. The old - // config parser was throwing errors. - // All fields are self-planitory, fill them out and plop this in. - // BECAUSE DM JSON IS SIMPLE, REMOVE THIS COMMENT BLOCK! - "address": "yourwebserver.com", - "port": 3306, - "database": "ss13", - "login": "databaseuser", - "password": "databasepassword" -} diff --git a/config/example/dbconfig.txt b/config/example/dbconfig.txt new file mode 100644 index 00000000000..2e2ac8ed331 --- /dev/null +++ b/config/example/dbconfig.txt @@ -0,0 +1,23 @@ +# MySQL Connection Configuration + +# Server the MySQL database can be found at +# Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. +ADDRESS localhost + +# MySQL server port (default is 3306) +PORT 3306 + +# Database the population, death, karma, etc. tables may be found in +DATABASE tgstation + +# Username/Login used to access the database +LOGIN mylogin + +# Password used to access the database +PASSWORD mypassword + +# The following information is for feedback tracking via the blackbox server + +# Track population and death statistics +# Comment this out to disable +#ENABLE_STAT_TRACKING