Unsupported scripts and control panel web app for a hosting company
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test.php 6.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?PHP
  2. require_once('lib/dashboard.php');
  3. require_once('lib/common.php');
  4. require_once('lib/account.php');
  5. if (isset($_POST['action'])) {
  6. if ($_POST['action'] == 'adduser' && isset($_POST['dbuser']) && isset($_POST['dbpass'])) {
  7. $sql = 'INSERT INTO db_users (user_id, dbuser_name) VALUES ('.UID.', \'';
  8. $sql .= USER.'_'.m($_POST['dbuser']).'\')';
  9. $res = mysql_query($sql) or mf(__FILE__, __LINE__, $sql);
  10. if (mysql_affected_rows() > 0) {
  11. //GRANT USAGE ON * . * TO 'test'@'localhost' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ;
  12. logger::log('Database user created: '.$_POST['dbuser'],logger::info);
  13. $sql = 'GRANT USAGE ON *.* to \''.USER.'_';
  14. $sql .= m($_POST['dbuser']).'\'@\'localhost\'';
  15. $sql .= ' IDENTIFIED BY \''.m($_POST['dbpass']).'\'';
  16. $sql .= ' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0';
  17. $sql .= ' MAX_UPDATES_PER_HOUR 0';
  18. $l = mysql_connect('localhost', 'root', 'mysql32159');;
  19. mysql_select_db('admin', $l);
  20. mysql_query($sql,$l) or mf(__FILE__, __LINE__, $sql);
  21. mysql_close($l);
  22. $_redodb = true; require('lib/database.php'); unset($_redodb);
  23. } else {
  24. define('MESSAGE', 'Unable to add. Please raise a ticket.');
  25. }
  26. } elseif ($_POST['action'] == 'adddb' && isset($_POST['newdb'])) {
  27. $sql = 'INSERT INTO db_dbs (user_id, db_name) VALUES ('.UID.', \'';
  28. $sql .= USER.'_'.m($_POST['newdb']).'\')';
  29. $res = mysql_query($sql) or mf(__FILE__, __LINE__, $sql);
  30. if (mysql_affected_rows() > 0) {
  31. //GRANT ALL PRIVILEGES ON `admin` . * TO 'md87'@'localhost' WITH GRANT OPTION ;
  32. logger::log('Database created: '.$_POST['newdb'], logger::info);
  33. $sql = 'CREATE DATABASE `'.USER.'_'.m($_POST['newdb']).'`';
  34. $l = mysql_connect('localhost', 'root', 'mysql32159');;
  35. mysql_select_db('admin', $l);
  36. mysql_query($sql,$l) or mf(__FILE__, __LINE__, $sql);
  37. $sql = 'GRANT ALL PRIVILEGES ON `'.USER.'_'.m($_POST['newdb']).'`.* TO \''.USER.'\'@\'localhost\'';
  38. mysql_query($sql,$l) or mf(__FILE__, __LINE__, $sql);
  39. mysql_close($l);
  40. $_redodb = true; require('lib/database.php'); unset($_redodb);
  41. } else {
  42. define('MESSAGE', 'Unable to add. Please raise a ticket.');
  43. }
  44. } elseif ($_POST['action'] == 'perms') {
  45. $sql = 'SELECT dbuser_id, dbuser_name FROM db_users WHERE user_id = '.UID;
  46. $res = mysql_query($sql) or mf(__FILE__, __LINE__, $sql);
  47. $users = array();
  48. while ($row = mysql_fetch_array($res)) {
  49. $users[($row[0])] = $row[1];
  50. }
  51. $sql = 'SELECT db_id, db_name FROM db_dbs WHERE user_id = '.UID;
  52. $res = mysql_query($sql) or mf(__FILE__, __LINE__, $sql);
  53. $dbs = array();
  54. while ($row = mysql_fetch_array($res)) {
  55. $dbs[($row[0])] = str_replace('_','\_',$row[1]);
  56. }
  57. $sql = 'SELECT db_perms.dbuser_id, db_id FROM db_perms NATURAL JOIN db_users WHERE user_id = '.UID;
  58. $res = mysql_query($sql) or mf(__FILE__, __LINE__, $sql);
  59. $perms = array();
  60. while ($row = mysql_fetch_array($res)) {
  61. if (!isset($perms[($row[0])])) { $perms[($row[0])] = array(); }
  62. $perms[($row[0])][($row[1])] = true;
  63. }
  64. $remove = $perms; $add = array();
  65. foreach ($_POST as $k => $v) {
  66. if ($v != 'on' && $v != 'checked') { continue; }
  67. $bits = explode('_', $k);
  68. if ($bits[0] != 'dbp') { continue; }
  69. if (!isset($dbs[($bits[1])])) { continue; }
  70. if (!isset($users[($bits[2])])) { continue; }
  71. if (isset($remove[($bits[2])][($bits[1])])) {
  72. unset($remove[($bits[2])][($bits[1])]);
  73. } else {
  74. if (!isset($add[($bits[2])])) { $add[($bits[2])] = array(); }
  75. $add[($bits[2])][($bits[1])] = true;
  76. }
  77. }
  78. $l = mysql_connect('localhost', 'root', 'mysql32159');;
  79. mysql_select_db('admin', $l);
  80. mysql_query($sql,$l) or mf(__FILE__, __LINE__, $sql);
  81. foreach ($remove as $user => $dat) {
  82. foreach ($dat as $db => $true) {
  83. $sql = 'DELETE FROM db_perms WHERE dbuser_id = '.$user.' AND db_id = '.$db;
  84. mysql_query($sql) or mf(__FILE__, __LINE__, $sql);
  85. $sql = 'REVOKE ALL PRIVILEGES ON `'.$dbs[$db].'`.* FROM \''.$users[$user].'\'@\'localhost\'';
  86. mysql_query($sql) or mf(__FILE__, __LINE__, $sql);
  87. logger::log('Revoked db permission: '.$users[$user].' on '.$dbs[$db],logger::info);
  88. }
  89. }
  90. foreach ($add as $user => $dat) {
  91. foreach ($dat as $db => $true) {
  92. $sql = 'INSERT INTO db_perms (dbuser_id, db_id) VALUES ('.$user.', '.$db.')';
  93. mysql_query($sql) or mf(__FILE__, __LINE__, $sql);
  94. $sql = 'GRANT ALL PRIVILEGES ON `'.$dbs[$db].'`.* TO \''.$users[$user].'\'@\'localhost\'';
  95. mysql_query($sql) or mf(__FILE__, __LINE__, $sql);
  96. logger::log('Added db permission: '.$users[$user].' on '.$dbs[$db], logger::info);
  97. }
  98. }
  99. mysql_close($l);
  100. $_redodb = true; require('lib/database.php'); unset($_redodb);
  101. header('Location: '.CP_PATH.'database');
  102. exit;
  103. }
  104. }
  105. if (isset($_POST['delete'])) {
  106. if (isset($_POST['confirm'])) {
  107. $sql = 'SELECT db_id, db_name FROM db_dbs WHERE user_id = '.UID.' AND (0';
  108. foreach ($_POST as $k => $v) {
  109. if (substr($k,0,2) == 'db' && ctype_digit(substr($k,2))) {
  110. $sql .= ' OR db_id = '.m(substr($k,2));
  111. }
  112. }
  113. $sql .= ')';
  114. $res = mysql_query($sql) or mf(__FILE__, __LINE__, $sql);
  115. $targets = array();
  116. while ($row = mysql_fetch_array($res)) {
  117. $sql = 'DELETE FROM db_perms WHERE db_id = '.$row['db_id'];
  118. mysql_query($sql) or mf(__FILE__, __LINE__, $sql);
  119. $sql = 'DELETE FROM db_dbs WHERE db_id = '.$row['db_id'];
  120. mysql_query($sql) or mf(__FILE__, __LINE__, $sql);
  121. logger::log('Deleted MySQL database: '.$row['db_name'], logger::info);
  122. $targets[] = $row['db_name'];
  123. }
  124. $l = mysql_connect('localhost', 'root', 'mysql32159');;
  125. mysql_select_db('admin', $l);
  126. foreach ($targets as $db) {
  127. $sql = 'DROP DATABASE `'.m($db).'`';
  128. mysql_query($sql,$l) or mf(__FILE__, __LINE__, $sql);
  129. }
  130. mysql_close($l);
  131. $_redodb = true; require('lib/database.php'); unset($_redodb);
  132. header('Location: '.CP_PATH.'database');
  133. exit;
  134. } else {
  135. define('MESSAGE', 'Please confirm database deletion');
  136. }
  137. }
  138. define('TITLE', 'Databases');
  139. addDashboardItem('Useful links', 'phpMyAdmin', 'phpMyAdmin');
  140. require_once('lib/header.php');
  141. require_once('pages/dbusers.php');
  142. require_once('pages/dbdbs.php');
  143. require_once('pages/dbperms.php');
  144. require_once('pages/tuttest.php');
  145. require_once('lib/footer.php');
  146. ?>