Added support for multiple databases

This commit is contained in:
luca0N! 2020-05-28 17:29:15 -03:00
parent bb10f10123
commit 6784c2cf56
No known key found for this signature in database
GPG Key ID: 9F1B99B522287CAB
2 changed files with 67 additions and 20 deletions

11
cfg.example.json Normal file
View File

@ -0,0 +1,11 @@
{
"cfg_db_username": "DatabaseUsername",
"cfg_db_password": "DatabasePassword",
"cfg_db_address": "DatabaseAddress.com",
"cfg_db_databases": [
"adl1",
"adl2",
"adl3"
]
}

View File

@ -26,46 +26,82 @@
*/ */
$runtimeEpoch = time(); $runtimeEpoch = time();
switch($_POST['action']){ switch($_POST['action']){
// 21/03/2020 16:00 (BRT). // Added on 21.03.2020 16:00 (BRT).
case 'registerToken':{ case 'registerToken':{
$token = $_POST['token']; $token = $_POST['token'];
$state = 'AwaitingResponse'; $state = 'AwaitingResponse';
$addr = $_SERVER['REMOTE_ADDR']?:($_SERVER['HTTP_X_FORWARDED_FOR']?:$_SERVER['HTTP_CLIENT_IP']); $addr = $_SERVER['REMOTE_ADDR']?:($_SERVER['HTTP_X_FORWARDED_FOR']?:$_SERVER['HTTP_CLIENT_IP']);
$sql = requestSql(); $sql = requestSql();
$in = $sql->prepare('INSERT INTO adl.tokens (Token, CreationAddress, CreationEpoch, State, CurrentAddress) VALUES (?, ?, ?, ?, ?)');
$in->bind_param('ssiss', $token, $addr, $runtimeEpoch, $state, $addr); // Run the query on multiple databases (if specified).
$in->execute();
$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(); $sql->close();
if ($in) echo 'OK';
echo 'OK';
else
echo 'ERROR';
break; break;
} }
// 21/03/2020 16:02 (BRT). // Added on 21.03.2020 16:02 (BRT).
case 'updateAddress':{ case 'updateAddress':{
$token = $_POST['token']; $token = $_POST['token'];
$state = 'Taken'; $state = 'Taken';
$addr = $_SERVER['REMOTE_ADDR']?:($_SERVER['HTTP_X_FORWARDED_FOR']?:$_SERVER['HTTP_CLIENT_IP']); $addr = $_SERVER['REMOTE_ADDR']?:($_SERVER['HTTP_X_FORWARDED_FOR']?:$_SERVER['HTTP_CLIENT_IP']);
$sql = requestSql(); $sql = requestSql();
$in = $sql->prepare('UPDATE adl.tokens SET CurrentAddress=? WHERE Token=? AND State=?');
$in->bind_param('sss', $addr, $token, $state); // Run the query on multiple databases (if specified).
$in->execute();
$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(); $sql->close();
if ($in)
echo 'OK';
else
echo 'ERROR';
break; break;
} }
} }
function requestSql(){ function requestSql(){
// TODO: Coloque as credenciais de seu servidor SQL. $addr = getCfgValue('cfg_db_address');
$addr = 'sitio-do-luca0n.gov.br'; $uname = getCfgValue('cfg_db_username');
$uname = 'adl'; $pwd = getCfgValue('cfg_db_password');
$pwd = 'senha123';
return new mysqli($addr, $uname, $pwd); 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];
}
?> ?>