Wednesday, June 03, 2026 11:06:36 PM
> index.php
<!--
	Bryan
	Exile Server Manager
-->
<?php
	session_start();
	if(!isset($_SESSION['steamid']))
	{
		header("location:login/index.php");
	}
	else
	{
		require 'updateServers.php';
		include ('steamauth/userInfo.php');
	}
?>
<!DOCTYPE html>
<html lang="en">
	<head>
		<title>Exile Server Manager</title>
		<link rel="icon" href="<?= COMMUNITY_LOGO ?>">
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
		<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
		<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
		<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
		<script src="js/jquery.toast.min.js"></script>
		<link href="css/jquery.toast.min.css" rel="stylesheet">
		<link rel="stylesheet" href="css/font-awesome.min.css">
		<link rel="stylesheet/less" type="text/css" href="css/styles.less" />
		<script src="//cdnjs.cloudflare.com/ajax/libs/less.js/2.7.2/less.min.js"></script>
		<script>const PLAYER_UID = "<?= $steamID = $steamprofile['steamid'] ?>"; </script>
		<script src="js/loader.js"></script>
		<script src="js/util.js"></script>
		<script src="js/functions.js"></script>
	</head>
	<body id="page_main">
		<!-- Top Navigation Menu -->
		<nav class="navbar navbar-inverse navbar-fixed-top navigation" role="navigation">
			<!-- Community logo and name -->
			<div class="navbar-header">
				<a class="navbar-brand" href="index.php">
					<span><img class="navigation-logo" src="<?= COMMUNITY_LOGO ?>"></span>
					<div class="community-title"><?= COMMUNITY_NAME?></div>
				</a>
				<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#id_Navbar">
				<span class="icon-bar"></span>
				<span class="icon-bar"></span>
				<span class="icon-bar"></span>
				</button>
			</div>
			<!-- Username with dropdown -->
			<div class="collapse navbar-collapse" id="id_Navbar">
				<ul class="nav navbar-nav navbar-right">
					<li class="dropdown">
						<a class="dropdown-toggle drop-username fake-link" data-toggle="dropdown"><?= $steamprofile['personaname']?><span class="caret"></span></a>
						<ul class="dropdown-menu drop-user-menu">
							<li><a href="logout.php">Log Out</a></li>
						</ul>
					</li>
				</ul>
			</div>
		</nav>
		<!-- Top Navigation Menu -->
		<!-- Main Container -->
		<div class="container-fluid">
			<div id="canvasloader-container" class="wrapper"></div>
			<div class="side-bar-arrow" id="btn_ToggleSideBar"><i id="ico_SideBar" class="fa fa-chevron-right fa-2x"></i></div>
			<!-- Side Bar Menu -->
			<div class="col-md-2 sidebar" id="id_SideBar">
				<!-- Connected servers title and add a server button -->
				<div class="row">
					<div class="col-md-12">
						<h3>
						Available Servers
						<i class="fa fa-refresh fa-fw fake-link" aria-hidden="true" onClick="refreshServers(this)"></i>
						</h3>
					</div>
				</div>
				<div class="sidenav-servers" id="id_ServerContainer">
					<?php
						if (count($SERVERS) > 0):
							foreach($SERVERS as $k => $v):
								$steamID = $steamprofile['steamid'];
								$dbSchema = $SERVERS[$k]["database_schema"];
								$pExists = false;
								$tExists = false;

								// Make sure the database schema exists
								$check = mysqli_query($exile_db, "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$dbSchema'");
								$dbExists = (mysqli_num_rows($check) > 0);

								// If we have a database schema, continue
								if ($dbExists)
								{
									// Check if we have an account
									$result = mysqli_query($exile_db, "SELECT uid FROM $dbSchema.account WHERE uid = '$steamID'");
									$aExists = (mysqli_num_rows($result) > 0);

									// Check if we have a player spawned
									$result = mysqli_query($exile_db, "SELECT thirst FROM $dbSchema.player WHERE account_uid = '$steamID'");
									$pExists = (mysqli_num_rows($result) > 0);

									// Check to see if we have a manageable territory
									$result = mysqli_query($exile_db, "SELECT t.id FROM $dbSchema.territory t WHERE t.owner_uid = '$steamID' OR t.moderators LIKE '%$steamID%'");
									$tExists = (mysqli_num_rows($result) > 0);
								}

					?>
					<div class="row">
						<div class="col-md-11 server">
							<div class="panel">
								<!-- Server Title -->
								<h4 class="fake-link" data-toggle="collapse" data-parent="#id_ServerContainer" href="<?= $SERVERS[$k]["status"] == 1 ? '#collapse' . $k : '' ?>" data-toggle="tooltip" title="<?= $SERVERS[$k]["name"] ?>"><?= $SERVERS[$k]["name"] ?></h4>
								<!-- Server Info -->
								<div class="server-info">
									Status: <?= $SERVERS[$k]["status"] == 1 ? "<span style='color: #B2EC00;'>Online</span>" : "<span style='color: #EA0000;'>Offline</span>"; ?>
									<br>IP Address: <?= $SERVERS[$k]["ip"] . ":" . $SERVERS[$k]["port"] ?>
									<br> Online Players: <?= $SERVERS[$k]["online_players"] . "/" . $SERVERS[$k]["max_players"] ?>
								</div>
								<?php
									if ($SERVERS[$k]["status"] == 1):
								?>
								<!-- Server Options -->
								<div id="collapse<?=$k?>" class="collapse">
									<ul>
										<h5 class="fake-link" data-toggle="modal" data-target="#server_information" data-serverinfo='<?= json_encode(['ip' => $SERVERS[$k]['ip'], 'port' => $SERVERS[$k]['port'], 'mods' => $SERVERS[$k]['mods'], 'restart_schedule' => $SERVERS[$k]['restart_schedule'], 'rules' => $SERVERS[$k]['rules'],'name' => $SERVERS[$k]['name'],'map' => $SERVERS[$k]['map'],'online_players' => $SERVERS[$k]['online_players'],'max_players' => $SERVERS[$k]['max_players'],'password_protected' => $SERVERS[$k]['password_protected'],'server_version' => $SERVERS[$k]['server_version']])?>'>Server Information</h5>
										<?php if ($dbExists && $aExists && $pExists): ?>
										<h5 onClick='showMyStats("<?=$k?>")' class="fake-link">My Stats</h5>
										<?php endif; ?>
										<?php if ($dbExists): ?>
										<h5 onClick='showServerLeaderboard("<?=$k?>")' class="fake-link">Server Leaderboard</h5>
										<?php endif; ?>
										<?php if ($dbExists && $aExists && $tExists): ?>
										<h5 onClick='showTerritoryManagement("<?=$k?>")' class="fake-link">Territory Management</h5>
										<?php endif; ?>
									</ul>
								</div>
								<?php endif;?>
							</div>
						</div>
					</div>
					<?php endforeach; endif; ?>
				</div>
			</div>
			<!-- Side Bar Menu -->
			<!-- My Stats Panel -->
			<div class="container-fluid hidden" id="id_Panel_MyStats">
				<div class="col-md-9 server-panel">
					<div class="row server-panel-info">
						<!-- Player Name and Player UID -->
						<h1 id="id_title">
						<span id="id_PlayerName"></span>
						<small id="id_PlayerUID" class="text-muted player-uid"><?= $steamprofile['steamid']?></small>
						</h1>
						<div class="blue-horizontal-divider" id="id_divider"></div>
						<!-- A bunch of player information -->
						<div class="col-md-3 player-info">
							<!-- Money and Respect -->
							<h3>Money &amp; Respect</h3>
							<div class="blue-horizontal-divider full-width"></div>
							<div class="table-responsive">
								<table class="table table-striped table-condensed">
									<tbody>
										<tr>
											<td>Locker:</td>
											<td><span id="id_PlayerLocker"></span><img class="poptabs-inline" src="img/poptabs.png"></td>
										</tr>
										<tr>
											<td>Wallet:</td>
											<td><span id="id_PlayerWallet"></span><img class="poptabs-inline" src="img/poptabs.png"></td>
										</tr>
										<tr>
											<td>Respect:</td>
											<td><span id="id_PlayerRespect"></span></td>
										</tr>
									</tbody>
								</table>
							</div>
							<!-- Player Stats -->
							<h3>Player Stats</h3>
							<div class="blue-horizontal-divider full-width"></div>
							<div class="table-responsive">
								<table class="table table-striped table-condensed">
									<tbody>
										<tr>
											<td>Health:</td>
											<td id="id_PlayerHealth"></td>
										</tr>
										<tr>
											<td>Hunger:</td>
											<td id="id_PlayerHunger"></td>
										</tr>
										<tr>
											<td>Thirst:</td>
											<td id="id_PlayerThirst"></td>
										</tr>
									</tbody>
								</table>
							</div>
						</div>
						<!-- Territories -->
						<div class="col-md-4 col-md-offset-1">
							<h3>My Territories</h3>
							<div class="table-responsive">
								<table class="table table-striped table-condensed">
									<thead>
										<tr>
											<th>Name</th>
											<th>Members</th>
										</tr>
									</thead>
								<tbody id="id_PlayerTerritories"></tbody>
							</table>
						</div>
					</div>
				</div>
			</div>
		</div>
		<!-- My Stats Panel -->
		<!-- Server Leaderboard Panel -->
		<div class="container-fluid hidden" id="id_Panel_ServerLeaderboard">
			<div class="col-md-9 server-panel">
				<div class="row server-panel-info">
					<!-- Title -->
					<h1>Server Leaderboard</h1>
					<div class="blue-horizontal-divider" id="id_divider"></div>
					<br>
					<!-- Information that will be pulled from the database -->
					<div class="table-responsive server-leaderboard">
						<table id="id_Leaderboard" class="table table-striped">
							<thead>
								<tr>
									<th>Player Name <i class="fa fa-angle-down fa-lg fake-link" aria-hidden="true"></i></th>
									<th>Kills <i class="fa fa-angle-down fa-lg fake-link" aria-hidden="true"></i></th>
									<th>Deaths <i class="fa fa-angle-down fa-lg fake-link" aria-hidden="true"></i></th>
									<th>K/D <i class="fa fa-angle-down fa-lg fake-link" aria-hidden="true"></i></th>
									<th>Locker <i class="fa fa-angle-down fa-lg fake-link" aria-hidden="true"></i></th>
									<th>Respect <i class="fa fa-angle-down fa-lg fake-link" aria-hidden="true"></i></th>
									<th>Clan <i class="fa fa-angle-down fa-lg fake-link" aria-hidden="true"></i></th>
								</tr>
							</thead>
						<tbody id="id_ServerLeaderboard"></tbody>
					</table>
				</div>
			</div>
		</div>
	</div>
	<!-- Server Leaderboard Panel -->
	<!-- Territory Management Panel -->
	<div class="container-fluid hidden" id="id_Panel_TerritoryManagement">
		<div class="col-md-9 server-panel">
			<div class="row server-panel-info">
				<!-- Title -->
				<h1 id="id_title">Territory Management</h1>
				<div class="blue-horizontal-divider" id="id_divider"></div>
				<br>
				<!-- List of territories they can manage (Owner or moderator) -->
				<div class="col-md-3">
					<h3>Territories</h3>
					<div class="list-group" id="id_ManagableTerritories"></div>
				</div>
				<div id="loader-territory" class="wrapper"></div>
				<!-- Territory that is selected in the list -->
				<div class="hidden" id="id_ManagableTerritoryInfo">
					<div class="col-md-9">
						<!-- Territory Title -->
						<h2 class="text-center" id="id_TerritoryName"></h2>
						<div class="blue-horizontal-divider full-width"></div>
						<br>
						<!-- Everyone List -->
						<div class="col-md-5">
							<h3>Territory Members</h3>
							<div class="list-group playerList" id="id_territoryMembers"></div>
							<button type="button" class="button full-width" id="btn_PromotePlayer">Promote Player</button>
							<div class="row">
								<div class="col-md-6">
									<button type="button" class="button full-width" id="btn_DemotePlayer">Demote Player</button>
								</div>
								<div class="col-md-6">
									<button type="button" class="button full-width" id="btn_KickPlayer">Kick Player</button>
								</div>
							</div>
							<br>
							<div class="row">
								<div class="col-md-12">
								<select class="form-control" id="id_OnlinePlayersList"></select>
								<button type="button" class="button full-width" id="btn_AddPlayer">Add Player</button>
							</div>
						</div>
					</div>
					<!-- Statistics about the territory -->
					<div class="col-md-7">
						<h3>Stats</h3>
						<div class="blue-horizontal-divider full-width"></div>
						<div class="table-responsive">
							<table class="table table-striped table-condensed">
								<tbody>
									<tr>
										<td>Protection Due Before:</td>
										<td id="id_ProtectionDueDate"></td>
									</tr>
									<tr>
										<td>Territory Build Size:</td>
										<td id="id_TerritoryBuildSize"></td>
									</tr>
									<tr>
										<td>Objects:</td>
										<td id="id_TerritoryObjects"></td>
									</tr>
									<tr>
										<td>Protection Cost:</td>
										<td id="id_ProtectionCost"></td>
									</tr>
									<tr>
										<td>Upgrade Cost:</td>
										<td id="id_UpgradeCost"></td>
									</tr>
								</tbody>
							</table>
						</div>
						<!-- Upgrade Territory Button -->
						<div class="col-md-6">
							<button id="btn_UpgradeTerritory" type="button" class="button full-width">Upgrade Territory</button>
						</div>
						<!-- Make a Payment Button -->
						<div class="col-md-6">
							<button id="btn_MakePayment" type="button" class="button full-width">Make a Payment</button>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
