#366 Add reinstall feature for MySQL

This commit is contained in:
Ulrich Block 2014-04-18 13:48:31 +02:00
parent 1e38c36007
commit 3d5471f535
19 changed files with 644 additions and 251 deletions

View File

@ -153,7 +153,7 @@ function popup(url) {
return false;
}
function SwitchShowHideRows (Element, change) {
function SwitchShowHideRows (Element, change, showNotIfEmpty) {
var TheRest = document.getElementsByTagName('div');
var amount = TheRest.length;
@ -192,7 +192,7 @@ function SwitchShowHideRows (Element, change) {
}
}
if (Element != 'init_ready' && foundAmount == 0) {
if (Element != 'init_ready' && foundAmount == 0 && showNotIfEmpty != 1) {
for(x=0; x<amount; x++) {
TheClass = TheRest[x].getAttribute('class');
if (TheClass != null) {

View File

@ -57,6 +57,7 @@
<pages>Seiten</pages>
<password>Passwort</password>
<registration>Registration</registration>
<reinstall>Reinstall</reinstall>
<repair>Reparieren</repair>
<reseller>Reseller</reseller>
<root>Rootserver</root>

View File

@ -6,6 +6,7 @@
<ips>Erlaubte IPs</ips>
<dbname>Datenbankname</dbname>
<description>Beschreibung</description>
<reinstall>Neu Installieren</reinstall>
<standards>Standardwerte für neue Datenbanken</standards>
<max_databases>Maximale Datenbanken</max_databases>
<max_queries_per_hour>Maximale Queries je Stunde</max_queries_per_hour>

View File

@ -8,6 +8,7 @@
<error_ts_query>Fehler: Der TS3 Serverquery war nicht erfolgreich. Die Fehlermeldung ist: </error_ts_query>
<error_ts_query_connect>Fehler: Konnte nicht zu dem TS3 Serverquery verbinden. Die Fehlermeldung ist: </error_ts_query_connect>
<error_username>Fehler: Username ist unzulässig, oder existiert bereits.</error_username>
<reinstall_success>Neuinstallation erfolgreich gestartet</reinstall_success>
<table_add>Die Daten wurden erfolgreich in die Datenbank eingetragen.</table_add>
<table_del>Die Daten wurden erfolgreich aus der Datenbank entfernt.</table_del>
<token>Error: CSFR Schutztoken abgelaufen, oder nicht vorhanden.</token>

View File

@ -49,6 +49,7 @@
<pages>Sider</pages>
<password></password>
<registration>Registrering</registration>
<reinstall></reinstall>
<repair>Reparer</repair>
<reseller>Forhandler</reseller>
<root>Rootserver</root>

View File

@ -4,6 +4,7 @@
<interface>phpMyAdmin</interface>
<ips>Tilladt IP'er</ips>
<dbname>Databasenavn</dbname>
<reinstall></reinstall>
<standards>Standardværdier for databasen brugeren</standards>
<max_databases>Maksimalt databaser</max_databases>
<max_queries_per_hour>Maksimalt forespørgsler i timen</max_queries_per_hour>

View File

@ -8,6 +8,7 @@
<error_ts_query_connect>Fejl: Kunne ikke forbinde til TS3 server forespørgsel. Fejlmeddelelse er: </error_ts_query_connect>
<error_username>Fejl: Brugernavn er ikke tilladt, eller eksisterer allerede.</error_username>
<table_add>Succesfuld tilføjet data til databasen.</table_add>
<reinstall_success></reinstall_success>
<table_del>Succesfuld fjernet data fra databasen.</table_del>
<token>Fejl: CSRF beskyttelse token timeout eller ikke passer.</token>
<ts_query_success>TS3 ServerQuery succes. TS3 query svar er: </ts_query_success>

View File

@ -57,6 +57,7 @@
<pages>Pages</pages>
<password>Password</password>
<registration>Registration</registration>
<reinstall>Reinstall</reinstall>
<repair>Repair</repair>
<reseller>Reseller</reseller>
<root>Rootserver</root>

View File

@ -6,6 +6,7 @@
<ips>Allowed IPs</ips>
<dbname>Databasename</dbname>
<description>Description</description>
<reinstall>Reinstall</reinstall>
<standards>Default values for the database user</standards>
<max_databases>Maximum datenbases</max_databases>
<max_queries_per_hour>Maximum querys per hour</max_queries_per_hour>

View File

@ -8,6 +8,7 @@
<error_ts_query>Error: Sending commands to the TS 3 server failed. Error message is: </error_ts_query>
<error_ts_query_connect>Error: Could not connect to TS3 server query. Error message is: </error_ts_query_connect>
<error_username>Error: Username is not allowed, or exists already.</error_username>
<reinstall_success>Reinstall successfully started</reinstall_success>
<table_add>Successfully added the data to the database.</table_add>
<table_del>Successfully removed the data from the database.</table_del>
<token>Error: CSFR protection token timed out or does not match.</token>

View File

@ -1,4 +1,5 @@
<?php
/**
* File: mysql_server.php.
* Author: Ulrich Block
@ -43,7 +44,7 @@ if ((!isset($admin_id) or $main != 1) or (isset($admin_id) and !$pa['mysql_setti
include(EASYWIDIR . '/stuff/methods/class_mysql.php');
include(EASYWIDIR . '/stuff/keyphrasefile.php');
$sprache = getlanguagefile('mysql',$user_language,$reseller_id);
$sprache = getlanguagefile('mysql', $user_language, $reseller_id);
$loguserid = $admin_id;
$logusername = getusername($admin_id);
$logusertype = 'admin';
@ -59,6 +60,7 @@ if ($reseller_id != 0 and $admin_id != $reseller_id) {
$reseller_id = $admin_id;
}
if ($ui->w('action', 4, 'post') and !token(true)) {
$template_file = $spracheResponse->token;
} else if ($ui->st('d', 'get') == 'ms' and !$ui->id('id', 10, 'get') and $pa['mysql_settings']) {
@ -99,7 +101,10 @@ if ($ui->w('action', 4, 'post') and !token(true)) {
$query2 = $sql->prepare("SELECT `id`,`active`,`dbname` FROM `mysql_external_dbs` WHERE `sid`=? AND `resellerid`=?");
$query->execute(array($reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$i = 0;
$ds = array();
if ($row['active'] == 'Y') {
$imgName = '16_ok';
$imgAlt = 'Active';
@ -107,8 +112,8 @@ if ($ui->w('action', 4, 'post') and !token(true)) {
$imgName = '16_bad';
$imgAlt = 'Inactive';
}
$ds = array();
$query2->execute(array($row['id'],$reseller_id));
$query2->execute(array($row['id'], $reseller_id));
foreach ($query2->fetchAll(PDO::FETCH_ASSOC) as $row2) {
$ds[] = array('id' => $row2['id'], 'address' => $row2['dbname'], 'status' => ($row2['active'] == 'N') ? 2 : 1);
$i++;
@ -116,51 +121,73 @@ if ($ui->w('action', 4, 'post') and !token(true)) {
$table[] = array('id' => $row['id'], 'img' => $imgName,'alt' => $imgAlt,'max_databases' => $row['max_databases'], 'dbcount' => $i,'ip' => $row['ip'], 'interface' => $row['interface'], 'active' => $row['active'], 'server' => $ds);
}
$next = $start+$amount;
$vor=($colcount>$next) ? $start+$amount : $start;
$next = $start + $amount;
$vor = ($colcount > $next) ? $start + $amount : $start;
$back = $start - $amount;
$zur = ($back >= 0) ? $start - $amount : $start;
$pageamount = ceil($colcount / $amount);
$pages[] = '<a href="admin.php?w=my&amp;d=ms&amp;a=' . (!isset($amount)) ? 20 : $amount . ($start==0) ? '&p=0" class="bold">1</a>' : '&p=0">1</a>';
$bold = ($start==0) ? '&p=0" class="bold">1</a>' : '&p=0">1</a>';
$pages[] = '<a href="admin.php?w=my&amp;d=ms&amp;a=' . $amount . $bold;
$i = 2;
while ($i<=$pageamount) {
while ($i <= $pageamount) {
$selectpage = ($i - 1) * $amount;
$pages[] = '<a href="admin.php?w=my&amp;d=ms&amp;a=' . $amount . '&p=' . $selectpage . '"' . ($start==$selectpage) ? 'class="bold"' : '' .' >' . $i . '</a>';
$i++;
}
$pages=implode(', ',$pages);
$template_file = "admin_mysql_server_list.tpl";
$pages = implode(', ', $pages);
$template_file = 'admin_mysql_server_list.tpl';
} else if ($ui->st('d', 'get') == 'ds' and $ui->id('id', 10, 'get') and $pa['mysql_settings']) {
$id = $ui->id('id', 10, 'get');
if ($ui->st('action', 'post') == 'dl') {
$id = $ui->id('id', 10, 'get');
$pselect = $sql->prepare("SELECT `ip` FROM `mysql_external_servers` WHERE `id`=? AND `resellerid`=? LIMIT 1");
$pselect->execute(array($id,$reseller_id));
foreach ($pselect->fetchall(PDO::FETCH_ASSOC) as $row) {
$ip = $row['ip'];
$query = $sql->prepare("SELECT `ip` FROM `mysql_external_servers` WHERE `id`=? AND `resellerid`=? LIMIT 1");
$query->execute(array($id, $reseller_id));
$ip = $query->fetchColumn();
$query = $sql->prepare("DELETE FROM `mysql_external_servers` WHERE `id`=? AND `resellerid`=? LIMIT 1");
$query->execute(array($id, $reseller_id));
$queryCount = $query->rowCount();
$query = $sql->prepare("DELETE FROM `mysql_external_dbs` WHERE `sid`=? AND `resellerid`=?");
$query->execute(array($id, $reseller_id));
$queryCount += $query->rowCount();
if ($queryCount > 0) {
$template_file = $spracheResponse->table_del;
$loguseraction = '%del% MySQL Server ' . $ip;
$insertlog->execute();
} else {
$template_file = $spracheResponse->error_table;
}
$pdelete = $sql->prepare("DELETE FROM `mysql_external_servers` WHERE `id`=? AND `resellerid`=? LIMIT 1");
$pdelete->execute(array($id,$reseller_id));
$pdelete2 = $sql->prepare("DELETE FROM `mysql_external_dbs` WHERE `sid`=? AND `resellerid`=?");
$pdelete2->execute(array($id,$reseller_id));
$template_file = $spracheResponse->table_del;
$loguseraction="%del% MySQL Server $ip";
$insertlog->execute();
} else {
$id = $ui->id('id', 10, 'get');
$pselect = $sql->prepare("SELECT `ip`,`interface` FROM `mysql_external_servers` WHERE `id`=? AND `resellerid`=? LIMIT 1");
$pselect->execute(array($id,$reseller_id));
foreach ($pselect->fetchall(PDO::FETCH_ASSOC) as $row) {
$query = $sql->prepare("SELECT `ip`,`interface` FROM `mysql_external_servers` WHERE `id`=? AND `resellerid`=? LIMIT 1");
$query->execute(array($id, $reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$interface = $row['interface'];
$ip = $row['ip'];
}
$template_file = "admin_mysql_server_dl.tpl";
$template_file = 'admin_mysql_server_dl.tpl';
}
} else if ($ui->st('d', 'get') == 'ms' and $ui->id('id', 10, 'get') and $pa['mysql_settings']) {
if (!$ui->st('action', 'post')) {
$id = $ui->id('id', 10, 'get');
$pselect = $sql->prepare("SELECT `active`,`ip`,`port`,`user`,AES_DECRYPT(`password`,?) AS `decryptedpassword`,`max_databases`,`interface`,`max_queries_per_hour`,`max_updates_per_hour`,`max_connections_per_hour`,`max_userconnections_per_hour` FROM `mysql_external_servers` WHERE `id`=? AND `resellerid`=? LIMIT 1");
$pselect->execute(array($aeskey,$id,$reseller_id));
foreach ($pselect->fetchall(PDO::FETCH_ASSOC) as $row) {
} else if (in_array($ui->st('d', 'get'), array('ms', 'rs')) and $ui->id('id', 10, 'get') and $pa['mysql_settings']) {
$id = $ui->id('id', 10, 'get');
if (!$ui->st('action', 'post') or $ui->st('d', 'get') == 'rs') {
$query = $sql->prepare("SELECT `active`,`ip`,`port`,`user`,AES_DECRYPT(`password`,?) AS `decryptedpassword`,`max_databases`,`interface`,`max_queries_per_hour`,`max_updates_per_hour`,`max_connections_per_hour`,`max_userconnections_per_hour` FROM `mysql_external_servers` WHERE `id`=? AND `resellerid`=? LIMIT 1");
$query->execute(array($aeskey, $id, $reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$active = $row['active'];
$ip = $row['ip'];
$port = $row['port'];
@ -173,285 +200,490 @@ if ($ui->w('action', 4, 'post') and !token(true)) {
$max_connections_per_hour = $row['max_connections_per_hour'];
$max_userconnections_per_hour = $row['max_userconnections_per_hour'];
}
$template_file = "admin_mysql_server_md.tpl";
$rowCount = $query->rowCount();
}
if (!$ui->st('action', 'post')) {
if (isset($rowCount) and $rowCount > 0) {
if ($ui->st('d', 'get') == 'rs') {
$installedDbs = array();
$query = $sql->prepare("SELECT `id`,`dbname` FROM `mysql_external_dbs` WHERE `sid`=? AND `resellerid`=?");
$query->execute(array($id, $reseller_id));
foreach($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$installedDbs[$row['id']] = $row['dbname'];
}
$template_file = 'admin_mysql_server_ri.tpl';
} else {
$template_file = 'admin_mysql_server_md.tpl';
}
} else {
$template_file = 'admin_404.tpl';
}
} else if ($ui->st('action', 'post') == 'rs' and isset($rowCount) and $rowCount > 0) {
$remotesql = new ExternalSQL ($ip, $port, $user, $password);
if ($remotesql->error == 'ok') {
$dbIDs = (array) $ui->id('dbID', 10, 'post');
$query = $sql->prepare("SELECT *,AES_DECRYPT(`password`,?) AS `decryptedpassword` FROM `mysql_external_dbs` WHERE `id`=? AND `sid`=? AND `resellerid`=? LIMIT 1");
foreach($dbIDs as $dbID) {
$query->execute(array($aeskey, $dbID, $id, $reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$remotesql->DelDB($row['dbname']);
$remotesql->DelUser($row['dbname']);
$remotesql->AddDB($row['dbname'], $row['decryptedpassword'], $row['ips'], $row['max_queries_per_hour'], $row['max_connections_per_hour'], $row['max_updates_per_hour'], $row['max_userconnections_per_hour']);
$loguseraction = '%ri% MYSQL DB ' . $row['dbname'] . ' (' . $ip . ')';
$insertlog->execute();
}
}
$template_file = $spracheResponse->reinstall_success;
} else {
$template_file = $remotesql->error;
}
} else if ($ui->st('action', 'post') == 'md') {
$errors = array();
if (!$ui->ip('ip', 'post')) $errors[] = 'IP';
if (!$ui->port('port', 'post')) $errors[] = 'Port';
if (!$ui->username('user',20, 'post')) $errors[] = 'Username';
if (!$ui->password('password',40, 'post')) $errors[] = 'Password';
if (count($errors)>0) {
$template_file = 'Error(s): '.implode(', '.$errors);
if (!$ui->ip('ip', 'post')) {
$errors[] = 'IP';
}
if (!$ui->port('port', 'post')) {
$errors[] = 'Port';
}
if (!$ui->username('user',20, 'post')) {
$errors[] = 'Username';
}
if (!$ui->password('password',40, 'post')) {
$errors[] = 'Password';
}
if (count($errors) > 0) {
$template_file = 'Error(s): ' . implode(', ', $errors);
} else {
$id = $ui->id('id', 10, 'get');
$active = $ui->active('active', 'post');
$ip = $ui->ip('ip', 'post');
$port = $ui->port('port', 'post');
$user = $ui->username('user',20, 'post');
$password = $ui->password('password',40, 'post');
$user = $ui->username('user', 20, 'post');
$password = $ui->password('password', 40, 'post');
$interface = $ui->url('interface', 'post');
$max_databases=($ui->id('max_databases',255, 'post')) ? $ui->id('max_databases',255, 'post'): 100;
$max_queries_per_hour=($ui->id('max_queries_per_hour',255, 'post')) ? $ui->id('max_queries_per_hour',255, 'post') : 0;
$max_updates_per_hour=($ui->id('max_updates_per_hour',255, 'post')) ? $ui->id('max_updates_per_hour',255, 'post') : 0;
$max_connections_per_hour=($ui->id('max_connections_per_hour',255, 'post')) ? $ui->id('max_connections_per_hour',255, 'post') : 0;
$max_userconnections_per_hour=($ui->id('max_userconnections_per_hour',255, 'post')) ? $ui->id('max_userconnections_per_hour',255, 'post') : 0;
$pupdate = $sql->prepare("UPDATE `mysql_external_servers` SET `active`=?,`ip`=?,`port`=?,`user`=?,`password`=AES_ENCRYPT(?,?),`max_databases`=?,`interface`=?,`max_queries_per_hour`=?,`max_updates_per_hour`=?,`max_connections_per_hour`=?,`max_userconnections_per_hour`=? WHERE `id`=? AND `resellerid`=? LIMIT 1");
$pupdate->execute(array($active,$ip,$port,$user,$password,$aeskey,$max_databases,$interface,$max_queries_per_hour,$max_updates_per_hour,$max_connections_per_hour,$max_userconnections_per_hour,$id,$reseller_id));
$template_file = $spracheResponse->table_add;
$loguseraction="%mod% MySQL Server $ip";
$insertlog->execute();
$max_databases = ($ui->id('max_databases', 255, 'post')) ? $ui->id('max_databases', 255, 'post'): 100;
$max_queries_per_hour = ($ui->id('max_queries_per_hour', 255, 'post')) ? $ui->id('max_queries_per_hour', 255, 'post') : 0;
$max_updates_per_hour = ($ui->id('max_updates_per_hour', 255, 'post')) ? $ui->id('max_updates_per_hour', 255, 'post') : 0;
$max_connections_per_hour = ($ui->id('max_connections_per_hour', 255, 'post')) ? $ui->id('max_connections_per_hour', 255, 'post') : 0;
$max_userconnections_per_hour = ($ui->id('max_userconnections_per_hour', 255, 'post')) ? $ui->id('max_userconnections_per_hour', 255, 'post') : 0;
$query = $sql->prepare("UPDATE `mysql_external_servers` SET `active`=?,`ip`=?,`port`=?,`user`=?,`password`=AES_ENCRYPT(?,?),`max_databases`=?,`interface`=?,`max_queries_per_hour`=?,`max_updates_per_hour`=?,`max_connections_per_hour`=?,`max_userconnections_per_hour`=? WHERE `id`=? AND `resellerid`=? LIMIT 1");
$query->execute(array($active, $ip, $port, $user, $password, $aeskey, $max_databases, $interface, $max_queries_per_hour, $max_updates_per_hour, $max_connections_per_hour, $max_userconnections_per_hour, $id, $reseller_id));
if ($query->rowCount() > 0) {
$template_file = $spracheResponse->table_add;
$loguseraction = '%mod% MySQL Server ' . $ip;
$insertlog->execute();
} else {
$template_file = $spracheResponse->error_table;
}
}
}
} else {
$template_file = $spracheResponse->notFound;
}
} else if ($ui->st('d', 'get') == 'as' and $pa['mysql']) {
if (!$ui->st('action', 'post')) {
$template_file = "admin_mysql_server_add.tpl";
$template_file = 'admin_mysql_server_add.tpl';
} else if ($ui->st('action', 'post') == 'ad'){
$errors = array();
if (!$ui->ip('ip', 'post')) $errors[] = 'IP';
if (!$ui->port('port', 'post')) $errors[] = 'Port';
if (!$ui->username('user',20, 'post')) $errors[] = 'Username';
if (!$ui->password('password',40, 'post')) $errors[] = 'Password';
if (!$ui->ip('ip', 'post')) {
$errors[] = 'IP';
}
if (!$ui->port('port', 'post')) {
$errors[] = 'Port';
}
if (!$ui->username('user', 20, 'post')) {
$errors[] = 'Username';
}
if (!$ui->password('password',40, 'post')) {
$errors[] = 'Password';
}
if (count($errors)>0) {
$template_file = 'Error(s): '.implode(', '.$errors);
} else {
$id = $ui->id('id', 10, 'get');
$active = $ui->active('active', 'post');
$ip = $ui->ip('ip', 'post');
$port = $ui->port('port', 'post');
$user = $ui->username('user',20, 'post');
$password = $ui->password('password',40, 'post');
$interface = $ui->url('interface', 'post');
$max_databases=($ui->id('max_databases',255, 'post')) ? $ui->id('max_databases',255, 'post'): 100;
$max_queries_per_hour=($ui->id('max_queries_per_hour',255, 'post')) ? $ui->id('max_queries_per_hour',255, 'post') : 0;
$max_updates_per_hour=($ui->id('max_updates_per_hour',255, 'post')) ? $ui->id('max_updates_per_hour',255, 'post') : 0;
$max_connections_per_hour=($ui->id('max_connections_per_hour',255, 'post')) ? $ui->id('max_connections_per_hour',255, 'post') : 0;
$max_userconnections_per_hour=($ui->id('max_userconnections_per_hour',255, 'post')) ? $ui->id('max_userconnections_per_hour',255, 'post') : 0;
$pinsert = $sql->prepare("INSERT INTO `mysql_external_servers` (`active`,`ip`,`port`,`user`,`password`,`max_databases`,`interface`,`max_queries_per_hour`,`max_updates_per_hour`,`max_connections_per_hour`,`max_userconnections_per_hour`,`resellerid`) VALUES (?,?,?,?,AES_ENCRYPT(?,?),?,?,?,?,?,?,?)");
$pinsert->execute(array($active,$ip,$port,$user,$password,$aeskey,$max_databases,$interface,$max_queries_per_hour,$max_updates_per_hour,$max_connections_per_hour,$max_userconnections_per_hour,$reseller_id));
$template_file = $spracheResponse->table_add;
$loguseraction="%add% MySQL Server $ip";
$insertlog->execute();
$max_databases = ($ui->id('max_databases', 255, 'post')) ? $ui->id('max_databases', 255, 'post'): 100;
$max_queries_per_hour = ($ui->id('max_queries_per_hour', 255, 'post')) ? $ui->id('max_queries_per_hour', 255, 'post') : 0;
$max_updates_per_hour = ($ui->id('max_updates_per_hour', 255, 'post')) ? $ui->id('max_updates_per_hour', 255, 'post') : 0;
$max_connections_per_hour = ($ui->id('max_connections_per_hour', 255, 'post')) ? $ui->id('max_connections_per_hour', 255, 'post') : 0;
$max_userconnections_per_hour = ($ui->id('max_userconnections_per_hour', 255, 'post')) ? $ui->id('max_userconnections_per_hour', 255, 'post') : 0;
$query = $sql->prepare("INSERT INTO `mysql_external_servers` (`active`,`ip`,`port`,`user`,`password`,`max_databases`,`interface`,`max_queries_per_hour`,`max_updates_per_hour`,`max_connections_per_hour`,`max_userconnections_per_hour`,`resellerid`) VALUES (?,?,?,?,AES_ENCRYPT(?,?),?,?,?,?,?,?,?)");
$query->execute(array($active, $ip, $port, $user, $password, $aeskey, $max_databases, $interface, $max_queries_per_hour, $max_updates_per_hour, $max_connections_per_hour, $max_userconnections_per_hour, $reseller_id));
if ($query->rowCount() > 0) {
$template_file = $spracheResponse->table_add;
$loguseraction = '%add% MySQL Server ' . $ip;
$insertlog->execute();
} else {
$template_file = $spracheResponse->error_table;
}
}
}
}
} else if ($ui->st('d', 'get') == 'ad' and $pa['mysql']) {
if (!$ui->st('action', 'post')) {
$table = array();
$table2 = array();
$password=passwordgenerate(20);
$password = passwordgenerate(20);
$query = $sql->prepare("SELECT `id`,`cname`,`vname`,`name` FROM `userdata` WHERE `resellerid`=? AND `accounttype`='u' ORDER BY `id` DESC");
$query->execute(array($reseller_id));
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
$table[$row['id']] = trim($row['cname'] . ' ' . $row['vname'] . ' ' . $row['name']);
}
$query2 = $sql->prepare("SELECT s.`id`,s.`ip`,s.`max_databases`, COUNT(d.`id`) AS `installed`,(s.`max_databases`/100)*COUNT(d.`id`) AS `usedpercent`,s.`max_queries_per_hour`,s.`max_updates_per_hour`,s.`max_connections_per_hour`,s.`max_userconnections_per_hour` FROM `mysql_external_servers` s LEFT JOIN `mysql_external_dbs` d ON s.`id`=d.`sid` WHERE s.`active`='Y' AND s.`resellerid`=? GROUP BY s.`ip` HAVING `usedpercent`<100 ORDER BY `usedpercent` ASC");
$query2->execute(array($reseller_id));
foreach ($query2->fetchall(PDO::FETCH_ASSOC) as $row2) {
$query = $sql->prepare("SELECT s.`id`,s.`ip`,s.`max_databases`, COUNT(d.`id`) AS `installed`,(s.`max_databases`/100)*COUNT(d.`id`) AS `usedpercent`,s.`max_queries_per_hour`,s.`max_updates_per_hour`,s.`max_connections_per_hour`,s.`max_userconnections_per_hour` FROM `mysql_external_servers` s LEFT JOIN `mysql_external_dbs` d ON s.`id`=d.`sid` WHERE s.`active`='Y' AND s.`resellerid`=? GROUP BY s.`ip` HAVING `usedpercent`<100 ORDER BY `usedpercent` ASC");
$query->execute(array($reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
if (!isset($installed)) {
$installed = $row2['installed'];
$max_databases = $row2['max_databases'];
$max_queries_per_hour = $row2['max_queries_per_hour'];
$max_updates_per_hour = $row2['max_updates_per_hour'];
$max_connections_per_hour = $row2['max_connections_per_hour'];
$max_userconnections_per_hour = $row2['max_userconnections_per_hour'];
$installed = $row['installed'];
$max_databases = $row['max_databases'];
$max_queries_per_hour = $row['max_queries_per_hour'];
$max_updates_per_hour = $row['max_updates_per_hour'];
$max_connections_per_hour = $row['max_connections_per_hour'];
$max_userconnections_per_hour = $row['max_userconnections_per_hour'];
}
$table2[] = array('id' => $row2['id'], 'ip' => $row2['ip']);
$table2[] = array('id' => $row['id'], 'ip' => $row['ip']);
}
if (!isset($installed)) {
$installed = 0;
$max_databases = 0;
$max_queries_per_hour = 0;
$max_updates_per_hour = 0;
$max_connections_per_hour = 0;
$max_userconnections_per_hour = 0;
}
$template_file = "admin_mysql_db_add.tpl";
if (!isset($installed)) {
$installed = 0;
$max_databases = 0;
$max_queries_per_hour = 0;
$max_updates_per_hour = 0;
$max_connections_per_hour = 0;
$max_userconnections_per_hour = 0;
}
$template_file = 'admin_mysql_db_add.tpl';
} else if ($ui->st('action', 'post') == 'ad' and $ui->id('serverid',10, 'post') and $ui->id('userid',10, 'post')) {
$errors = array();
if (!$ui->active('active', 'post')) $errors[] = $sprache->active;
if (!$ui->password('password',40, 'post')) $errors[] = $sprache->password;
if (count($errors)>0) {
$template_file = "Error: ".implode('<br>',$errors);
if (!$ui->active('active', 'post')) {
$errors[] = $sprache->active;
}
if (!$ui->password('password',40, 'post')) {
$errors[] = $sprache->password;
}
if (count($errors) > 0) {
$template_file = 'Error: ' . implode('<br>', $errors);
} else {
$sid = $ui->id('serverid',10, 'post');
$uid = $ui->id('userid',10, 'post');
$active = $ui->active('active', 'post');
$password = $ui->password('password',40, 'post');
$ips = $ui->ips('ips', 'post');
$query = $sql->prepare("SELECT `cname` FROM `userdata` WHERE `id`=? AND `resellerid`=? AND `accounttype`='u' LIMIT 1");
$query->execute(array($uid,$reseller_id));
$cname = $query->fetchColumn();
$max_queries_per_hour=($ui->id('max_queries_per_hour',255, 'post')) ? $ui->id('max_queries_per_hour',255, 'post') : 0;
$max_updates_per_hour=($ui->id('max_updates_per_hour',255, 'post')) ? $ui->id('max_updates_per_hour',255, 'post') : 0;
$max_connections_per_hour=($ui->id('max_connections_per_hour',255, 'post')) ? $ui->id('max_connections_per_hour',255, 'post') : 0;
$max_userconnections_per_hour=($ui->id('max_userconnections_per_hour',255, 'post')) ? $ui->id('max_userconnections_per_hour',255, 'post') : 0;
$max_queries_per_hour = ($ui->id('max_queries_per_hour', 255, 'post')) ? $ui->id('max_queries_per_hour', 255, 'post') : 0;
$max_updates_per_hour = ($ui->id('max_updates_per_hour', 255, 'post')) ? $ui->id('max_updates_per_hour', 255, 'post') : 0;
$max_connections_per_hour = ($ui->id('max_connections_per_hour', 255, 'post')) ? $ui->id('max_connections_per_hour', 255, 'post') : 0;
$max_userconnections_per_hour = ($ui->id('max_userconnections_per_hour', 255, 'post')) ? $ui->id('max_userconnections_per_hour', 255, 'post') : 0;
#https://github.com/easy-wi/developer/issues/42 column description added
$query = $sql->prepare("INSERT INTO `mysql_external_dbs` (`active`,`sid`,`uid`,`description`,`password`,`ips`,`max_queries_per_hour`,`max_updates_per_hour`,`max_connections_per_hour`,`max_userconnections_per_hour`,`resellerid`) VALUES (?,?,?,?,AES_ENCRYPT(?,?),?,?,?,?,?,?)");
$query->execute(array($active,$sid,$uid,$ui->names('description',255, 'post'),$password,$aeskey,$ips,$max_queries_per_hour,$max_updates_per_hour,$max_connections_per_hour,$max_userconnections_per_hour,$reseller_id));
if ($active == 'N') $password=passwordgenerate(20);
$query->execute(array($active, $sid, $uid, $ui->names('description', 255, 'post'), $password, $aeskey, $ips, $max_queries_per_hour, $max_updates_per_hour, $max_connections_per_hour, $max_userconnections_per_hour, $reseller_id));
$id = $sql->lastInsertId();
$dbname = $cname . '-' . $id;
$nameLength=strlen($dbname);
if ($nameLength>16) {
$strStart = $nameLength-16;
$dbname=substr($dbname,$strStart,$nameLength);
$dbname = 'sql' . $id;
if ($active == 'N') {
$password = passwordgenerate(20);
}
$query = $sql->prepare("UPDATE `mysql_external_dbs` SET `dbname`=?,`password`=AES_ENCRYPT(?,?) WHERE `id`=? AND `resellerid`=? LIMIT 1");
$query->execute(array($dbname,$password,$aeskey,$id,$reseller_id));
$query->execute(array($dbname, $password, $aeskey, $id, $reseller_id));
$query = $sql->prepare("SELECT `ip`,`port`,`user`,AES_DECRYPT(`password`,?) AS `decryptedpassword` FROM `mysql_external_servers` WHERE `id`=? AND `resellerid`=? LIMIT 1");
$query->execute(array($aeskey,$sid,$reseller_id));
$query->execute(array($aeskey, $sid, $reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$ip = $row['ip'];
$port = $row['port'];
$user = $row['user'];
$pwd = $row['decryptedpassword'];
$remotesql = new ExternalSQL ($row['ip'], $row['port'], $row['user'], $row['decryptedpassword']);
if ($remotesql->error == 'ok') {
$reply = $remotesql->AddDB($dbname, $password, $ips, $max_queries_per_hour, $max_connections_per_hour, $max_updates_per_hour, $max_userconnections_per_hour);
customColumns('D', $id, 'save');
$template_file = $spracheResponse->table_add;
$loguseraction = '%add% MySQL DB ' . $dbname . ' (' . $row['ip'] . ')';
$insertlog->execute();
}
}
$remotesql=new ExternalSQL ($ip,$port,$user,$pwd);
if ($remotesql->error== 'ok') {
$reply = $remotesql->AddDB($dbname,$password,$ips,$max_queries_per_hour,$max_connections_per_hour,$max_updates_per_hour,$max_userconnections_per_hour);
customColumns('D',$id,'save');
$template_file = $spracheResponse->table_add;
$loguseraction="%add% MySQL DB $dbname ($ip)";
$insertlog->execute();
} else {
$template_file = $remotesql->error;
if (!isset($remotesql) or $remotesql->error != 'ok') {
$query = $sql->prepare("DELETE FROM `mysql_external_dbs` WHERE `id`=? AND `resellerid`=? LIMIT 1");
$query->execute(array($id,$reseller_id));
$query->execute(array($id, $reseller_id));
$template_file = $remotesql->error;
}
}
} else {
$template_file = 'userpanel_404.tpl';
$template_file = 'admin_404.tpl';
}
} else if ($ui->st('d', 'get') == 'md' and $ui->id('id', 10, 'get') and $pa['mysql']) {
} else if (in_array($ui->st('d', 'get') ,array('md','rd')) and $ui->id('id', 10, 'get') and $pa['mysql']) {
$id = $ui->id('id', 10, 'get');
if (!$ui->st('action', 'post')) {
$id = $ui->id('id', 10, 'get');
$query = $sql->prepare("SELECT e.*,AES_DECRYPT(e.`password`,?) AS `decryptedpassword`,s.`ip`,u.`cname` FROM `mysql_external_dbs` e LEFT JOIN `mysql_external_servers` s ON e.`sid`=s.`id` LEFT JOIN `userdata` u ON e.`uid`=u.`id` WHERE e.`id`=? AND e.`resellerid`=? LIMIT 1");
$query->execute(array($aeskey,$id,$reseller_id));
$query->execute(array($aeskey, $id, $reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$ip = $row['ip'];
$ips = $row['ips'];
$cname = $row['cname'];
$active = 'N';
$description = $row['description'];
if ($row['jobPending'] == 'Y') {
$query2 = $sql->prepare("SELECT `action`,`extraData` FROM `jobs` WHERE `affectedID`=? AND `resellerID`=? AND `type`='us' AND (`status` IS NULL OR `status`=1) ORDER BY `jobID` DESC LIMIT 1");
$query2->execute(array($row['id'], $row['resellerid']));
foreach ($query2->fetchAll(PDO::FETCH_ASSOC) as $row2) {
if ($row2['action'] == 'ad') $jobPending = $gsprache->add;
else if ($row2['action'] == 'dl') $jobPending = $gsprache->del;
else $jobPending = $gsprache->mod;
$json=@json_decode($row2['extraData']);
$active=(is_object($json) and isset($json->newActive)) ? $json->newActive : 'N';
}
} else {
$jobPending = $gsprache->no;
$active = $row['active'];
}
$dbname = $row['dbname'];
$password = $row['decryptedpassword'];
$max_queries_per_hour = $row['max_queries_per_hour'];
$max_updates_per_hour = $row['max_updates_per_hour'];
$max_connections_per_hour = $row['max_connections_per_hour'];
$max_userconnections_per_hour = $row['max_userconnections_per_hour'];
if ($row['jobPending'] == 'Y') {
$query2 = $sql->prepare("SELECT `action`,`extraData` FROM `jobs` WHERE `affectedID`=? AND `resellerID`=? AND `type`='us' AND (`status` IS NULL OR `status`=1) ORDER BY `jobID` DESC LIMIT 1");
$query2->execute(array($row['id'], $row['resellerid']));
foreach ($query2->fetchAll(PDO::FETCH_ASSOC) as $row2) {
if ($row2['action'] == 'ad') {
$jobPending = $gsprache->add;
} else if ($row2['action'] == 'dl') {
$jobPending = $gsprache->del;
} else {
$jobPending = $gsprache->mod;
}
$json = @json_decode($row2['extraData']);
$active = (is_object($json) and isset($json->newActive)) ? $json->newActive : 'N';
}
} else {
$jobPending = $gsprache->no;
$active = $row['active'];
}
}
$template_file = (isset($active)) ? 'admin_mysql_db_md.tpl' : 'admin_404.tpl';
$modOrReinstall = ($ui->st('d', 'get') == 'md') ? 'admin_mysql_db_md.tpl' : 'admin_mysql_db_ri.tpl';
$template_file = ($query->rowCount() > 0) ? $modOrReinstall : 'admin_404.tpl';
} else if ($ui->st('action', 'post') == 'md') {
$errors = array();
if (!$ui->active('active', 'post')) $errors[] = $sprache->active;
if (!$ui->password('password',40, 'post')) $errors[] = $sprache->password;
if (count($errors)>0) {
$template_file = "Error: ".implode('<br>',$errors);
if (!$ui->active('active', 'post')) {
$errors[] = $sprache->active;
}
if (!$ui->password('password',40, 'post')) {
$errors[] = $sprache->password;
}
if (count($errors) > 0) {
$template_file = "Error: ".implode('<br>', $errors);
} else {
$id = $ui->id('id', 10, 'get');
$active = $ui->active('active', 'post');
$password = $ui->password('password',40, 'post');
$ips = $ui->ips('ips', 'post');
$max_queries_per_hour=($ui->id('max_queries_per_hour',255, 'post')) ? $ui->id('max_queries_per_hour',255, 'post') : 0;
$max_updates_per_hour=($ui->id('max_updates_per_hour',255, 'post')) ? $ui->id('max_updates_per_hour',255, 'post') : 0;
$max_connections_per_hour=($ui->id('max_connections_per_hour',255, 'post')) ? $ui->id('max_connections_per_hour',255, 'post') : 0;
$max_userconnections_per_hour=($ui->id('max_userconnections_per_hour',255, 'post')) ? $ui->id('max_userconnections_per_hour',255, 'post') : 0;
$query = $sql->prepare("SELECT e.`active`,e.`dbname`,AES_DECRYPT(e.`password`,?) AS `decryptedpassword`,e.`ips`,e.`max_queries_per_hour`,e.`max_updates_per_hour`,e.`max_connections_per_hour`,e.`max_userconnections_per_hour`,s.`ip`,AES_DECRYPT(s.`password`,?) AS `decryptedpassword2`,s.`port`,s.`user`,u.`cname` FROM `mysql_external_dbs` e LEFT JOIN `mysql_external_servers` s ON e.`sid`=s.`id` LEFT JOIN `userdata` u ON e.`uid`=u.`id` WHERE e.`id`=? AND e.`resellerid`=? LIMIT 1");
$query->execute(array($aeskey,$aeskey,$id,$reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$cname = $row['cname'];
$dbname = $row['dbname'];
$ip = $row['ip'];
$port = $row['port'];
$user = $row['user'];
$pwd = $row['decryptedpassword2'];
$old_active = $row['active'];
$old_ips = $row['ips'];
$old_password = $row['decryptedpassword'];
$old_max_queries_per_hour = $row['max_queries_per_hour'];
$old_max_updates_per_hour = $row['max_updates_per_hour'];
$old_max_connections_per_hour = $row['max_connections_per_hour'];
$old_max_userconnections_per_hour = $row['max_userconnections_per_hour'];
}
customColumns('D',$id,'save');
if ($active != $old_active or $old_password != $password or $old_ips != $ips or $old_max_queries_per_hour != $max_queries_per_hour or $old_max_updates_per_hour != $max_updates_per_hour or $old_max_connections_per_hour != $max_connections_per_hour or $old_max_userconnections_per_hour != $max_userconnections_per_hour) {
$remotesql=new ExternalSQL ($ip,$port,$user,$pwd);
if ($remotesql->error== 'ok') {
$max_queries_per_hour = ($ui->id('max_queries_per_hour', 255, 'post')) ? $ui->id('max_queries_per_hour', 255, 'post') : 0;
$max_updates_per_hour = ($ui->id('max_updates_per_hour', 255, 'post')) ? $ui->id('max_updates_per_hour', 255, 'post') : 0;
$max_connections_per_hour = ($ui->id('max_connections_per_hour', 255, 'post')) ? $ui->id('max_connections_per_hour', 255, 'post') : 0;
$max_userconnections_per_hour = ($ui->id('max_userconnections_per_hour', 255, 'post')) ? $ui->id('max_userconnections_per_hour', 255, 'post') : 0;
$query = $sql->prepare("SELECT e.`active`,e.`dbname`,AES_DECRYPT(e.`password`,?) AS `decryptedpassword`,e.`ips`,e.`max_queries_per_hour`,e.`max_updates_per_hour`,e.`max_connections_per_hour`,e.`max_userconnections_per_hour`,s.`ip`,AES_DECRYPT(s.`password`,?) AS `decryptedpassword2`,s.`port`,s.`user`,u.`cname` FROM `mysql_external_dbs` e LEFT JOIN `mysql_external_servers` s ON e.`sid`=s.`id` LEFT JOIN `userdata` u ON e.`uid`=u.`id` WHERE e.`id`=? AND e.`resellerid`=? LIMIT 1");
$query->execute(array($aeskey, $aeskey, $id, $reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
if ($active != $row['active'] or $row['decryptedpassword'] != $password or $row['ips'] != $ips or $row['max_queries_per_hour'] != $max_queries_per_hour or $row['max_updates_per_hour'] != $max_updates_per_hour or $row['max_connections_per_hour'] != $max_connections_per_hour or $row['max_userconnections_per_hour'] != $max_userconnections_per_hour) {
$remotesql = new ExternalSQL ($row['ip'], $row['port'], $row['user'], $row['decryptedpassword2']);
if ($remotesql->error == 'ok') {
#https://github.com/easy-wi/developer/issues/42 column description added
$query = $sql->prepare("UPDATE `mysql_external_dbs` SET `active`=?,`ips`=?,`description`=?,`password`=AES_ENCRYPT(?,?),`max_queries_per_hour`=?,`max_updates_per_hour`=?,`max_connections_per_hour`=?,`max_userconnections_per_hour`=? WHERE `id`=? AND `resellerid`=? LIMIT 1");
$query->execute(array($active, $ips, $ui->names('description', 255, 'post'), $password, $aeskey, $max_queries_per_hour, $max_updates_per_hour, $max_connections_per_hour, $max_userconnections_per_hour, $id, $reseller_id));
if ($active == 'N' and $row['active'] == 'Y') {
$password = passwordgenerate(20);
}
$remotesql->ModDB($row['dbname'], $password, $ips, $max_queries_per_hour, $max_connections_per_hour, $max_updates_per_hour, $max_userconnections_per_hour);
$loguseraction = '%mod% MySQL DB ' . $row['dbname'] . ' (' . $row['ip'] . ')';
$insertlog->execute();
$template_file = $spracheResponse->table_add;
} else {
$template_file = $remotesql->error;
}
#https://github.com/easy-wi/developer/issues/42 column description added
$query = $sql->prepare("UPDATE `mysql_external_dbs` SET `active`=?,`ips`=?,`description`=?,`password`=AES_ENCRYPT(?,?),`max_queries_per_hour`=?,`max_updates_per_hour`=?,`max_connections_per_hour`=?,`max_userconnections_per_hour`=? WHERE `id`=? AND `resellerid`=? LIMIT 1");
$query->execute(array($active,$ips,$ui->names('description',255, 'post'),$password,$aeskey,$max_queries_per_hour,$max_updates_per_hour,$max_connections_per_hour,$max_userconnections_per_hour,$id,$reseller_id));
if ($active == 'N' and $old_active == 'Y') $password=passwordgenerate(20);
$remotesql->ModDB($dbname,$password,$ips,$max_queries_per_hour,$max_connections_per_hour,$max_updates_per_hour,$max_userconnections_per_hour);
$template_file = $spracheResponse->table_add;
$loguseraction="%mod% MySQL DB $dbname ($ip)";
$insertlog->execute();
} else {
$template_file = $remotesql->error;
customColumns('D', $id, 'save');
$template_file = $spracheResponse->table_add;
}
} else {
$template_file = $spracheResponse->table_add;
}
if (!isset($template_file)) {
$template_file = 'admin_404.tpl';
}
}
} else {
$template_file = 'admin_404.tpl';
}
} else if ($ui->st('d', 'get') == 'dd' and $ui->id('id', 10, 'get') and $pa['mysql']) {
if (!$ui->st('action', 'post')) {
$id = $ui->id('id', 10, 'get');
$query = $sql->prepare("SELECT e.`dbname`,s.`ip`,u.`cname` FROM `mysql_external_dbs` e LEFT JOIN `mysql_external_servers` s ON e.`sid`=s.`id` LEFT JOIN `userdata` u ON e.`uid`=u.`id` WHERE e.`id`=? AND e.`resellerid`=? LIMIT 1");
$query->execute(array($id,$reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$ip = $row['ip'];
$dbname = $row['dbname'];
$cname = $row['cname'];
}
$template_file = (isset($cname)) ? 'admin_mysql_db_dl.tpl' : 'userpanel_404.tpl';
} else if ($ui->st('action', 'post') == 'dl') {
$id = $ui->id('id', 10, 'get');
$query = $sql->prepare("SELECT e.`sid`,e.`uid`,e.`dbname`,s.`ip`,AES_DECRYPT(s.`password`,?) AS `decryptedpassword2`,s.`port`,s.`user`,u.`cname` FROM `mysql_external_dbs` e LEFT JOIN `mysql_external_servers` s ON e.`sid`=s.`id` LEFT JOIN `userdata` u ON e.`uid`=u.`id` WHERE e.`id`=? AND e.`resellerid`=? LIMIT 1");
$query->execute(array($aeskey,$id,$reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$sid = $row['sid'];
$uid = $row['uid'];
$dbname = $row['dbname'];
$cname = $row['cname'];
$ip = $row['ip'];
$port = $row['port'];
$user = $row['user'];
$pwd = $row['decryptedpassword2'];
$remotesql=new ExternalSQL ($ip,$port,$user,$pwd);
if ($remotesql->error== 'ok') {
$remotesql->DelDB($dbname);
$remotesql->DelUser($dbname);
$query = $sql->prepare("DELETE FROM `mysql_external_dbs` WHERE `id`=? AND `resellerid`=? LIMIT 1");
$query->execute(array($id,$reseller_id));
customColumns('D',$id,'del');
$template_file = $spracheResponse->table_del;
$loguseraction="%del% MySQL DB $dbname ($ip)";
} else if ($ui->st('action', 'post') == 'rd') {
$query = $sql->prepare("SELECT e.`dbname`,e.`ips`,e.`max_queries_per_hour`,e.`max_connections_per_hour`,e.`max_updates_per_hour`,e.`max_userconnections_per_hour`,AES_DECRYPT(e.`password`,?) AS `decryptedpassword`,s.`ip`,AES_DECRYPT(s.`password`,?) AS `decryptedpassword2`,s.`port`,s.`user` FROM `mysql_external_dbs` e INNER JOIN `mysql_external_servers` s ON e.`sid`=s.`id` WHERE e.`id`=? AND e.`resellerid`=? LIMIT 1");
$query->execute(array($aeskey, $aeskey, $id, $reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$remotesql = new ExternalSQL ($row['ip'], $row['port'], $row['user'], $row['decryptedpassword2']);
if ($remotesql->error == 'ok') {
$remotesql->DelDB($row['dbname']);
$remotesql->DelUser($row['dbname']);
$remotesql->AddDB($row['dbname'], $row['decryptedpassword'], $row['ips'], $row['max_queries_per_hour'], $row['max_connections_per_hour'], $row['max_updates_per_hour'], $row['max_userconnections_per_hour']);
$loguseraction = '%ri% MYSQL DB ' . $row['dbname'] . ' (' . $row['ip'] . ')';
$insertlog->execute();
$template_file = $spracheResponse->reinstall_success;
} else {
$template_file = $remotesql->error;
}
}
if (!isset($sid)) $template_file = 'userpanel_404.tpl';
if (!isset($remotesql)) {
$template_file = 'admin_404.tpl';
}
} else {
$template_file = 'admin_404.tpl';
}
} else if ($ui->st('d', 'get') == 'dd' and $ui->id('id', 10, 'get') and $pa['mysql']) {
$id = $ui->id('id', 10, 'get');
if (!$ui->st('action', 'post')) {
$query = $sql->prepare("SELECT e.`dbname`,s.`ip`,u.`cname` FROM `mysql_external_dbs` e LEFT JOIN `mysql_external_servers` s ON e.`sid`=s.`id` LEFT JOIN `userdata` u ON e.`uid`=u.`id` WHERE e.`id`=? AND e.`resellerid`=? LIMIT 1");
$query->execute(array($id, $reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$ip = $row['ip'];
$dbname = $row['dbname'];
$cname = $row['cname'];
}
$template_file = ($query->rowCount() > 0) ? 'admin_mysql_db_dl.tpl' : 'admin_404.tpl';
} else if ($ui->st('action', 'post') == 'dl') {
$query = $sql->prepare("SELECT e.`dbname`,s.`ip`,AES_DECRYPT(s.`password`,?) AS `decryptedpassword2`,s.`port`,s.`user` FROM `mysql_external_dbs` e INNER JOIN `mysql_external_servers` s ON e.`sid`=s.`id` WHERE e.`id`=? AND e.`resellerid`=? LIMIT 1");
$query->execute(array($aeskey, $id, $reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$remotesql = new ExternalSQL ($row['ip'], $row['port'], $row['user'], $row['decryptedpassword2']);
if ($remotesql->error == 'ok') {
$remotesql->DelDB($row['dbname']);
$remotesql->DelUser($row['dbname']);
$query = $sql->prepare("DELETE FROM `mysql_external_dbs` WHERE `id`=? AND `resellerid`=? LIMIT 1");
$query->execute(array($id, $reseller_id));
customColumns('D', $id, 'del');
$loguseraction = '%del% MySQL DB ' . $row['dbname'] . ' (' . $row['ip'] .')';
$insertlog->execute();
$template_file = $spracheResponse->table_del;
} else {
$template_file = $remotesql->error;
}
}
if (!isset($remotesql)) {
$template_file = 'admin_404.tpl';
}
} else {
$template_file = 'admin_404.tpl';
}
} else if ($pa['mysql']) {
$table = array();
@ -494,7 +726,7 @@ if ($ui->w('action', 4, 'post') and !token(true)) {
}
#https://github.com/easy-wi/developer/issues/42 column description added
$query = $sql->prepare("SELECT e.`id`,e.`uid`,e.`active`,e.`dbname`,e.`description`,e.`jobPending`,e.`dbSize`,s.`ip`,s.`interface`,u.`cname`,u.`name`,u.`vname` FROM `mysql_external_dbs` e LEFT JOIN `mysql_external_servers` s ON e.`sid`=s.`id` LEFT JOIN `userdata` u ON e.`uid`=u.`id` WHERE e.`resellerid`=? ORDER BY $orderby LIMIT $start,$amount");
$query = $sql->prepare("SELECT e.`id`,e.`uid`,e.`active`,e.`dbname`,e.`description`,e.`jobPending`,e.`dbSize`,s.`ip`,s.`interface`,u.`cname`,u.`name`,u.`vname` FROM `mysql_external_dbs` e LEFT JOIN `mysql_external_servers` s ON e.`sid`=s.`id` LEFT JOIN `userdata` u ON e.`uid`=u.`id` WHERE e.`resellerid`=? ORDER BY $orderby LIMIT $start, $amount");
$query2 = $sql->prepare("SELECT `action`,`extraData` FROM `jobs` WHERE `affectedID`=? AND `resellerID`=? AND `type`='my' AND (`status` IS NULL OR `status`=1) ORDER BY `jobID` DESC LIMIT 1");
$query->execute(array($reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
@ -562,6 +794,6 @@ if ($ui->w('action', 4, 'post') and !token(true)) {
}
$i++;
}
$pages=implode(', ',$pages);
$pages=implode(', ', $pages);
$template_file = "admin_mysql_db_list.tpl";
}

View File

@ -41,6 +41,7 @@ if ((!isset($user_id) or $main != 1) or (isset($user_id) and !$pa['mysql'])) {
die;
}
include(EASYWIDIR . '/stuff/methods/class_mysql.php');
include(EASYWIDIR . '/stuff/keyphrasefile.php');
$sprache = getlanguagefile('mysql', $user_language, $reseller_id);
@ -77,18 +78,53 @@ if ($ui->w('action', 4, 'post') and !token(true)) {
$interface = $row['interface'];
$dbname = $row['dbname'];
$cname = $row['cname'];
$description = $row['description'];
$description = trim($row['description']);
$password = $row['decryptedpassword'];
}
$template_file = ($query->rowCount() > 0) ? 'userpanel_mysql_db_md.tpl' : 'userpanel_404.tpl';
$queryCount = $query->rowCount();
} else if ($ui->smallletters('action', 2, 'post') == 'md'){
if ($queryCount > 0 and $ui->st('d', 'get') == 'ri') {
$template_file = 'userpanel_mysql_db_ri.tpl';
} else if ($queryCount > 0 and $ui->st('d', 'get') != 'ri') {
$template_file = 'userpanel_mysql_db_md.tpl';
} else {
$template_file = 'userpanel_404.tpl';
}
} else if ($ui->smallletters('action', 2, 'post') == 'ri' and $ui->st('d', 'get') == 'ri'){
$query = $sql->prepare("SELECT e.`dbname`,e.`ips`,e.`max_queries_per_hour`,e.`max_connections_per_hour`,e.`max_updates_per_hour`,e.`max_userconnections_per_hour`,AES_DECRYPT(e.`password`,?) AS `decryptedpassword`,s.`ip`,AES_DECRYPT(s.`password`,?) AS `decryptedpassword2`,s.`port`,s.`user` FROM `mysql_external_dbs` e INNER JOIN `mysql_external_servers` s ON e.`sid`=s.`id` WHERE e.`id`=? AND e.`active`='Y' AND s.`active`='Y' AND e.`uid`=? AND e.`resellerid`=? LIMIT 1");
$query->execute(array($aeskey, $aeskey, $id, $user_id, $reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
$remotesql = new ExternalSQL ($row['ip'], $row['port'], $row['user'], $row['decryptedpassword2']);
if ($remotesql->error == 'ok') {
$remotesql->DelDB($row['dbname']);
$remotesql->DelUser($row['dbname']);
$remotesql->AddDB($row['dbname'], $row['decryptedpassword'], $row['ips'], $row['max_queries_per_hour'], $row['max_connections_per_hour'], $row['max_updates_per_hour'], $row['max_userconnections_per_hour']);
$loguseraction = '%ri% MYSQL DB ' . $row['dbname'] . ' (' . $row['ip'] . ')';
$insertlog->execute();
$template_file = $spracheResponse->reinstall_success;
} else {
$template_file = $remotesql->error;
}
}
if (!isset($remotesql)) {
$template_file = 'userpanel_404.tpl';
}
} else if ($ui->smallletters('action', 2, 'post') == 'md' and $ui->st('d', 'get') != 'ri'){
if ($ui->password('password', 255, 'post')) {
include(EASYWIDIR . '/stuff/methods/class_mysql.php');
$query = $sql->prepare("SELECT e.`dbname`,e.`ips`,e.`max_queries_per_hour`,e.`max_connections_per_hour`,e.`max_updates_per_hour`,e.`max_userconnections_per_hour`,s.`ip`,AES_DECRYPT(s.`password`,?) AS `decryptedpassword2`,s.`port`,s.`user` FROM `mysql_external_dbs` e INNER JOIN `mysql_external_servers` s ON e.`sid`=s.`id` WHERE e.`id`=? AND e.`active`='Y' AND s.`active`='Y' AND e.`uid`=? AND e.`resellerid`=? LIMIT 1");
$query->execute(array($aeskey, $id, $user_id, $reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
@ -99,7 +135,7 @@ if ($ui->w('action', 4, 'post') and !token(true)) {
#https://github.com/easy-wi/developer/issues/42 column description added
$query = $sql->prepare("UPDATE `mysql_external_dbs` SET `description`=?,`password`=AES_ENCRYPT(?,?),`ips`=? WHERE `id`=? AND `uid`=? AND `resellerid`=? LIMIT 1");
$query->execute(array($ui->startparameter('description', 'post'), $ui->password('password', 255, 'post'), $aeskey, $ui->ips('ips', 'post'), $id, $user_id, $reseller_id));
$query->execute(array(trim($ui->startparameter('description', 'post')), $ui->password('password', 255, 'post'), $aeskey, $ui->ips('ips', 'post'), $id, $user_id, $reseller_id));
if ($query->rowCount() > 0) {
@ -119,6 +155,10 @@ if ($ui->w('action', 4, 'post') and !token(true)) {
}
}
if (!isset($remotesql)) {
$template_file = 'userpanel_404.tpl';
}
} else {
$template_file = 'Error: ' . $sprache->password;
}
@ -135,7 +175,7 @@ if ($ui->w('action', 4, 'post') and !token(true)) {
$query->execute(array($user_id, $reseller_id));
foreach ($query->fetchall(PDO::FETCH_ASSOC) as $row) {
if (!isset($_SESSION['sID']) or in_array($row['id'], $substituteAccess['db'])) {
$table[] = array('id' => $row['id'], 'dbname' => $row['dbname'], 'dbSize' => $row['dbSize'], 'ip' => $row['ip'], 'port' => $row['port'], 'description' => $row['description'], 'interface' => $row['interface']);
$table[] = array('id' => $row['id'], 'dbname' => $row['dbname'], 'dbSize' => $row['dbSize'], 'ip' => $row['ip'], 'port' => $row['port'], 'description' => trim($row['description']), 'interface' => $row['interface']);
}
}

View File

@ -221,10 +221,10 @@
<div class="accordion-inner">
<ul class="nav nav-pills nav-stacked">
<?php if($pa['mysql']) { ?>
<li <?php if($ui->smallletters('w',255,'get')=='my' and !in_array($d,array('ms','as','ds'))) echo 'class="active"';?>><a href="admin.php?w=my"><?php echo $gsprache->databases;?></a></li>
<li <?php if($ui->smallletters('w',255,'get')=='my' and !in_array($d,array('ms','as','ds','rs'))) echo 'class="active"';?>><a href="admin.php?w=my"><?php echo $gsprache->databases;?></a></li>
<?php } ?>
<?php if($pa['mysql_settings']) { ?>
<li <?php if($ui->smallletters('w',255,'get')=='my' and in_array($d,array('ms','as','ds'))) echo 'class="active"';?>><a href="admin.php?w=my&amp;d=ms">Server</a></li>
<li <?php if($ui->smallletters('w',255,'get')=='my' and in_array($d,array('ms','as','ds','rs'))) echo 'class="active"';?>><a href="admin.php?w=my&amp;d=ms">Server</a></li>
<?php } ?>
<?php foreach ($customModules['my'] as $k => $v) { echo '<li '; echo ($ui->smallletters('w',255,'get')==$k) ? 'class="active"' : ''; echo '><a href="admin.php?w='.$k.'">'.$v.'</a></li>'; }; ?>
</ul>

View File

@ -36,7 +36,7 @@
<th data-hide="phone"><a href="admin.php?w=my&amp;d=md&amp;a=<?php if(!isset($amount)) echo "20"; else echo $amount; ?>&amp;p=<?php echo $start;?>&amp;o=<?php if ($o=='du') { echo 'au'; } else { echo 'du'; } ?>"><?php echo $gsprache->user;?></a></th>
<th data-hide="phone,tablet"><a href="admin.php?w=my&amp;d=md&amp;a=<?php if(!isset($amount)) echo "20"; else echo $amount; ?>&amp;p=<?php echo $start;?>&amp;o=<?php if ($o=='dp') { echo 'ap'; } else { echo 'dp'; } ?>">IP</a></th>
<th data-hide="phone,tablet"><a href="admin.php?w=my&amp;d=md&amp;a=<?php if(!isset($amount)) echo "20"; else echo $amount; ?>&amp;p=<?php echo $start;?>&amp;o=<?php if ($o=='aj') { echo 'dj'; } else { echo 'aj'; } ?>"><?php echo $gsprache->jobPending;?></a></th>
<th data-hide="phone,tablet"><?php echo $sprache->dbSize; ?></th>
<th><?php echo $gsprache->reinstall;?></th>
<th><?php echo $gsprache->del;?></th>
<th><?php echo $gsprache->mod;?></th>
</tr>
@ -51,9 +51,9 @@
<td><a href="switch.php?id=<?php echo $table_row['uid'];?>"><?php echo $table_row['cname'];?></a></td>
<td><a href="<?php echo $table_row['interface'];?>" target="_blank"><?php echo $table_row['ip'];?></a></td>
<td><?php echo $table_row['jobPending'];?></td>
<td><?php echo $table_row['dbSize'];?>MB</td>
<td><a href="admin.php?w=my&amp;d=dd&amp;id=<?php echo $table_row['id'];?>" ><span class="btn btn-mini btn-danger"><i class="fa fa-trash-o"></i></span></a></td>
<td><a href="admin.php?w=my&amp;d=md&amp;id=<?php echo $table_row['id'];?>" ><span class="btn btn-mini btn-primary"><i class="icon-white icon-edit"></i></span></a></td>
<td><a href="admin.php?w=my&amp;d=rd&amp;id=<?php echo $table_row['id'];?>"><span class="btn btn-mini btn-warning"><i class="fa fa-refresh"></i></span></a></td>
<td><a href="admin.php?w=my&amp;d=dd&amp;id=<?php echo $table_row['id'];?>"><span class="btn btn-mini btn-danger"><i class="fa fa-trash-o"></i></span></a></td>
<td><a href="admin.php?w=my&amp;d=md&amp;id=<?php echo $table_row['id'];?>"><span class="btn btn-mini btn-primary"><i class="icon-white icon-edit"></i></span></a></td>
</tr>
<?php } ?>
</tbody>

View File

@ -0,0 +1,38 @@
<div class="row-fluid">
<div class="span12">
<ul class="breadcrumb">
<li><a href="userpanel.php">Home</a> <span class="divider">/</span></li>
<li><a href="userpanel.php?w=my">MySQL <?php echo $gsprache->databases;?></a> <span class="divider">/</span></li>
<li><?php echo $sprache->reinstall;?> <span class="divider">/</span></li>
<li class="active"><?php echo $dbname.' ('.$ip.' )';?></li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<form class="form-horizontal" action="admin.php?w=my&amp;d=rd&amp;id=<?php echo $id;?>&amp;r=my" onsubmit="return confirm('<?php echo $gsprache->sure;?>');" method="post">
<input type="hidden" name="token" value="<?php echo token();?>">
<div class="row-fluid">
<dl class="dl-horizontal">
<dt>IP</dt>
<dd><?php echo $ip;?></dd>
<dt><?php echo $sprache->user;?></dt>
<dd><?php echo $dbname;?></dd>
<dt><?php echo $sprache->dbname;?></dt>
<dd><?php echo $dbname;?></dd>
<?php if(strlen($description)>0){ ?>
<dt><?php echo $sprache->description;?></dt>
<dd><?php echo $description;?></dd>
<?php } ?>
</dl>
</div>
<div class="control-group">
<label class="control-label" for="inputEdit"></label>
<div class="controls">
<button class="btn btn-warning" id="inputEdit" type="submit"><i class="fa fa-refresh"></i> <?php echo $sprache->reinstall;?></button>
<input type="hidden" name="action" value="rd">
</div>
</div>
</form>
</div>
</div>

View File

@ -29,11 +29,12 @@
<table class="table table-bordered table-hover table-striped footable">
<thead>
<tr>
<th data-class="expand"><a href="admin.php?w=my&amp;d=ms&amp;a=<?php if(!isset($amount)) echo "20"; else echo $amount; ?>&amp;p=<?php echo $start;?>&amp;o=<?php if ($o=='dp') { echo 'ap'; } else { echo 'dp'; } ?>">IP:<a/></th>
<th data-hide="phone,tablet"><a href="admin.php?w=my&amp;d=ms&amp;a=<?php if(!isset($amount)) echo "20"; else echo $amount; ?>&amp;p=<?php echo $start;?>&amp;o=<?php if ($o=='di') { echo 'ai'; } else { echo 'di'; } ?>">ID:<a/></th>
<th data-hide="phone"><a href="admin.php?w=my&amp;d=ms&amp;a=<?php if(!isset($amount)) echo "20"; else echo $amount; ?>&amp;p=<?php echo $start;?>&amp;o=<?php if ($o=='ds') { echo 'as'; } else { echo 'ds'; } ?>"><?php echo $gsprache->status;?>:<a/></th>
<th data-hide="phone,tablet"><a href="admin.php?w=my&amp;d=ms&amp;a=<?php if(!isset($amount)) echo "20"; else echo $amount; ?>&amp;p=<?php echo $start;?>&amp;o=<?php if ($o=='df') { echo 'af'; } else { echo 'df'; } ?>"><?php echo $sprache->interface;?>:</a></th>
<th data-hide="phone,tablet"><?php echo $sprache->usage;?>:</th>
<th data-class="expand"><a href="admin.php?w=my&amp;d=ms&amp;a=<?php if(!isset($amount)) echo "20"; else echo $amount; ?>&amp;p=<?php echo $start;?>&amp;o=<?php if ($o=='dp') { echo 'ap'; } else { echo 'dp'; } ?>">IP<a/></th>
<th data-hide="phone,tablet"><a href="admin.php?w=my&amp;d=ms&amp;a=<?php if(!isset($amount)) echo "20"; else echo $amount; ?>&amp;p=<?php echo $start;?>&amp;o=<?php if ($o=='di') { echo 'ai'; } else { echo 'di'; } ?>">ID<a/></th>
<th data-hide="phone"><a href="admin.php?w=my&amp;d=ms&amp;a=<?php if(!isset($amount)) echo "20"; else echo $amount; ?>&amp;p=<?php echo $start;?>&amp;o=<?php if ($o=='ds') { echo 'as'; } else { echo 'ds'; } ?>"><?php echo $gsprache->status;?><a/></th>
<th data-hide="phone,tablet"><a href="admin.php?w=my&amp;d=ms&amp;a=<?php if(!isset($amount)) echo "20"; else echo $amount; ?>&amp;p=<?php echo $start;?>&amp;o=<?php if ($o=='df') { echo 'af'; } else { echo 'df'; } ?>"><?php echo $sprache->interface;?></a></th>
<th data-hide="phone,tablet"><?php echo $sprache->usage;?></th>
<th><?php echo $gsprache->reinstall;?></a></th>
<th><?php echo $gsprache->del;?></th>
<th><?php echo $gsprache->mod;?></th>
</tr>
@ -53,6 +54,7 @@
<thead>
<tr>
<th><?php echo $sprache->dbname;?></th>
<th><?php echo $gsprache->reinstall;?></a></th>
<th><?php echo $gsprache->del;?></a></th>
<th><?php echo $gsprache->mod;?></a></th>
</tr>
@ -61,6 +63,7 @@
<?php foreach($table_row['server'] as $row){ ?>
<tr class="<?php if($row['status']==1) echo 'success'; else if($row['status']==2) echo 'warning'; else echo 'error';?>">
<td><?php echo $row['address'];?></td>
<td><a href="admin.php?w=my&amp;d=rd&amp;id=<?php echo $row['id'];?>" ><span class="btn btn-mini btn-warning"><i class="fa fa-refresh"></i></span></a></td>
<td><a href="admin.php?w=my&amp;d=dd&amp;id=<?php echo $row['id'];?>" ><span class="btn btn-mini btn-danger"><i class="fa fa-trash-o"></i></span></a></td>
<td><a href="admin.php?w=my&amp;d=md&amp;id=<?php echo $row['id'];?>" ><span class="btn btn-mini btn-primary"><i class="icon-white icon-edit"></i></span></a></td>
</tr>
@ -74,8 +77,9 @@
<td><i class="<?php if($table_row['active']=='Y') echo 'icon-ok'; else echo 'icon-ban-circle';?>"></i></td>
<td><a href="<?php echo $table_row['interface'];?>" target="_blank"><?php echo $table_row['interface'];?></a></td>
<td><?php echo $table_row['dbcount']."/".$table_row['max_databases'];?></td>
<td><a href="admin.php?w=my&amp;d=ds&amp;id=<?php echo $table_row['id'];?>" ><span class="btn btn-mini btn-danger"><i class="fa fa-trash-o"></i></span></a></td>
<td><a href="admin.php?w=my&amp;d=ms&amp;id=<?php echo $table_row['id'];?>" ><span class="btn btn-mini btn-primary"><i class="icon-white icon-edit"></i></span></a></td>
<td><a href="admin.php?w=my&amp;d=rs&amp;id=<?php echo $table_row['id'];?>"<span class="btn btn-mini btn-warning"><i class="fa fa-refresh"></i></span></a></td>
<td><a href="admin.php?w=my&amp;d=ds&amp;id=<?php echo $table_row['id'];?>"><span class="btn btn-mini btn-danger"><i class="fa fa-trash-o"></i></span></a></td>
<td><a href="admin.php?w=my&amp;d=ms&amp;id=<?php echo $table_row['id'];?>"><span class="btn btn-mini btn-primary"><i class="icon-white icon-edit"></i></span></a></td>
</tr>
<?php } ?>
</tbody>

View File

@ -0,0 +1,32 @@
<div class="row-fluid">
<div class="span12">
<ul class="breadcrumb">
<li><a href="admin.php">Home</a> <span class="divider">/</span></li>
<li><a href="admin.php?w=my">MySQL Server</a> <span class="divider">/</span></li>
<li><?php echo $gsprache->reinstall;?> <span class="divider">/</span></li>
<li class="active"><?php echo $ip;?></li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span6">
<form class="form-horizontal" action="admin.php?w=my&amp;d=rs&amp;id=<?php echo $id;?>&amp;r=my" onsubmit="return confirm('<?php echo $gsprache->sure; ?>');" method="post">
<input type="hidden" name="token" value="<?php echo token();?>">
<input type="hidden" name="action" value="rs">
<?php foreach($installedDbs as $k => $v){ ?>
<div class="control-group">
<label class="control-label" for="inputDB-<?php echo $k;?>"><?php echo $v;?></label>
<div class="controls">
<input id="inputDB-<?php echo $k;?>" type="checkbox" name="dbID[]" value="<?php echo $k;?>" checked="checked">
</div>
</div>
<?php } ?>
<div class="control-group">
<label class="control-label" for="inputEdit"></label>
<div class="controls">
<button class="btn btn-warning" id="inputEdit" type="submit"><i class="fa fa-refresh"></i> <?php echo $sprache->reinstall;?></button>
</div>
</div>
</form>
</div>
</div>

View File

@ -12,24 +12,24 @@
<div class="row-fluid">
<div class="span12 btn-group-vertical">
<a href="userpanel.php?w=my&amp;id=<?php echo $table_row['id'];?>"><span class="btn btn-primary btn-mini"><i class="fa fa-cog"></i> <?php echo $gsprache->settings;?></span></a>
<?php if(strlen($table_row['interface'])>0){ ?><a href="<?php echo $table_row['interface'];?>" target="_blank"><span class="btn btn-mini btn-primary"><i class="fa fa-hdd-o"></i> phpMyAdmin</span></a><?php }?>
<a href="userpanel.php?w=my&amp;d=ri&amp;id=<?php echo $table_row['id'];?>"><span class="btn btn-mini btn-warning"><i class="fa fa-refresh"></i> <?php echo $sprache->reinstall;?></span></a>
</div>
</div>
<div class="row-fluid">
<dl class="dl-horizontal">
<dt><?php echo $sprache->dbname;?></dt>
<dd><?php echo $table_row['dbname'];?></dd>
<?php if(strlen($table_row['description'])>0){ ?>
<dt><?php echo $sprache->description;?></dt>
<dd><?php echo $table_row['description'];?></dd>
<?php } ?>
<dt><?php echo $sprache->dbname;?></dt>
<dd><?php echo $table_row['dbname'];?></dd>
<dt>IP</dt>
<dd><?php echo $table_row['ip'];?></dd>
<dt>Port</dt>
<dd><?php echo $table_row['port'];?></dd>
<dt><?php echo $sprache->dbSize;?></dt>
<dd><?php echo $table_row['dbSize'];?>MB</dd>
<?php if(strlen($table_row['interface'])>0){ ?>
<dt>phpMyAdmin</dt>
<dd><a href="<?php echo $table_row['interface'];?>" target="_blank"><?php echo $table_row['interface'];?></a></dd>
<?php }?>
</dl>
</div>
</div>

View File

@ -0,0 +1,38 @@
<div class="row-fluid">
<div class="span12">
<ul class="breadcrumb">
<li><a href="userpanel.php">Home</a> <span class="divider">/</span></li>
<li><a href="userpanel.php?w=my">MySQL <?php echo $gsprache->databases;?></a> <span class="divider">/</span></li>
<li><?php echo $sprache->reinstall;?> <span class="divider">/</span></li>
<li class="active"><?php echo $dbname.' ('.$ip.' )';?></li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<form class="form-horizontal" action="userpanel.php?w=my&amp;d=ri&amp;id=<?php echo $id;?>&amp;r=my" onsubmit="return confirm('<?php echo $gsprache->sure;?>');" method="post">
<input type="hidden" name="token" value="<?php echo token();?>">
<div class="row-fluid">
<dl class="dl-horizontal">
<dt>IP</dt>
<dd><?php echo $ip;?></dd>
<dt><?php echo $sprache->user;?></dt>
<dd><?php echo $dbname;?></dd>
<dt><?php echo $sprache->dbname;?></dt>
<dd><?php echo $dbname;?></dd>
<?php if(strlen($description)>0){ ?>
<dt><?php echo $sprache->description;?></dt>
<dd><?php echo $description;?></dd>
<?php } ?>
</dl>
</div>
<div class="control-group">
<label class="control-label" for="inputEdit"></label>
<div class="controls">
<button class="btn btn-warning" id="inputEdit" type="submit"><i class="fa fa-refresh"></i> <?php echo $sprache->reinstall;?></button>
<input type="hidden" name="action" value="ri">
</div>
</div>
</form>
</div>
</div>