summaryrefslogtreecommitdiff
path: root/html/pages/admin
diff options
context:
space:
mode:
authorMatthijs Kuiper <info@matthijskuiper.nl>2017-02-04 16:05:45 +0100
committerMatthijs Kuiper <info@matthijskuiper.nl>2017-02-04 16:05:45 +0100
commit40dfa7d5c0dc8e4cb2c95e403b6b4b2c4bf70644 (patch)
tree6ac6279ac26749ffe7ca0ae9603fbcae2e757e6e /html/pages/admin
Original UTStats beta 4.2.84.2.8
Diffstat (limited to 'html/pages/admin')
-rwxr-xr-xhtml/pages/admin/acelog.php318
-rwxr-xr-xhtml/pages/admin/aclog.php108
-rwxr-xr-xhtml/pages/admin/check.php408
-rwxr-xr-xhtml/pages/admin/dmatch.php105
-rwxr-xr-xhtml/pages/admin/dplayer.php76
-rwxr-xr-xhtml/pages/admin/dpmatch.php106
-rwxr-xr-xhtml/pages/admin/editgames.php74
-rwxr-xr-xhtml/pages/admin/editgamestype.php228
-rwxr-xr-xhtml/pages/admin/editweapons.php58
-rwxr-xr-xhtml/pages/admin/emptydb.php62
-rwxr-xr-xhtml/pages/admin/index.htm0
-rwxr-xr-xhtml/pages/admin/ipsearch.php58
-rwxr-xr-xhtml/pages/admin/main.php117
-rwxr-xr-xhtml/pages/admin/mplayers.php91
-rwxr-xr-xhtml/pages/admin/mservers.php41
-rwxr-xr-xhtml/pages/admin/pban.php74
-rwxr-xr-xhtml/pages/admin/pinfo.php91
-rwxr-xr-xhtml/pages/admin/plm.php329
-rwxr-xr-xhtml/pages/admin/recalcflags.php72
-rwxr-xr-xhtml/pages/admin/recalcranking.php77
-rwxr-xr-xhtml/pages/admin/utdclog.php137
-rwxr-xr-xhtml/pages/admin/utdcshot.php22
22 files changed, 2652 insertions, 0 deletions
diff --git a/html/pages/admin/acelog.php b/html/pages/admin/acelog.php
new file mode 100755
index 0000000..365174a
--- /dev/null
+++ b/html/pages/admin/acelog.php
@@ -0,0 +1,318 @@
+<?php
+if (empty($import_adminkey) or isset($_REQUEST['import_adminkey']) or $import_adminkey != $adminkey) die('Access denied');
+
+$filename = (!empty($_REQUEST['filename'])) ? my_stripslashes($_REQUEST['filename']) : '';
+$filename = str_replace(array('..', '/', '\\', '<', ':'), array(), $filename);
+
+function InvertSort($curr_field, $order, $sort) {
+ if ($curr_field != $order) return(($curr_field == "time") ? "DESC" : "ASC");
+ if ($sort == 'ASC') return('DESC');
+ return('ASC');
+}
+
+function SortPic($curr_field, $order, $sort) {
+ if ($curr_field != $order) return;
+ $fname = 'images/s_'. strtolower($sort) .'.png';
+ if (!file_exists($fname)) return;
+ return('&nbsp;<img src="'. $fname .'" border="0" width="11" height="9" alt="" title="('.strtolower($sort).'ending)">');
+}
+
+// Get filter, order and set sorting
+if (isset($_GET[order])) {
+ $order = my_addslashes($_GET[order]);
+ setcookie('uts_ace_order', $_GET['order'], time()+60*60*24*30*365);
+}
+else if (isset($_COOKIE['uts_ace_order'])){
+ $order = $_REQUEST['uts_ace_order'];
+}
+else {
+ $order = "time";
+}
+
+if (isset($_GET[sort])) {
+ $sort = my_addslashes($_GET[sort]);
+ setcookie('uts_ace_sort', $_GET['sort'], time()+60*60*24*30*365);
+}
+else if (isset($_COOKIE['uts_ace_sort'])){
+ $sort = $_REQUEST['uts_ace_sort'];
+}
+else {
+ $sort = ($order == "time") ? "DESC" : "ASC";
+}
+
+if (isset($_GET[timeout])) {
+ $timeout = my_addslashes($_GET[timeout]);
+ setcookie('uts_ace_timeout', $_GET['timeout'], time()+60*60*24*30*365);
+}
+else if (isset($_COOKIE['uts_ace_timeout'])){
+ $timeout = $_REQUEST['uts_ace_timeout'];
+}
+else {
+ $timeout = 0;
+}
+
+if (isset($_GET[show])) {
+ $show = my_addslashes($_GET[show]);
+ setcookie('uts_ace_show', $_GET['show'], time()+60*60*24*30*365);
+}
+else if (isset($_COOKIE['uts_ace_show'])){
+ $show = $_REQUEST['uts_ace_show'];
+}
+else {
+ $show = "week";
+}
+
+if (!empty($filename)) {
+ if (!file_exists('logs/ace/'. $filename) or !is_file('logs/ace/'. $filename)) die('File not found');
+ if (isset($_REQUEST['del'])) {
+ unlink('logs/ace/'. $filename);
+ $filename = '';
+ }
+}
+
+if (empty($filename)) {
+ echo '
+
+ <script language = "javascript">
+
+ function timefilter() {
+ var filter = document.filter.show.value;
+ window.open("admin.php?key='.$adminkey.'&action='.$action.'&show="+filter, "_parent");
+ }
+
+ function toggletimeouts() {
+ if (document.filter.timeouts.checked == true) {
+ window.open("admin.php?key='.$adminkey.'&action='.$action.'&timeout=1", "_parent");
+ }
+ else {
+ window.open("admin.php?key='.$adminkey.'&action='.$action.'&timeout=0", "_parent");
+ }
+ }
+ </script>
+ <form name = "filter">
+ <table class = "box" border="0" cellpadding="1" cellspacing="2" width="720">
+ <tr>
+ <td class="heading" align="center" width="100%" colspan="5">Available ACE Logs:</td>
+ </tr>
+ <tr>
+ <td class="smheading" align="center" width="100%" colspan = "5">Filter:
+ <select onchange = "javascript:timefilter()" name = "show">
+ <option value = "all"'.($show == "all" ? ' selected=selected' : '').'>All</option>
+ <option value = "day"'.($show == "day" ? ' selected=selected' : '').'>Last day</option>
+ <option value = "week"'.($show == "week" ? ' selected=selected' : '').'>Last week</option>
+ <option value = "month"'.($show == "month" ? ' selected=selected' : '').'>Last month</option>
+ </select>
+ <input name = "timeouts" type = "checkbox" value = 1 onchange = "javascript:toggletimeouts()"'.($timeout == 1 ? ' checked="yes"' : '').'> Show timeouts</td>
+ </tr>
+ <tr>
+ <td class="smheading" align="center"><a class="smheading" href="admin.php?key='.$adminkey.'&amp;action='.$action.'&amp;order=time&amp;sort='.InvertSort('time', $order, $sort).'">Time</a>'.SortPic('time', $order, $sort).'</td>
+ <td class="smheading" align="center"><a class="smheading" href="admin.php?key='.$adminkey.'&amp;action='.$action.'&amp;order=name&amp;sort='.InvertSort('name', $order, $sort).'">Player Name</a>'.SortPic('name', $order, $sort).'</td>
+ <td class="smheading" align="center"><a class="smheading" href="admin.php?key='.$adminkey.'&amp;action='.$action.'&amp;order=reason&amp;sort='.InvertSort('reason', $order, $sort).'">Kick Reason</a>'.SortPic('reason', $order, $sort).'</td>
+ <td class="smheading" align="center" colspan = 2></td>
+ </tr>';
+ $logdir = opendir('logs/ace');
+ $logs = array();
+ $sortlogs = array();
+ $i = 0;
+ while (false !== ($filename = readdir($logdir))) {
+ if (!is_file('logs/ace/'. $filename)) continue;
+ if ($filename == '.htaccess' or $filename == 'index.htm') continue;
+
+ preg_match('/\d{4}\.\d{2}.\d{2}.\d{2}.\d{2}.\d{2}/', $filename, &$date);
+ $adate = preg_split('/\./', $date[0]);
+ // filter on days
+ if ($show != "all") {
+ // calculate days
+ $logAgeInDays = abs(strtotime(date("Y/m/d")) - strtotime("$adate[0]/$adate[1]/$adate[2]"))/68400-1;
+ if (($show == "day" and $logAgeInDays > 1)
+ or ($show == "week" and $logAgeInDays > 7)
+ or ($show == "month" and $logAgeInDays > 31)) {
+ continue;
+ }
+ }
+
+ $i++;
+ $TimeStamp = "unknown";
+ $PlayerName = "unknown";
+ $KickReason = "unknown";
+ if (substr($filename, strlen($filename) - strlen($import_ace_screenshot_extension)) == $import_ace_screenshot_extension
+ and substr($filename, 0, strlen($import_ace_screenshot_start)) == $import_ace_screenshot_start) {
+ // Screenshot
+ $TimeStamp = "$adate[2]-$adate[1]-$adate[0] / $adate[3]:$adate[4]:$adate[5]";
+ $PlayerName = "Unknown";
+ $KickReason = "Screenshot";
+ }
+ else {
+ // logfile
+
+ $fp = my_fopen('logs/ace/'.$filename, 'rb', $compression = NULL);
+ if (!$fp) die("Error opening file");
+
+ while (($line = my_fgets($fp, 5000, $compression)) !== FALSE) {
+ $info = preg_split('/\s/', $line, 3);
+ $info[2] = preg_replace('/[\r\n]+/', '', $info[2]);
+ if ($info[1] == "TimeStamp....:") {
+ $TimeStamp = $info[2];
+ }
+ else if ($info[1] == "PlayerName...:") {
+ $PlayerName = $info[2];
+ }
+ else if ($info[1] == "KickReason...:") {
+ $KickReason = $info[2];
+ }
+ else if ($info[1] == "RequestedBy..:") {
+ $KickReason = "Requested Screenshot";
+ }
+ else if ($info[1] == "WARNING:") {
+ $ainfo = preg_split('/\s/', $info[2]);
+ if ($ainfo[5] == "UDP") {
+ $TimeStamp = "$adate[2]-$adate[1]-$adate[0] / $adate[3]:$adate[4]:$adate[5]";
+ $PlayerName = $ainfo[1];
+ $KickReason = "Proxy/Tunnel";
+ }
+ }
+ else if ($info[2] == ": Kicked - [REASON] Timeout during check spawn") {
+ $TimeStamp = "$adate[2]-$adate[1]-$adate[0] / $adate[3]:$adate[4]:$adate[5]";
+ $PlayerName = preg_replace('/[\[\]]/', '', $info[1]);
+ $KickReason = "Timeout during check spawn";
+ }
+ }
+ my_fclose($fp, $compression);
+ }
+
+ // don't show timeout logs?
+ if (($timeout == 0)
+ and (($KickReason == "Timeout during check spawn")
+ or ($KickReason == "Timeout during checks")
+ or ($KickReason == "Timeout during initial check"))) {
+ continue;
+ }
+
+ $logs[$i] = array($filename, $TimeStamp, $PlayerName, $KickReason);
+ $extra = 0;
+ if (substr($filename, -4) == '.bz2') $extra = 4;
+ if (substr($filename, -3) == '.gz') $extra = 3;
+
+ if ($order == "time") {
+ $sortlogs[$i] = $date[0];
+ }
+ else if ($order == "name") {
+ $sortlogs[$i] = strtolower($PlayerName);
+ }
+ else if ($order == "reason") {
+ $sortlogs[$i] = strtolower($KickReason);
+ }
+ }
+ closedir($logdir);
+ if (count($logs) == 0) {
+ echo '<tr><td class="grey" colspan="5">No logs available!</td></tr>';
+ } else {
+ if ($sort == "ASC") {
+ asort($sortlogs);
+ }
+ else {
+ arsort($sortlogs);
+ }
+ $i = 0;
+ foreach($sortlogs as $id => $date) {
+ $log = $logs[$id][0];
+ if (empty($log)) {
+ continue;
+ }
+ $TimeStamp = $logs[$id][1];
+ $PlayerName = $logs[$id][2];
+ $KickReason = $logs[$id][3];
+ $Screenshot = $logs[$id][4];
+ $extra = 0;
+ if (substr($log, -4) == '.bz2') $extra = 4;
+ if (substr($log, -3) == '.gz') $extra = 3;
+
+ $i++;
+ $class = ($i%2) ? 'grey' : 'grey2';
+ echo '<tr><td class="'.$class.'">';
+ $tmp = substr($log, strlen($log) - (23 + $extra), 19);
+ $tmp = str_replace('.', '', $tmp);
+ // $ts = mtimestamp($tmp);
+ echo ' <a class="'.$class.'" href="admin.php?key='.$adminkey.'&amp;action='.$action.'&amp;filename='.urlencode($log).'">'.$TimeStamp.'</a>';
+ echo '</td><td class="'.$class.'">';
+ echo '<a class="'.$class.'" href="admin.php?key='.$adminkey.'&amp;action='.$action.'&amp;filename='.urlencode($log).'">'.$PlayerName.'</a>';
+ echo '</td><td class="'.$class.'">';
+ echo '<a class="'.$class.'" href="admin.php?key='.$adminkey.'&amp;action='.$action.'&amp;filename='.urlencode($log).'">'.$KickReason.'</a>';
+ echo '</td><td class="'.$class.'" align="right">';
+ $d_size = file_size_info(filesize('logs/ace/'. $log));
+ echo $d_size['size'] .' '. $d_size['type'];
+ echo '</td><td class="'.$class.'" align="center">';
+ echo '<a href="admin.php?key='.$adminkey.'&amp;action='.$action.'&amp;filename='.urlencode($log).'&amp;del=1"><img src="images/del.png" border="0" width="16" height="16" title="Delete" alt="Delete" /></a>';
+ echo '</td></tr>';
+ }
+ }
+ echo '</form>';
+}
+
+
+if (!empty($filename)) {
+ if (!file_exists('logs/ace/'. $filename) or !is_file('logs/ace/'. $filename)) die('File not found (2)');
+ echo'<br><table class = "box" border="0" cellpadding="1" cellspacing="2" width="720">
+ <tr>
+ <td class="smheading" align="center" width="95%" colspan="4">'.$filename.'</td>
+ <td class="smheading" align="center" width="5%" align="right">';
+ echo '<a href="admin.php?key='.$adminkey.'&amp;action='.$action.'&amp;filename='.urlencode($filename).'&amp;del=1"><img src="images/del.png" border="0" width="16" height="16" title="Delete" alt="Delete" /></a>';
+ echo '</td>
+ </tr>';
+ if (substr($filename, strlen($filename) - strlen($import_ace_screenshot_extension)) == $import_ace_screenshot_extension
+ and substr($filename, 0, strlen($import_ace_screenshot_start)) == $import_ace_screenshot_start) {
+ // screenshot
+ echo '<tr><td class="grey" colspan="5"><span style="font-family: monospace;">';
+ echo '<a href = "logs/ace/'.preg_replace('/\+/', '%20', urlencode($filename)).'" target = "_blank"><img src = "logs/ace/'.preg_replace('/\+/', '%20', urlencode($filename)).'" width = 100% border = 0></a>';
+ echo '</span></td></tr>';
+ }
+ else {
+ $fp = my_fopen('logs/ace/'.$filename, 'rb', $compression = NULL);
+ if (!$fp) die("Error opening file");
+
+ $i = 0;
+ echo '<tr><td class="grey" colspan="5"><span style="font-family: monospace;">';
+
+ while (($line = my_fgets($fp, 5000, $compression)) !== FALSE) {
+ /*
+ $i++;
+ $class = ($i%2) ? 'grey' : 'grey2';
+ echo '<tr><td class="'.$class.'" colspan="4">';
+ echo '<span style="font-family: monospace;">';
+ echo htmlentities($line);
+ echo '</span>';
+ echo '</td></tr>';
+ */
+ echo wordwrap(htmlentities($line), 80, '<br />', 1) ."<br />";
+ $info = preg_split('/\s/', $line, 3);
+ $info[2] = preg_replace('/[\r\n]/', '', $info[2]);
+ if ($info[1] == "FileName.....:") {
+ $Screenshot = basename($info[2]);
+ }
+
+ }
+ echo '</span></td></tr>';
+ my_fclose($fp, $compression);
+
+ // look for a matching ace screenshot
+ if (isset($Screenshot) and file_exists('logs/ace/' . $Screenshot)) {
+ echo '<tr>
+ <td class="smheading" align="center" width="95%" colspan="4">'.$Screenshot.'</td>
+ <td class="smheading" align="center" width="5%" align="right">';
+ echo '<a href="admin.php?key='.$adminkey.'&amp;action='.$action.'&amp;filename='.preg_replace('/\+/', '%20', urlencode($Screenshot)).'&amp;del=1"><img src="images/del.png" border="0" width="16" height="16" title="Delete" alt="Delete" /></a>';
+ echo '</td>
+ </tr>';
+
+ echo '<tr><td class="grey" colspan="5"><span style="font-family: monospace;">';
+ echo '<a href = "logs/ace/'.preg_replace('/\+/', '%20', urlencode($Screenshot)).'" target = "_blank"><img src = "logs/ace/'.preg_replace('/\+/', '%20', urlencode($Screenshot)).'" width = 100% border = 0></a>';
+ echo '</span></td></tr>';
+ }
+ }
+}
+
+echo '</tr>';
+if (!empty($filename)) echo'<tr><td class="smheading" align="center" colspan="5"><a class="grey" href="./admin.php?key='.$_REQUEST[key].'&amp;action='.$action.'">Go Back To Logfile Overview</a></td></tr>';
+echo'<tr><td class="smheading" align="center" colspan="5"><a class="grey" href="./admin.php?key='.$_REQUEST[key].'">Go Back To Admin Page</a></td></tr>';
+echo '</table>';
+
+?>
diff --git a/html/pages/admin/aclog.php b/html/pages/admin/aclog.php
new file mode 100755
index 0000000..ada35c8
--- /dev/null
+++ b/html/pages/admin/aclog.php
@@ -0,0 +1,108 @@
+<?php
+if (empty($import_adminkey) or isset($_REQUEST['import_adminkey']) or $import_adminkey != $adminkey) die('bla');
+
+$filename = (!empty($_REQUEST['filename'])) ? my_stripslashes($_REQUEST['filename']) : '';
+$filename = str_replace(array('..', '/', '\\', '<', ':'), array(), $filename);
+
+
+if (!empty($filename)) {
+ if (!file_exists('logs/ac/'. $filename) or !is_file('logs/ac/'. $filename)) die('bla');
+ if (isset($_REQUEST['del'])) {
+ unlink('logs/ac/'. $filename);
+ $filename = '';
+ }
+}
+
+
+
+
+if (empty($filename)) {
+ echo'<br><table border="0" cellpadding="1" cellspacing="2" width="600">
+ <tr>
+ <td class="smheading" align="center" width="100%" colspan="4">Available AnthChecker Logs:</td>
+ </tr>';
+ $logdir = opendir('logs/ac');
+ $logs = array();
+ $sort = array();
+ $i = 0;
+ while (false !== ($filename = readdir($logdir))) {
+ if (!is_file('logs/ac/'. $filename)) continue;
+ if ($filename == '.htaccess' or $filename == 'index.htm') continue;
+ $i++;
+ $logs[$i] = $filename;
+ $extra = 0;
+ if (substr($filename, -4) == '.bz2') $extra = 4;
+ if (substr($filename, -3) == '.gz') $extra = 3;
+
+ $sort[$i] = substr($filename, strlen($filename) - (23 + $extra), 19);
+ }
+ closedir($logdir);
+ if (count($logs) == 0) {
+ echo '<tr><td class="grey" colspan="4">No logs available!</td></tr>';
+ } else {
+ arsort($sort);
+ $i = 0;
+ foreach($sort as $id => $date) {
+ $log = $logs[$id];
+ $extra = 0;
+ if (substr($log, -4) == '.bz2') $extra = 4;
+ if (substr($log, -3) == '.gz') $extra = 3;
+
+ $i++;
+ $class = ($i%2) ? 'grey' : 'grey2';
+ echo '<tr><td class="'.$class.'">';
+ $tmp = substr($log, strlen($log) - (23 + $extra), 19);
+ $tmp = str_replace('.', '', $tmp);
+ $ts = mtimestamp($tmp);
+ echo ' <a class="'.$class.'" href="admin.php?key='.$adminkey.'&amp;action='.$action.'&amp;filename='.urlencode($log).'">'.date('Y-m-d H:i', $ts).'</a>';
+ echo '</td><td class="'.$class.'">';
+ echo '<a class="'.$class.'" href="admin.php?key='.$adminkey.'&amp;action='.$action.'&amp;filename='.urlencode($log).'">'.substr($log, 6, strlen($log) - 30 - $extra).'</a>';
+ echo '</td><td class="'.$class.'" align="right">';
+ $d_size = file_size_info(filesize('logs/ac/'. $log));
+ echo $d_size['size'] .' '. $d_size['type'];
+ echo '</td><td class="'.$class.'" align="center">';
+ echo '<a href="admin.php?key='.$adminkey.'&amp;action='.$action.'&amp;filename='.urlencode($log).'&amp;del=1"><img src="images/del.png" border="0" width="16" height="16" title="Delete" alt="Delete" /></a>';
+ echo '</td></tr>';
+ }
+ }
+}
+
+
+if (!empty($filename)) {
+ if (!file_exists('logs/ac/'. $filename) or !is_file('logs/ac/'. $filename)) die('bla');
+ echo'<br><table border="0" cellpadding="1" cellspacing="2" width="600">
+ <tr>
+ <td class="smheading" align="center" width="95%" colspan="3">'.$filename.'</td>
+ <td class="smheading" align="center" width="5%" align="right">';
+ echo '<a href="admin.php?key='.$adminkey.'&amp;action='.$action.'&amp;filename='.urlencode($filename).'&amp;del=1"><img src="images/del.png" border="0" width="16" height="16" title="Delete" alt="Delete" /></a>';
+ echo '</td>
+ </tr>';
+
+ $fp = my_fopen('logs/ac/'.$filename, 'rb', $compression = NULL);
+ if (!$fp) die("Error opening file");
+
+ $i = 0;
+ echo '<tr><td class="grey" colspan="4"><span style="font-family: monospace;">';
+
+ while (($line = my_fgets($fp, 5000, $compression)) !== FALSE) {
+ /*
+ $i++;
+ $class = ($i%2) ? 'grey' : 'grey2';
+ echo '<tr><td class="'.$class.'" colspan="4">';
+ echo '<span style="font-family: monospace;">';
+ echo htmlentities($line);
+ echo '</span>';
+ echo '</td></tr>';
+ */
+ echo wordwrap(htmlentities($line), 80, '<br />', 1) ."<br />";
+ }
+ echo '</span></td></tr>';
+ my_fclose($fp, $compression);
+}
+
+echo '</tr>';
+if (!empty($filename)) echo'<tr><td class="smheading" align="center" colspan="4"><a class="grey" href="./admin.php?key='.$_REQUEST[key].'&amp;action='.$action.'">Go Back To Logfile Overview</a></td></tr>';
+echo'<tr><td class="smheading" align="center" colspan="4"><a class="grey" href="./admin.php?key='.$_REQUEST[key].'">Go Back To Admin Page</a></td></tr>';
+echo '</table>';
+
+?>
diff --git a/html/pages/admin/check.php b/html/pages/admin/check.php
new file mode 100755
index 0000000..a03bf91
--- /dev/null
+++ b/html/pages/admin/check.php
@@ -0,0 +1,408 @@
+<?php
+if (empty($import_adminkey) or isset($_REQUEST['import_adminkey']) or $import_adminkey != $adminkey) die('bla');
+
+echo '
+ <center>
+ <table class = "box" border="0" cellpadding="1" cellspacing="2" width="720">
+ <tbody><tr>
+ <td class="heading" align="center" colspan="2">Server configuration check</td>
+ </tr></tbody></table><br>';
+
+// Check access rights
+echo '
+ <table class="box" border="0" cellpadding="1" cellspacing="2">
+ <tr>
+ <td class="smheading" align="center" height="25" width="550" colspan="2">Checking access rights</td>
+ </tr>';
+
+// directories
+foreach (array("logs", "logs/ac", "logs/backup", "logs/utdc", "logs/ace") as $dir)
+{
+ echo '
+ <tr>
+ <td class="smheading" align="left" width="350">', $dir, '</td>';
+ if (!file_exists($dir)) {
+ if (mkdir($dir, 0777)) {
+ echo '
+ <td class="warn" align="left" width="200">Created</td></tr>';
+ }
+ else {
+ echo '
+ <td class="warn" align="left" width="200">Not found!</td></tr>';
+ }
+ }
+ else if (!is_dir($dir)) {
+ echo '
+ <td class="warn" align="left" width="200">Not a directory!</td></tr>';
+ }
+ else if (!is_writable($dir)) {
+ if (@chmod($dir, 0777)) {
+ echo '
+ <td class="grey" align="left" width="200">SET</td></tr>';
+ }
+ else {
+ echo '
+ <td class="warn" align="left" width="200">Incorrect access rights: ' , substr(sprintf('%o', fileperms($dir)), -4) , '</td></tr>';
+ }
+ }
+ else {
+ echo '
+ <td class="grey" align="left" width="200">OK</td></tr>';
+ }
+}
+
+// files:
+foreach (array("includes/ftptimestamp.php") as $file)
+{
+ echo '
+ <tr>
+ <td class="smheading" align="left" width="350">', $file, '</td>';
+ if (!file_exists($file)) {
+ echo '
+ <td class="warn" align="left" width="200">Not found!</td></tr>';
+ }
+ else if (!is_file($file)) {
+ echo '
+ <td class="warn" align="left" width="200">Not a file!</td></tr>';
+ }
+ else if (!is_writable($file)) {
+ if (@chmod($file, 0777)) {
+ echo '
+ <td class="grey" align="left" width="200">SET</td></tr>';
+ }
+ else {
+ echo '
+ <td class="warn" align="left" width="200">Incorrect access rights: ' , substr(sprintf('%o', fileperms($file)), -4) , '</td></tr>';
+ }
+ }
+ else {
+ echo '
+ <td class="grey" align="left" width="200">OK</td></tr>';
+ }
+}
+
+echo '
+ </tbody></table>
+<div class="opnote">* Might not work correctly on Windows systems *</div><br>';
+
+
+// connect to the database and check structure
+echo '
+ <table class="box" border="0" cellpadding="1" cellspacing="2">
+ <tr>
+ <td class="smheading" align="center" height="25" width="550" colspan="2">Checking mysql tables</td>
+ </tr>';
+
+// database creation array
+// to add a database simply add $create_table['dbname'] = "database creation sql"
+$create_table['uts_events'] = "
+CREATE TABLE `uts_events` (
+ `id` mediumint(10) NOT NULL auto_increment,
+ `matchid` mediumint(10) NOT NULL default '0',
+ `playerid` tinyint(3) NOT NULL default '0',
+ `col0` varchar(20) NOT NULL default '',
+ `col1` varchar(120) NOT NULL default '',
+ `col2` varchar(120) NOT NULL default '',
+ `col3` varchar(120) NOT NULL default '',
+ `col4` varchar(120) NOT NULL default '',
+ PRIMARY KEY (`id`)
+);
+";
+
+$create_table['uts_games'] = "
+CREATE TABLE `uts_games` (
+ `id` tinyint(3) unsigned NOT NULL auto_increment,
+ `gamename` varchar(100) NOT NULL default '',
+ `name` varchar(100) NOT NULL default '',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM AUTO_INCREMENT=9 ;
+";
+
+$create_table['uts_gamestype'] = "
+CREATE TABLE `uts_gamestype` (
+ `id` smallint(5) unsigned NOT NULL auto_increment,
+ `serverip` varchar(21) NOT NULL default '',
+ `gamename` varchar(100) NOT NULL default '',
+ `mutator` varchar(100) NOT NULL default '',
+ `gid` tinyint(3) unsigned NOT NULL default '0',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM;
+";
+
+$create_table['uts_ignoreips'] = "
+CREATE TABLE IF NOT EXISTS `uts_ignoreips` (
+ `ip` bigint(15) NOT NULL default '0',
+ PRIMARY KEY (`ip`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+";
+
+$create_table['uts_killsmatrix'] = "
+CREATE TABLE `uts_killsmatrix` (
+ `matchid` mediumint(8) unsigned NOT NULL default '0',
+ `killer` tinyint(4) NOT NULL default '0',
+ `victim` tinyint(4) NOT NULL default '0',
+ `kills` tinyint(3) unsigned NOT NULL default '0',
+ KEY `matchid` (`matchid`)
+) ENGINE=MyISAM;
+";
+
+$create_table['uts_match'] = "
+CREATE TABLE `uts_match` (
+ `id` mediumint(10) NOT NULL auto_increment,
+ `time` varchar(14) default NULL,
+ `servername` varchar(100) NOT NULL default '',
+ `serverip` varchar(21) NOT NULL default '0',
+ `gamename` varchar(100) NOT NULL default '0',
+ `gid` tinyint(3) unsigned NOT NULL default '0',
+ `gametime` float NOT NULL default '0',
+ `mutators` longtext NOT NULL,
+ `insta` tinyint(1) NOT NULL default '0',
+ `tournament` varchar(5) NOT NULL default '',
+ `teamgame` varchar(5) NOT NULL default '',
+ `mapname` varchar(100) NOT NULL default '',
+ `mapfile` varchar(100) NOT NULL default '',
+ `serverinfo` mediumtext NOT NULL,
+ `gameinfo` mediumtext NOT NULL,
+ `firstblood` int(10) unsigned NOT NULL default '0',
+ `frags` mediumint(5) NOT NULL default '0',
+ `deaths` mediumint(5) NOT NULL default '0',
+ `kills` mediumint(5) NOT NULL default '0',
+ `suicides` mediumint(5) NOT NULL default '0',
+ `teamkills` mediumint(5) NOT NULL default '0',
+ `assaultid` varchar(10) NOT NULL default '',
+ `ass_att` tinyint(1) NOT NULL default '0',
+ `ass_win` tinyint(4) NOT NULL default '0',
+ `t0` tinyint(1) NOT NULL default '0',
+ `t1` tinyint(1) NOT NULL default '0',
+ `t2` tinyint(1) NOT NULL default '0',
+ `t3` tinyint(1) NOT NULL default '0',
+ `t0score` mediumint(5) NOT NULL default '0',
+ `t1score` mediumint(5) NOT NULL default '0',
+ `t2score` mediumint(5) NOT NULL default '0',
+ `t3score` mediumint(5) NOT NULL default '0',
+ PRIMARY KEY (`id`),
+ KEY `serverip` (`serverip`)
+) ENGINE=MyISAM AUTO_INCREMENT=83 ;
+";
+
+$create_table['uts_pinfo'] = "
+CREATE TABLE `uts_pinfo` (
+ `id` int(10) unsigned NOT NULL auto_increment,
+ `name` varchar(50) NOT NULL default '',
+ `country` char(2) NOT NULL default '',
+ `banned` enum('Y','N') NOT NULL default 'N',
+ PRIMARY KEY (`id`),
+ KEY `name` (`name`(22))
+) ENGINE=MyISAM AUTO_INCREMENT=136 ;
+";
+
+$create_table['uts_player'] = "
+CREATE TABLE `uts_player` (
+ `id` mediumint(10) NOT NULL auto_increment,
+ `matchid` mediumint(10) NOT NULL default '0',
+ `insta` tinyint(1) NOT NULL default '0',
+ `playerid` tinyint(3) NOT NULL default '0',
+ `pid` int(10) unsigned NOT NULL default '0',
+ `team` tinyint(2) unsigned NOT NULL default '0',
+ `isabot` tinyint(1) NOT NULL default '0',
+ `country` char(2) NOT NULL default '',
+ `ip` int(10) unsigned NOT NULL default '0',
+ `gid` tinyint(3) unsigned NOT NULL default '0',
+ `gametime` float NOT NULL default '0',
+ `gamescore` smallint(5) NOT NULL default '0',
+ `lowping` smallint(5) unsigned NOT NULL default '0',
+ `highping` smallint(5) unsigned NOT NULL default '0',
+ `avgping` smallint(5) unsigned NOT NULL default '0',
+ `frags` smallint(5) NOT NULL default '0',
+ `deaths` smallint(5) unsigned NOT NULL default '0',
+ `kills` smallint(5) unsigned NOT NULL default '0',
+ `suicides` smallint(5) unsigned NOT NULL default '0',
+ `teamkills` smallint(5) unsigned NOT NULL default '0',
+ `eff` float NOT NULL default '0',
+ `accuracy` float NOT NULL default '0',
+ `ttl` float NOT NULL default '0',
+ `flag_taken` smallint(5) unsigned NOT NULL default '0',
+ `flag_dropped` smallint(5) unsigned NOT NULL default '0',
+ `flag_return` smallint(5) unsigned NOT NULL default '0',
+ `flag_capture` tinyint(3) unsigned NOT NULL default '0',
+ `flag_cover` smallint(5) unsigned NOT NULL default '0',
+ `flag_seal` smallint(5) unsigned NOT NULL default '0',
+ `flag_assist` smallint(5) unsigned NOT NULL default '0',
+ `flag_kill` mediumint(5) unsigned NOT NULL default '0',
+ `flag_pickedup` smallint(5) unsigned NOT NULL default '0',
+ `dom_cp` smallint(5) unsigned NOT NULL default '0',
+ `ass_obj` smallint(5) unsigned NOT NULL default '0',
+ `spree_double` smallint(5) unsigned NOT NULL default '0',
+ `spree_triple` smallint(5) unsigned NOT NULL default '0',
+ `spree_multi` smallint(5) unsigned NOT NULL default '0',
+ `spree_mega` tinyint(3) unsigned NOT NULL default '0',
+ `spree_ultra` tinyint(3) unsigned NOT NULL default '0',
+ `spree_monster` tinyint(3) unsigned NOT NULL default '0',
+ `spree_kill` smallint(5) unsigned NOT NULL default '0',
+ `spree_rampage` smallint(5) unsigned NOT NULL default '0',
+ `spree_dom` tinyint(3) unsigned NOT NULL default '0',
+ `spree_uns` tinyint(3) unsigned NOT NULL default '0',
+ `spree_god` smallint(5) unsigned NOT NULL default '0',
+ `pu_pads` tinyint(3) unsigned NOT NULL default '0',
+ `pu_armour` tinyint(3) unsigned NOT NULL default '0',
+ `pu_keg` tinyint(3) unsigned NOT NULL default '0',
+ `pu_invis` tinyint(3) unsigned NOT NULL default '0',
+ `pu_belt` tinyint(3) unsigned NOT NULL default '0',
+ `pu_amp` tinyint(3) unsigned NOT NULL default '0',
+ `rank` float NOT NULL default '0',
+ PRIMARY KEY (`id`),
+ KEY `matchid` (`matchid`,`team`),
+ KEY `pid` (`pid`),
+ KEY `gid` (`gid`)
+) ENGINE=MyISAM AUTO_INCREMENT=615 ;
+";
+
+$create_table['uts_rank'] = "
+CREATE TABLE `uts_rank` (
+ `id` mediumint(10) NOT NULL auto_increment,
+ `time` float unsigned NOT NULL default '0',
+ `pid` int(10) unsigned NOT NULL default '0',
+ `gid` tinyint(3) unsigned NOT NULL default '0',
+ `rank` float NOT NULL default '0',
+ `prevrank` float NOT NULL default '0',
+ `matches` mediumint(5) NOT NULL default '0',
+ PRIMARY KEY (`id`),
+ KEY `name` (`pid`,`gid`),
+ KEY `rank` (`rank`),
+ KEY `gamename` (`gid`,`rank`)
+) ENGINE=MyISAM AUTO_INCREMENT=173 ;
+";
+
+$create_table['uts_weapons'] = "
+CREATE TABLE `uts_weapons` (
+ `id` tinyint(3) unsigned NOT NULL auto_increment,
+ `name` varchar(100) NOT NULL default '',
+ `image` varchar(50) NOT NULL default '',
+ `sequence` tinyint(3) unsigned NOT NULL default '200',
+ `hide` enum('N','Y') NOT NULL default 'N',
+ PRIMARY KEY (`id`),
+ KEY `name` (`name`(20))
+) ENGINE=MyISAM AUTO_INCREMENT=20 ;
+";
+
+$create_table['uts_weaponstats'] = "
+CREATE TABLE `uts_weaponstats` (
+ `matchid` mediumint(8) unsigned NOT NULL default '0',
+ `pid` int(10) unsigned NOT NULL default '0',
+ `weapon` tinyint(3) unsigned NOT NULL default '0',
+ `kills` mediumint(8) unsigned NOT NULL default '0',
+ `shots` int(10) unsigned NOT NULL default '0',
+ `hits` int(10) unsigned NOT NULL default '0',
+ `damage` int(10) unsigned NOT NULL default '0',
+ `acc` float unsigned NOT NULL default '0',
+ KEY `full` (`matchid`,`pid`)
+) ENGINE=MyISAM;
+";
+
+foreach ($create_table as $table => $query) {
+ echo '
+ <tr>
+ <td class="smheading" align="left" width="350">', $table, '</td>';
+ if (small_count("SHOW TABLES LIKE '$table'") == 1) {
+ // database exists, check columns
+ echo '
+ <td class="grey" align="left" width="200">OK</td></tr>';
+ }
+ else {
+ if (mysql_query($query)) {
+ echo '
+ <td class="grey" align="left" width="200">Created</td></tr>';
+ }
+ else {
+ echo '
+ <td class="warn" align="left" width="200">Not found!</td></tr>';
+ }
+ }
+}
+echo '
+ </tbody></table><br>';
+
+// Check the weapons
+$create_weapon['Translocator'] = "INSERT INTO `uts_weapons` VALUES (1, 'Translocator', 'trans.jpg', 1, 'N');";
+$create_weapon['Impact Hammer'] = "INSERT INTO `uts_weapons` VALUES (2, 'Impact Hammer', 'impact.jpg', 2, 'N');";
+$create_weapon['Enforcer'] = "INSERT INTO `uts_weapons` VALUES (3, 'Enforcer', 'enforcer.jpg', 3, 'N');";
+$create_weapon['Double Enforcer'] = "INSERT INTO `uts_weapons` VALUES (4, 'Double Enforcer', 'enforcer2.jpg', 4, 'N');";
+$create_weapon['GES Bio Rifle'] = "INSERT INTO `uts_weapons` VALUES (5, 'GES Bio Rifle', 'bio.jpg', 5, 'N');";
+$create_weapon['Ripper'] = "INSERT INTO `uts_weapons` VALUES (6, 'Ripper', 'ripper.jpg', 6, 'N');";
+$create_weapon['Shock Rifle'] = "INSERT INTO `uts_weapons` VALUES (7, 'Shock Rifle', 'shock.jpg', 7, 'N');";
+$create_weapon['Enhanced Shock Rifle'] = "INSERT INTO `uts_weapons` VALUES (8, 'Enhanced Shock Rifle', 'ishock.jpg', 8, 'N');";
+$create_weapon['Pulse Gun'] = "INSERT INTO `uts_w