</div>
<!-- Territory Management -->
</div>
<!-- Main Container -->
<!-- Upgrade Territory Modal -->
<div class="modal custom fade" id="upgrade_territory" role="dialog">
<div class="modal-dialog modal-sm">
	<div class="modal-content">
		<div class="modal-body">
			<!-- Modal Title -->
			<h1 class="modal-title">Upgrade Territory</h1>
			<!-- Modal information -->
			<div class="row">
				<div class="col-md-6">
					<h3>Current Territory</h3>
					<div class="blue-horizontal-divider full-width"></div>
					<div class="table-responsive">
						<table class="table table-striped table-condensed">
							<tbody>
								<tr>
									<td>Territory Build Size:</td>
									<td id="id_upgradeFromBuildSize"></td>
								</tr>
								<tr>
									<td>Max Objects:</td>
									<td id="id_upgradeFromMaxObjects"></td>
								</tr>
							</tbody>
						</table>
					</div>
				</div>
				<div class="col-md-6">
					<h3>Upgraded Territory</h3>
					<div class="blue-horizontal-divider full-width"></div>
					<div class="table-responsive">
						<table class="table table-striped table-condensed">
							<tbody>
								<tr>
									<td>Territory Build Size:</td>
									<td id="id_upgradeToBuildSize"></td>
								</tr>
								<tr>
									<td>Max Objects:</td>
									<td id="id_upgradeToMaxObjects"></td>
								</tr>
								<tr>
									<td>Upgrade Cost:</td>
									<td id="id_upgradeToCost"></td>
								</tr>
							</tbody>
						</table>
					</div>
					<p class="text-right"><span id="id_upgradePlayerMoneyStart"></span><br><span id="id_upgradeTotalCost"></span><br><span id="id_upgradePlayerMoneyEnd"></span></p>
					<button type="button" class="button full-width" id="btn_upgradeConfirm">Confirm Upgrade</button>
				</div>
			</div>
		</div>
		<div class="modal-footer">
			<button type="button" class="button" data-dismiss="modal">Cancel</button>
		</div>
	</div>
</div>
</div>
<!-- Upgrade Territory Modal -->
<!-- Make a Payment Modal -->
<div class="modal custom fade" id="make_payment" role="dialog">
<div class="modal-dialog modal-sm">
	<div class="modal-content">
		<div class="modal-body">
			<!-- Modal Title -->
			<h1 class="modal-title">Make a Payment</h1>
			<p>Note:
			<br>If you try to make a payment on or after the due date, there is no guarantee your base will be protected. No refunds or compensations will be given!</p>
			<!-- Modal information -->
			<div class="row">
				<div class="col-md-12">
					<h3>Territory Protection</h3>
					<div class="blue-horizontal-divider full-width"></div>
					<div class="table-responsive">
						<table class="table table-striped table-condensed">
							<tbody>
								<tr>
									<td>Current Due Date:</td>
									<td id="id_paymentCurrentDueDate"></td>
								</tr>
								<tr>
									<td>Next Due Date:</td>
									<td id="id_paymentNextDueDate"></td>
								</tr>
							</tbody>
						</table>
					</div>
					<p class="text-right"><span id="id_paymentPlayerMoneyStart"></span><br><span id="id_paymentPaymentCost"></span><br><span id="id_paymentPlayerMoneyEnd"></span></p>
					<button type="button" class="button full-width" id="btn_paymentConfirm">Confirm Payment</button>
				</div>
			</div>
		</div>
		<div class="modal-footer">
			<button type="button" class="button" data-dismiss="modal">Cancel</button>
		</div>
	</div>
</div>
</div>
<!-- Make a Payment Modal -->
<!-- Server Modal -->
<div class="modal custom fade" id="server_information" role="dialog">
<div class="modal-dialog modal-sm">
	<div class="modal-content">
		<div class="modal-body">
			<!-- Modal Title -->
			<h1 class="modal-title" id="server_name"></h1>
			<!-- Modal information -->
			<div class="row">
				<div class="col-md-12">
					<h4 id="server_ip_port"></h4>
					<div class="blue-horizontal-divider full-width"></div>
					<div class="table-responsive">
						<table class="table table-striped table-condensed">
							<tbody>
								<tr>
									<td>Map:</td>
									<td id="server_map"></td>
								</tr>
								<tr>
									<td>Players Online:</td>
									<td id="server_players_online"></td>
								</tr>
								<tr>
									<td>Password Protected:</td>
									<td id="server_password_protected"></td>
								</tr>
								<tr>
									<td>Server Version:</td>
									<td id="server_version"></td>
								</tr>
								<tr>
									<td>Restart Schedule:</td>
									<td id="server_restart_schedule"></td>
								</tr>
								<tr>
									<td>Required Mods:</td>
									<td id="server_required_mods"></td>
								</tr>
							</tbody>
						</table>
					</div>
				</div>
			</div>
		</div>
		<div class="modal-footer">
			<button type="button" class="button" data-dismiss="modal">Cancel</button>
		</div>
	</div>
</div>
</div>
<!-- Server Info Modal -->
</body>
</html>
All opinions represented herein are my own
- © 2024 - 2026 itsthedevman
- build 4294fb2