From 6784c2cf563706d71a8460b450bbba2554276a5c Mon Sep 17 00:00:00 2001 From: luca0N! <63941044+luca0N@users.noreply.github.com> Date: Thu, 28 May 2020 17:29:15 -0300 Subject: [PATCH] Added support for multiple databases --- cfg.example.json | 11 ++++++ v1/index.php => index.php | 76 ++++++++++++++++++++++++++++----------- 2 files changed, 67 insertions(+), 20 deletions(-) create mode 100644 cfg.example.json rename v1/index.php => index.php (54%) diff --git a/cfg.example.json b/cfg.example.json new file mode 100644 index 0000000..c7eb0fc --- /dev/null +++ b/cfg.example.json @@ -0,0 +1,11 @@ +{ + "cfg_db_username": "DatabaseUsername", + "cfg_db_password": "DatabasePassword", + "cfg_db_address": "DatabaseAddress.com", + + "cfg_db_databases": [ + "adl1", + "adl2", + "adl3" + ] +} \ No newline at end of file diff --git a/v1/index.php b/index.php similarity index 54% rename from v1/index.php rename to index.php index 4808401..5c649d6 100644 --- a/v1/index.php +++ b/index.php @@ -26,46 +26,82 @@ */ $runtimeEpoch = time(); switch($_POST['action']){ - // 21/03/2020 16:00 (BRT). + // Added on 21.03.2020 16:00 (BRT). case 'registerToken':{ $token = $_POST['token']; $state = 'AwaitingResponse'; $addr = $_SERVER['REMOTE_ADDR']?:($_SERVER['HTTP_X_FORWARDED_FOR']?:$_SERVER['HTTP_CLIENT_IP']); $sql = requestSql(); - $in = $sql->prepare('INSERT INTO adl.tokens (Token, CreationAddress, CreationEpoch, State, CurrentAddress) VALUES (?, ?, ?, ?, ?)'); - $in->bind_param('ssiss', $token, $addr, $runtimeEpoch, $state, $addr); - $in->execute(); + // Run the query on multiple databases (if specified). + + $dbs = getCfgValue('cfg_db_databases'); + foreach ($dbs as $db){ + $sql->select_db($db); + + $in = $sql->prepare('INSERT INTO adl_tokens (Token, CreationAddress, CreationEpoch, State, CurrentAddress) VALUES (?, ?, ?, ?, ?)'); + + $in->bind_param('ssiss', $token, $addr, $runtimeEpoch, $state, $addr); + $in->execute(); + + if ($in) + continue; + else { + $sql->close(); + echo 'ERROR'; + return; + } + } + $sql->close(); - if ($in) - echo 'OK'; - else - echo 'ERROR'; + echo 'OK'; break; } - // 21/03/2020 16:02 (BRT). + // Added on 21.03.2020 16:02 (BRT). case 'updateAddress':{ $token = $_POST['token']; $state = 'Taken'; $addr = $_SERVER['REMOTE_ADDR']?:($_SERVER['HTTP_X_FORWARDED_FOR']?:$_SERVER['HTTP_CLIENT_IP']); $sql = requestSql(); - $in = $sql->prepare('UPDATE adl.tokens SET CurrentAddress=? WHERE Token=? AND State=?'); - $in->bind_param('sss', $addr, $token, $state); - $in->execute(); + // Run the query on multiple databases (if specified). + + $dbs = getCfgValue('cfg_db_databases'); + + foreach ($dbs as $db){ + $sql->select_db($db); + + $in = $sql->prepare('UPDATE adl_tokens SET CurrentAddress=? WHERE Token=? AND State=?'); + $in->bind_param('sss', $addr, $token, $state); + $in->execute(); + if ($in) + continue; + else { + $sql->close(); + echo 'ERROR'; + return; + } + } + + echo 'OK'; $sql->close(); - if ($in) - echo 'OK'; - else - echo 'ERROR'; break; } } function requestSql(){ - // TODO: Coloque as credenciais de seu servidor SQL. - $addr = 'sitio-do-luca0n.gov.br'; - $uname = 'adl'; - $pwd = 'senha123'; + $addr = getCfgValue('cfg_db_address'); + $uname = getCfgValue('cfg_db_username'); + $pwd = getCfgValue('cfg_db_password'); return new mysqli($addr, $uname, $pwd); } + function getCfgValue($key){ + // Reads cfg.json and then returns the value of the provided key. + // May 28, 2020, 16:31 (BRT). + $jsonf = file('./cfg.json'); + $jsonc = ''; + foreach($jsonf as $line) + $jsonc .= $line; + $cfg = json_decode($jsonc, true); + return $cfg[$key]; + } ?> \ No newline at end of file