feat: configure the game from env variables
This commit is contained in:
parent
bc5a70c4c6
commit
8ffcccb1e8
5 changed files with 39 additions and 8 deletions
game/scripts
|
@ -6,7 +6,7 @@
|
|||
$config = array(
|
||||
// Path and URL to static contents
|
||||
"staticdir" => __DIR__ . "/../site/static",
|
||||
"staticurl" => "http://localhost/static",
|
||||
"staticurl" => getenv("LW_STATIC_URL") ?: "http://localhost/static",
|
||||
|
||||
// Path to game scripts
|
||||
"scriptdir" => __DIR__,
|
||||
|
@ -40,7 +40,7 @@ $config = array(
|
|||
"trace" => array(),
|
||||
|
||||
// Do we need to actually send emails?
|
||||
"sendmails" => false
|
||||
"sendmails" => (getenv("LW_SEND_MAIL") ?: "no") == "yes",
|
||||
);
|
||||
|
||||
if (file_exists($config['cachedir'] . "/maintenance.ser")) {
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
<!-- Global parameters -->
|
||||
<MainParams>
|
||||
<!-- Database connection -->
|
||||
<Param name="dbhost" value="localhost" />
|
||||
<Param name="dbuser" value="legacy" />
|
||||
<Param name="dbpass" value="" />
|
||||
<Param name="dbname" value="legacy" />
|
||||
<Param name="dbhost" from-env="LW_DB_HOST" value="127.0.0.1" />
|
||||
<Param name="dbname" from-env="LW_DB_NAME" value="legacyworlds" />
|
||||
<Param name="dbuser" from-env="LW_DB_USER_NAME" value="legacyworlds" />
|
||||
<Param name="dbpass" from-env="LW_DB_USER_PASS" />
|
||||
|
||||
<!-- Cookies -->
|
||||
<Param name="trackname" value="legacy_alpha_trk" />
|
||||
|
|
|
@ -12,16 +12,33 @@ class xml_config {
|
|||
private static $games = null;
|
||||
private static $defGame = null;
|
||||
|
||||
private static function readFromEnv(string $varName, string $default): string {
|
||||
if ($varName == '') {
|
||||
return $default;
|
||||
}
|
||||
|
||||
$fileVarName = $varName . '_FILE';
|
||||
$fileName = getenv($fileVarName);
|
||||
if ($fileName !== false) {
|
||||
$value = @file_get_contents($fileName);
|
||||
} else {
|
||||
$value = getenv($varName);
|
||||
}
|
||||
return $value ?: $default;
|
||||
}
|
||||
|
||||
private static function parseMainParams($root) {
|
||||
$node = $root->firstChild;
|
||||
|
||||
while ($node) {
|
||||
if ($node->nodeType == XML_ELEMENT_NODE && $node->nodeName == 'Param') {
|
||||
$aName = $node->getAttribute('name');
|
||||
$aValue = $node->getAttribute('value');
|
||||
if ($aName == "") {
|
||||
if ($aName == '') {
|
||||
l::warn("CONFIG: a main parameter is missing a 'name' attribute");
|
||||
} elseif (!isset(xml_config::$mGame->params[$aName])) {
|
||||
$aValue = $node->getAttribute('value');
|
||||
$aFromEnv = $node->getAttribute('from-env');
|
||||
$aValue = self::readFromEnv($aFromEnv, $aValue);
|
||||
xml_config::$mGame->params[$aName] = $aValue;
|
||||
} else {
|
||||
l::notice("CONFIG: duplicate main parameter '$aName'");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue