A lightweit status site

This commit is contained in:
Givou committed 2021-03-12 18:43:32 +01:00
1 parent cac67f667f
commit 58ea014443
26 files changed
+8943

No files matched your search

+593
View File
@@ -0,0 +1,593 @@
<?php
session_start();
if(!file_exists("config.php")) {
header("Location: install/index.php");
die();
}
if(!isset($_SESSION['loggedin']) && $_SESSION['loggedin'] !== true) {
header("Location: login.php");
die;
}
include('worker.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link type="text/css" rel="stylesheet" href="css/admin/style.css" />
<link type="text/css" rel="stylesheet" href="css/admin/mobile.css" />
<link rel="stylesheet" href="css/font-awesome/css/font-awesome.css">
<?php
echo '<title>'.$instancename.' - Administration</title>';
?>
</head>
<body>
<a id="opener" class="open" onclick="openNav()">☰</a>
<!--SIDEBAR-->
<div id="sidebar" class="sidebar">
<h1><?=$_SESSION['name']?></h1>
<a href="#dashboard">Dashboard</a>
<a href="#account">Account</a>
<?php
if($role == "administrator") {
echo '<a href="#users">Users</a>';
}
?>
<a href="#services">Services</a>
<a href="#incidents">Incidents</a>
<?php
if($role == "administrator") {
echo '<a href="#settings">Settings</a>';
}
?>
<a class="bottom close" onClick="closeNav()">Close</a>
<a class="bottom" href="admin.php?logout">Logout</a>
</div>
<!--DASHBOARD-->
<div id="dashboard" class="more-overlay">
<div class="more-popup">
<h2>Dashboard</h2>
<div class="content">Welcome back, <font color="green"><?=$_SESSION['name']?></font></div>
<?php
if(sOffline()) {
echo '<div class="content troubles">Some Systems may not work correctly!</div>';
} else if(sMaintenance()) {
echo '<div class="content maintenance">Systems currently under maintenance!</div>';
} else {
echo '<div class="content up">All Systems operational!</div>';
}
?>
</div>
</div>
<!--ACCOUNT-->
<div id="account" class="more-overlay">
<div class="more-popup">
<h2>Account</h2>
<div class="content">Account name: <font color="green"><?=$_SESSION['name']?></font></div>
<?php
if(isset($_GET["userexist"])) {
echo '<p class="wpassword">User already exists!</p>';
}
?>
<form action="admin.php?updateusername" method="post">
<input type="text" class="username-field" value="" placeholder="New Username" id="username" name="username" required>
<input style="display: none;" type="submit"><button class="button-green button-up">Submit</button></input>
</form>
<div class="placeholder"></div>
<div class="content">Password</div>
<?php
if(isset($_GET["pwnotmatch"])) {
echo '<p class="wpassword">The passwords do not match</p>';
}
if(isset($_GET["pwupdated"])) {
echo '<p class="upassword">Passwort updated successfully!</p>';
}
if(isset($_GET["pwrong"])) {
echo '<p class="wpassword">Old password is not correct!</p>';
}
?>
<form action="admin.php?updatepassword" method="post">
<input type="password" class="username-field field-newline" value="" placeholder="Old password" id="oldpassword" name="oldpassword" required>
<div class="placeholder"></div>
<input type="password" class="username-field field-newline" value="" placeholder="Password" id="password1" name="password1" required>
<input type="password" class="username-field" value="" placeholder="Retype password" id="password2" name="password2" required>
<input style="display: none;" type="submit"><button class="button-green">Submit</button></input>
</form>
</div>
</div>
<!--USERS WHEN ADMIN PRIVILEGES ARE SET-->
<?php
if($role == "administrator") {
echo '
<div id="users" class="more-overlay">
<div class="more-popup">
<h2>Users</h2>
<div class="content">Create Account</div>
<form action="admin.php?newuser" method="post">
<input type="text" class="username-field" value="" placeholder="Username" id="username" name="username" required>
<input type="password" class="username-field" value="" placeholder="Password" id="password" name="password" required>
<select name = "role">
<option value = "administrator" selected>Administrator</option>
<option value = "moderator">Moderator</option>
</select>
<input style="display: none;" type="submit"><button class="button-green button-up">Submit</button></input>
</form>
<div class="placeholder"></div>
<div class="content">Users</div>
';
if(isset($_GET["userdeleted"])) {
echo '<p class="wpassword">User deleted successfully!</p>';
}
if(isset($_GET["userexist"])) {
echo '<p class="wpassword">User already exists!</p>';
}
if(isset($_GET["usercreated"])) {
echo '<p class="upassword">User created successfully!</p>';
}
}
if($role == "administrator") {
while($userlist = mysqli_fetch_array($users)){
if($userlist['username'] != $_SESSION['name']) {
echo '
<input type="text" id="username" name="username" class="username-field" value="'.$userlist['username'].'" readonly>
<input type="text" class="username-field" value="ID='.$userlist['id'].'" readonly>
<input type="text" class="username-field" value="'.$userlist['role'].'" readonly>
<a href="?edit='.$userlist['username'].'#edit"><button class="button-green">Edit</button></a>
<a href="?deluser='.$userlist['username'].'#users"><button class="button-red">Delete</button></a>
<div class="userlist-newline"></div>';
}
}
}
if($role == "administrator") {
echo '</div></div>';
}
?>
<!--USERS EDIT-->
<?php
if(isset($_GET["edit"]) && $role == "administrator") {
$username = $_GET["edit"];
echo '
<div id="edit" class="more-overlay">
<div class="more-popup">
<h2>'.$username.'</h2>
<form action="admin.php?updateunfor='.$username.'#edit" method="post">
<div class="content">Username</div>';
if(isset($_GET["unupdated"])) {
echo '<p class="upassword">Username updated sucessfully</p>';
}
echo '
<input type="text" class="username-field" value="" placeholder="'.$username.'" id="username" name="username" required>
<input style="display: none;" type="submit"><button class="button-green button-up">Submit</button></input>
</form>
<div class="placeholder"></div>
<form action="admin.php?updatepwfor='.$username.'#edit" method="post">
<div class="content">Password</div>';
if(isset($_GET["pwnotmatch"])) {
echo '<p class="wpassword">The passwords do not match</p>';
}
if(isset($_GET["pwupdated"])) {
echo '<p class="upassword">Passwort updated successfully!</p>';
}
echo '
<input type="password" class="username-field field-newline" value="" placeholder="Password" id="password1" name="password1" required>
<input type="password" class="username-field" value="" placeholder="Retype password" id="password2" name="password2" required>
<input style="display: none;" type="submit"><button class="button-green">Submit</button></input>
</form>
<div class="placeholder"></div>
<form action="admin.php?updaterole='.$username.'#edit" method="post">
<div class="content">Role</div>';
if(isset($_GET["roleupdated"])) {
echo '<p class="upassword">Role updated successfully!</p>';
}
echo '
<select name = "role">
<option value = "administrator" selected>Administrator</option>
<option value = "moderator">Moderator</option>
</select>
<input style="display: none;" type="submit"><button class="button-green">Submit</button></input>
</form>
</div>
</div>
';
}
?>
<!--Manage Service-->
<?php
if(isset($_GET["manageservice"])) {
$id = $_GET["manageservice"];
$servicename = getServiceName($_GET["manageservice"]);
$incidentid = 0;
echo '
<div id="mservice" class="more-overlay">
<div class="more-popup">
<h2>'.$servicename.'</h2>
<div class="content">Edit service settings</div>
';
if(isset($_GET["statusupdated"])) {
echo '<p class="upassword">Status updated successfully!</p>';
}
if(isset($_GET["priorityupdated"])) {
echo '<p class="upassword">Priority updated successfully!</p>';
}
if(isset($_GET["nameupdated"])) {
echo '<p class="upassword">Name updated successfully!</p>';
}
echo '
<form action="admin.php">
<input type="hidden" name="updatest" value="' . $id . '">
<input type="text" class="username-field" value="'.getStatus($id).'" readonly>
<select name = "status">
<option value = "Online" selected>Online</option>
<option value = "Maintenance">Maintenance</option>
<option value = "Offline">Offline</option>
</select>
<input style="display: none;" type="submit"><button class="button-green button-up">Submit</button></input>
</form>
<form action="admin.php?upservicename='.$id.'" method="post">
<input type="text" class="username-field" value="'.$servicename.'" readonly>
<input type="text" class="username-field" placeholder="New Name" id="name" name="name" required>
<input style="display: none;" type="submit"><button class="button-green button-up">Submit</button></input>
</form>
<form action="admin.php?upservicepriority='.$id.'" method="post">
<input type="text" class="username-field" value="'.getServicePriority($id).'" readonly>
<input type="number" class="username-field" placeholder="Number" placeholder="Priority" id="priority" name="priority" required>
<input style="display: none;" type="submit"><button class="button-green button-up">Submit</button></input>
</form>
<div class="placeholder"></div>
<div class="content">Recent Incidents</div>
';
mysqli_data_seek($incidents, 0);
$count = 3;
if(isset($_GET['lmore'])) {
$add = (int) $_GET['lmore'];
$count += $add;
}
while($incidentlist = mysqli_fetch_array($incidents)){
if($count != 0) {
if(strpos($incidentlist['services'], $id) !== false) {
if(strpos($incidentlist['childof'], "-1") !== false) {
$count--;
echo '
<div class="placeholder"></div>
<div class="content">'.$incidentlist['date'].':
<a href="?rmincident='.$incidentlist['id'].'&manageservice='.$id.'&sname='.$servicename.'#mservice"><button class="button-red-mini button-mini-bigger">Delete</button></a>
</div>
<div class="incident">';
if($incidentlist['status'] == "new") {
echo '<div class="timeline-icon timeline-new"></div>';
} else if($incidentlist['status'] == "working") {
echo '<div class="timeline-icon timeline-working"></div>';
} else if($incidentlist['status'] == "update") {
echo '<div class="timeline-icon timeline-update"></div>';
} else if($incidentlist['status'] == "finished") {
echo '<div class="timeline-icon timeline-finished"></div>';
}
echo ''.$incidentlist['text'].'
</div>
';
mysqli_data_seek($incidents2, 0);
while($incidentlist2 = mysqli_fetch_array($incidents2)){
if(strpos($incidentlist['id'], $incidentlist2['childof']) !== false) {
echo '
<div class="incident">';
if($incidentlist2['status'] == "new") {
echo '<div class="timeline-icon timeline-new"></div>';
} else if($incidentlist2['status'] == "working") {
echo '<div class="timeline-icon timeline-working"></div>';
} else if($incidentlist2['status'] == "update") {
echo '<div class="timeline-icon timeline-update"></div>';
} else if($incidentlist2['status'] == "finished") {
echo '<div class="timeline-icon timeline-finished"></div>';
}
echo ''.$incidentlist2['text'].'
<a href="?rmincident='.$incidentlist2['id'].'&manageservice='.$id.'&sname='.$servicename.'#mservice"><button style="margin-top: 1px;" class="button-red-mini">Delete</button></a>
</div>
';
}
}
}
}
} else {
break;
}
}
if($count == 0) {
if(isset($_GET['lmore'])) {
$more = (int) $_GET['lmore'];
$more += 3;
} else {
$more = 3;
}
echo '<a href="?manageservice='.$id.'&sname='.$servicename.'&lmore='.$more.'#mservice"><button class="button-center button-green button-bigger">Load more</button></a';
}
echo '
</div>
</div>
';
}
?>
<!--Manage Group-->
<div id="groupedit" class="more-overlay">
<div class="more-popup">
<h2><?php echo getGroupName($_GET['editgroup']); ?></h2>
<div class="content">Edit Group</div>
<?php
if(isset($_GET["messagecreated"])) {
echo '<p class="upassword">Name updated successfully!</p>';
}
if(isset($_GET["priorityupdated"])) {
echo '<p class="upassword">Priority updated successfully!</p>';
}
?>
<?php echo '<form action="admin.php?upgroupname='.$_GET['editgroup'].'" method="post">' ?>
<input type="text" class="username-field" value="<?php echo getGroupName($_GET['editgroup']); ?>" readonly>
<input type="text" class="username-field" placeholder="New Name" id="name" name="name" required>
<input style="display: none;" type="submit"><button class="button-green button-up">Submit</button></input>
</form>
<?php echo '<form action="admin.php?upgrouppriority='.$_GET['editgroup'].'" method="post">' ?>
<input type="text" class="username-field" value="<?php echo getGroupPriority($_GET['editgroup']); ?>" readonly>
<input type="number" class="username-field" placeholder="Number" placeholder="Priority" id="priority" name="priority" required>
<input style="display: none;" type="submit"><button class="button-green button-up">Submit</button></input>
</form>
</div>
</div>
<!--Create Incidents-->
<div id="incidents" class="more-overlay">
<div class="more-popup">
<h2>Incidents</h2>
<?php
echo '
<div class="content">Create Incident</div>
';
if(isset($_GET["incidentcreated"])) {
echo '<p class="upassword">Incident created successfully!</p>';
}
echo '
<form action="admin.php?createincident" method="post">
<textarea class="field-newline" rows="5" cols="52" name="text" placeholder="Enter incident text" maxlength="500" required></textarea>
<select style="margin-top: -3px;" name = "services[]" multiple required>
';
mysqli_data_seek($services, 0);
while($servicelist = mysqli_fetch_array($services)){
echo '
<option value = "'.$servicelist['id'].'">'.$servicelist['name'].'</option>
';
}
echo '
</select>
<input type="date" class="username-field incident-date" placeholder="DD.MM.YYYY" value="" id="date" name="date" required>
<button style="" class="button-green incident-submit">Submit</button>
</form>
<div class="placeholder"></div>
<div class="content">Add Message</div>
';
if(isset($_GET["messagecreated"])) {
echo '<p class="upassword">Message created successfully!</p>';
}
echo '
<form action="admin.php?addmessage" method="post">
<textarea class="field-newline" rows="5" cols="52" name="text" placeholder="Enter incident message text" maxlength="500" required></textarea>
<select style="position: relative; top: -5px;" id="childof" name="childof" required>
';
mysqli_data_seek($incidents, 0);
while($incidentlist = mysqli_fetch_array($incidents)){
if(strpos($incidentlist['childof'], "-1") !== false) {
echo '
<option value = "'.$incidentlist['id'].'">'.$incidentlist['date'].'</option>
';
}
}
echo '
</select>
<select style="position: relative; top: -5px;" id="state" name="state" required>
<option value = "new">New</option>
<option value = "working">Working</option>
<option value = "update">Update</option>
<option value = "finished">Finished</option>
</select>
<button style="left: -3px; top: -5px;" class="button-green">Submit</button>
</form>
<div class="placeholder"></div>
<div class="content content-danger">Danger Zone</div>
';
if(isset($_GET["incidentsflushed"])) {
echo '<p class="wpassword">All Incidents flushed!!</p>';
}
echo '
<a href="?flushincidents"><button style="top: 5px;" class="button-red button-bigger">Clear all Incidents</button></a>
';
?>
</div>
</div>
<!--SETTINGS WHEN ADMIN PRIVILEGES ARE SET-->
<?php
if($role == "administrator") {
echo '
<div id="settings" class="more-overlay">
<div class="more-popup">
<h2>Settings</h2>
<div class="content">Instance name</div>';
if(isset($_GET["nameupdated"])) {
echo '<p class="upassword">Instance name successfully updated!</p>';
}
echo '
<form action="admin.php?upname" method="post">
<div><input type="text" class="username-field" value="'.$instancename.'" readonly>
<input type="text" class="username-field" placeholder="New name" value="" id="iname" name="iname" required>
<input style="display: none;" type="submit"><button class="button-green button-up">Submit</button></input></div>
</form>
<div class="placeholder"></div>
<div class="content">Autoreload Status</div>';
if(isset($_GET["reloadupdated"])) {
if($_GET['reloadupdated'] == "enabled") {
echo '<p class="upassword">Autoreload value set to: '.$_GET['reloadupdated'].'!</p>';
} else {
echo '<p class="wpassword">Autoreload value set to: '.$_GET['reloadupdated'].'!</p>';
}
}
echo '
<form action="admin.php?upautoreload" method="post">
<input type="text" class="username-field" value="'.$autoreload_setting.'" readonly>
<select name = "autoreload">
<option value = "enabled" selected>Enabled</option>
<option value = "disabled">Disabled</option>
</select>
<input style="display: none;" type="submit"><button class="button-green button-up">Submit</button></input>
</form>
</div>
</div>';
}
?>
<!--SERVICES EDIT-->
<div id="services" class="more-overlay">
<div class="more-popup">
<h2>Services</h2>
<div class="content">Create group/service</div>
<?php
if(isset($_GET["groupadded"])) {
echo '<p class="upassword">Group successfully added!</p>';
}
if(isset($_GET["serviceadded"])) {
echo '<p class="upassword">Service successfully added!</p>';
}
?>
<form action="admin.php?creategroup" method="post">
<div><input type="text" class="username-field" value="" placeholder="New group" id="name" name="name" required>
<input type="number" class="username-field" value="" placeholder="Priority" id="priority" name="priority" required>
<input style="display: none;" type="submit"><button class="button-green button-up">Submit</button></input></div>
</form>
<form action="admin.php?createservice" method="post">
<div><input type="text" class="username-field" value="" placeholder="New service" id="name" name="name" required>
<input type="text" class="username-field" value="" placeholder="short name" id="sname" name="sname" maxlength="7" required>
<select name = "group">
<?php
while($grouplist = mysqli_fetch_array($groups)){
echo '<option value = '.$grouplist['id'].' selected>'.$grouplist['name'].'</option>';
}
?>
</select>
<input type="number" class="username-field" value="" placeholder="Priority" id="priority" name="priority" required>
<input style="display: none;" type="submit"><button class="button-green">Submit</button></div></input>
</form>
<div class="placeholder"></div>
<?php
if(isset($_GET["servicedeleted"])) {
echo '<p class="wpassword">Service successfully deleted!</p>';
}
if(isset($_GET["groupdeleted"])) {
echo '<p class="wpassword">Group successfully deleted!</p>';
}
?>
<?php
mysqli_data_seek($groups, 0);
while($grouplist = mysqli_fetch_array($groups)){
echo '<div class="content">'.$grouplist['name'].'
<a href="?editgroup='.$grouplist['id'].'#groupedit"><button class="button-green-mini">Edit</button></a>
<a href="?delgroup='.$grouplist['id'].'#services"><button class="button-red-mini">Delete</button></a></div>';
mysqli_data_seek($services, 0);
while($servicelist = mysqli_fetch_array($services)){
if($grouplist['id'] == $servicelist['groupid']) {
echo '
<div class="block"><input type="text" class="username-field" value="" placeholder="'.$servicelist['name'].'" id="servicename" name="servicename" readonly>
<input type="text" class="username-field" value="" placeholder="'.$servicelist['status'].'" id="status" name="status" size="500" readonly>
<input type="text" class="username-field" value="" placeholder="'.$servicelist['priority'].'" id="priority" name="priority" readonly>
<a href="?manageservice='.$servicelist['id'].'#mservice"><button class="button-orange">Manage</button></a>
';
if($role != "administrator") {
echo'</div>';
} else {
echo '<a href="?delservice='.$servicelist['id'].'#services"><button class="button-red">Delete</button></a>';
}
}
}
echo'<div class="placeholder"></div>';
}
?>
</body>
<script type="text/javascript" src="js/sidebar.js"></script>
<script type="text/javascript" src="js/redirect.js"></script>
</html>
+50
View File
@@ -0,0 +1,50 @@
<?php
session_start();
$DATABASE_HOST = 'nerdcity.at';
$DATABASE_USER = 'webstatus';
$DATABASE_PASS = 'wPsCi548z6fKJB2u';
$DATABASE_NAME = 'webstatus';
$con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
if ( !isset($_POST['username'], $_POST['password']) ) {
exit('Please fill both the username and password fields!');
}
if ($stmt = $con->prepare('SELECT id, password FROM accounts WHERE username = ?')) {
$stmt->bind_param('s', $_POST['username']);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0) {
$stmt->bind_result($id, $password);
$stmt->fetch();
if (password_verify($_POST['password'], $password)) {
session_regenerate_id();
$_SESSION['loggedin'] = TRUE;
$_SESSION['name'] = $_POST['username'];
$_SESSION['id'] = $id;
header("Location: admin.php");
} else {
//Incorrect Data
echo 'Incorrect username and/or password!';
}
} else {
//Incorrect Data
echo 'Incorrect username and/or password!';
}
$stmt->close();
}
?>
+135
View File
@@ -0,0 +1,135 @@
@media only screen and (max-width: 467px){
.open {
position: absolute;
top: -1%;
left: 3%;
font-size: 3em;
visibility: visible;
display: block;
}
.sidebar{
position: fixed;
width: 35%;
top:0;
left: 0;
bottom: 0;
background: #121921;
padding-top: 50px;
transition: 0.5s;
}
.bottom {
position: absolute;
bottom: 8%;
}
.close {
bottom: 14%;
visibility: visible;
}
.sidebar h1{
display: block;
padding: 10px 20px;
color: #fff;
text-decoration: none;
font-family: 'Trebuchet MS', sans-serif;
letter-spacing: 2px;
font-weight: 400;
margin: 0;
font-size: 2em;
text-transform: uppercase;
margin-top: 0;
transition: 0.3s;
}
.sidebar a{
display: block;
padding: 10px 20px;
color: #bbb;
text-decoration: none;
font-family: 'Trebuchet MS', sans-serif;
font-size: 1em;
letter-spacing: 2px;
transition: 0.3s;
}
.incident-date {
top: 0px !important;
}
.incident-submit {
top: -17% !important;
}
}
@media only screen and (max-height: 467px){
.open {
position: absolute;
top: -1%;
left: 3%;
font-size: 7em;
visibility: visible;
display: block;
}
.sidebar{
position: fixed;
width: 35%;
top:0;
left: 0;
bottom: 0;
background: #121921;
padding-top: 50px;
}
.sidebar h1{
display: block;
padding: 10px 20px;
color: #fff;
text-decoration: none;
font-family: 'Trebuchet MS', sans-serif;
letter-spacing: 2px;
font-weight: 400;
margin: 0;
font-size: 3em;
text-transform: uppercase;
margin-top: 50px;
}
.sidebar a{
display: block;
padding: 10px 20px;
color: #bbb;
text-decoration: none;
font-family: 'Trebuchet MS', sans-serif;
font-size: 2em;
letter-spacing: 2px;
}
.close {
display: block;
position: absolute;
bottom: 7%;
}
.more-popup {
margin: 15% auto 15% -30% !important;
padding: 20px;
background: #233142;
border-radius: 5px;
width: 70%;
position: relative;
}
.incident-date {
top: 0px !important;
}
.incident-submit {
top: -17% !important;
}
}
+420
View File
@@ -0,0 +1,420 @@
body {
margin: 0;
background: #233142;
font-family: "Lato", sans-serif;
overflow-x: hidden;
}
.sidebar{
position: fixed;
width: 13%;
top:0;
left: 0;
bottom: 0;
background: #121921;
padding-top: 50px;
z-index: 1;
}
.sidebar h1{
display: block;
padding: 10px 20px;
color: #fff;
text-decoration: none;
font-family: "Rubik";
letter-spacing: 2px;
font-weight: 400;
margin: 0;
font-size: 25px;
text-transform: uppercase;
}
.sidebar a {
display: block;
padding: 10px 20px;
color: #bbb;
text-decoration: none;
font-family: "Rubik";
letter-spacing: 2px;
}
.sidebar a:hover:not(close){
color: #fff;
margin-left: 20px;
transition: 0.4s;
}
.bottom {
position: absolute;
bottom: 2%;
}
.close {
visibility: hidden;
}
.open {
color: green;
display: none;
visibility: hidden;
}
.more-box {
width: 20%;
margin: 0 auto;
background: rgba(255,255,255,0.2);
padding: 35px;
border: 2px solid #233142;
border-radius: 20px/50px;
text-align: center;
}
.more-overlay {
transition: opacity 300ms;
visibility: hidden;
opacity: 0;
padding-top: -1%;
margin: -10% auto;
margin-bottom: -2000px;
display: none;
}
.more-overlay:target {
visibility: visible;
opacity: 1;
display: block;
}
.more-popup {
margin: 15% auto 15% 30%;
padding: 20px;
background: #233142;
border-radius: 5px;
width: 70%;
position: relative;
}
.more-popup h2 {
margin-top: 0;
color: #a6a6a6;
font-family: Tahoma, Arial, sans-serif;
font-size: 80px;
margin-bottom: 0;
}
.more-popup .content {
max-height: 30%;
overflow: auto;
color: #d9d9d9;
font-size: 20px;
}
.content-danger {
color: #ff4d4d !important;
}
.more-box-caller {
text-decoration: none;
}
.up {
color: #009900 !important;
}
.maintenance {
color: #ff9933 !important;
}
.troubles {
color: #ff1a1a !important;
}
input {
text-align: center;
background-color: #ECF0F1;
border: 2px solid transparent;
border-radius: 3px;
font-size: 15px;
font-weight: 200;
padding: 10px 0;
width: 200px;
transition: border .5s;
margin-left: -2px;
margin-top: 2px;
}
input:focus {
border: 2px solid #3498DB;
box-shadow: none;
}
textarea {
text-align: center;
background-color: #2c3e54;
color: #7996b9;
border: 2px solid transparent;
border-radius: 3px;
font-size: 15px;
font-weight: 200;
padding: 10px 0;
transition: border .5s;
margin-left: -2px;
margin-top: 2px;
margin-bottom: 5px;
}
select {
text-align: center;
background-color: #2c3e54 !important;
color: #7996b9;
border: 2px solid transparent;
border-radius: 3px;
font-size: 15px;
font-weight: 200;
padding: 10px 0;
width: 200px;
transition: border .5s;
margin-left: -2px;
margin-top: 2px;
}
select:focus {
border: 2px solid #3498DB;
box-shadow: none;
}
button {
position: relative;
margin-bottom: 2px;
font-size: 15px !important;
font-weight: 200 !important;
color: #7996b9 !important;
}
button:focus {
outline: 0;
}
button:before {
content: "";
display: block;
position: absolute;
background: rgba(255, 255, 255, 0.5);
width: 60px;
height: 100%;
left: 0;
top: 0;
opacity: 0.5;
filter: blur(30px);
transform: translateX(-100px) skewX(-15deg);
}
button:after {
content: "";
display: block;
position: absolute;
background: rgba(255, 255, 255, 0.2);
width: 30px;
height: 100%;
left: 30px;
top: 0;
opacity: 0;
filter: blur(5px);
transform: translateX(-100px) skewX(-15deg);
}
button:hover:before {
transform: translateX(300px) skewX(-15deg);
opacity: 0.6;
transition: 0.7s;
}
button:hover:after {
transform: translateX(300px) skewX(-15deg);
opacity: 1;
transition: 0.7s;
}
.button-green {
background: #2c3e54;
color: #ccc;
width: 80px;
height: 42px;
border: 0;
font-size: 18px;
border-radius: 4px;
font-family: "Raleway", sans-serif;
transition: 0.6s;
overflow: hidden;
}
.button-green:hover {
background: #338033;
cursor: pointer;
}
.button-red {
background: #2c3e54;
color: #ccc;
width: 80px;
height: 42px;
border: 0;
font-size: 18px;
border-radius: 4px;
font-family: "Raleway", sans-serif;
transition: 0.6s;
overflow: hidden;
}
.button-red:hover {
background: #990000;
cursor: pointer;
}
.button-orange {
background: #2c3e54;
color: #ccc;
width: 80px;
height: 42px;
border: 0;
font-size: 18px;
border-radius: 4px;
font-family: "Raleway", sans-serif;
transition: 0.6s;
overflow: hidden;
}
.button-orange:hover {
background: #cc6600;
cursor: pointer;
}
.button-green-mini {
background: #2c3e54;
color: #ccc;
width: 50px;
height: 23px;
top: -2px;
border: 0;
font-size: 18px;
border-radius: 4px;
font-family: "Raleway", sans-serif;
transition: 0.6s;
overflow: hidden;
}
.button-green-mini:hover {
background: #338033;
cursor: pointer;
}
.button-red-mini {
background: #2c3e54;
color: #ccc;
width: 55px;
height: 23px;
top: -2px;
border: 0;
font-size: 18px;
border-radius: 4px;
font-family: "Raleway", sans-serif;
transition: 0.6s;
overflow: hidden;
}
.button-mini-bigger {
width: 75px !important;
}
.button-bigger {
width: 140px !important;
}
.button-center {
position: absolute;
left: 30%;
}
.button-up {
top: -1px;
}
.button-red-mini:hover {
background: #990000;
cursor: pointer;
}
.username-field {
color: #7996b9;
background-color: #2c3e54;
}
.field-newline {
display: block !important;
}
.userlist-newline {
margin-top: 1px;
}
.placeholder {
margin-top: 30px;
}
.wpassword {
font-size: 12px;
color: #ff0000;
margin: center;
}
.upassword {
font-size: 12px;
color: #009900;
margin: center;
}
.block {
}
.incident {
margin-top: 1%;
color: #7996b9;
width: 50%;
}
.timeline-icon {
display:flex;
float:left;
padding-right: 15px;
}
.timeline-new:before {
font-family:FontAwesome;
content: "\f0a1";
color: #cc6600;
}
.timeline-working:before {
font-family:FontAwesome;
content: "\f013";
color: #0052cc;
}
.timeline-update:before {
font-family:FontAwesome;
content: "\f0e5";
color: #4d9900;
}
.timeline-finished:before {
font-family:FontAwesome;
content: "\f00c";
color: #8bc34a;
}
.incident-date {
position: relative;
top: -85px;
}
.incident-submit {
left: -2px;
top: -83px;
}
File diff suppressed because it is too large. Load diff
+4
View File
@@ -0,0 +1,4 @@
/*!
* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f03Line truncated
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large. Load diff

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
+296
View File
@@ -0,0 +1,296 @@
html {
height: 100%;
background: radial-gradient(ellipse, #1b2735 0%, #090a0f 100%);
overflow: hidden;
}
/**Parallax Stars from Codepen**/
/**https://codepen.io/maadc/pen/oarbEM**/
#stars {
width: 2px;
height: 2px;
animation: animStar 40s linear infinite;
box-shadow: 1099px 204px #fff, 1708px 1116px #fff, 1147px 1309px #fff,
25px 1804px #fff, 1690px 1154px #fff, 1731px 747px #fff, 675px 1401px #fff,
944px 1148px #fff, 1302px 1465px #fff, 1023px 1535px #fff, 1032px 549px #fff,
1794px 731px #fff, 565px 1301px #fff, 1332px 1562px #fff, 314px 734px #fff,
955px 463px #fff, 1899px 882px #fff, 1397px 1692px #fff, 572px 599px #fff,
460px 960px #fff, 60px 260px #fff, 1684px 1780px #fff, 310px 1318px #fff,
1789px 1632px #fff, 1871px 1705px #fff, 791px 1245px #fff, 944px 1042px #fff,
1191px 1847px #fff, 1961px 269px #fff, 723px 720px #fff, 1534px 698px #fff,
301px 957px #fff, 1087px 1577px #fff, 734px 278px #fff, 647px 1477px #fff,
529px 1904px #fff, 15px 46px #fff, 805px 382px #fff, 1933px 1427px #fff,
1526px 1929px #fff, 871px 966px #fff, 829px 15px #fff, 1619px 1137px #fff,
1397px 1681px #fff, 654px 1984px #fff, 1397px 556px #fff, 850px 1739px #fff,
620px 1725px #fff, 1845px 1934px #fff, 1158px 875px #fff, 945px 341px #fff,
427px 1679px #fff, 191px 105px #fff, 1396px 1957px #fff, 1808px 1493px #fff,
1133px 460px #fff, 13px 1741px #fff, 140px 1053px #fff, 496px 1416px #fff,
1313px 739px #fff, 1461px 288px #fff, 933px 1008px #fff, 1532px 777px #fff,
1586px 169px #fff, 985px 1202px #fff, 1249px 1749px #fff, 629px 829px #fff,
963px 1075px #fff, 701px 743px #fff, 1284px 30px #fff, 662px 1867px #fff,
101px 691px #fff, 1667px 1490px #fff, 1443px 1166px #fff, 1618px 651px #fff,
1843px 119px #fff, 736px 494px #fff, 1266px 680px #fff, 606px 1339px #fff,
1046px 1926px #fff, 642px 522px #fff, 1786px 1668px #fff, 1681px 862px #fff,
1012px 1181px #fff, 1279px 1271px #fff, 806px 557px #fff, 401px 208px #fff,
730px 789px #fff, 1421px 488px #fff, 1549px 1937px #fff, 150px 1627px #fff,
1693px 787px #fff, 324px 1984px #fff, 1084px 310px #fff, 696px 1255px #fff,
1908px 48px #fff, 614px 1863px #fff, 348px 1724px #fff, 1457px 254px #fff,
1506px 150px #fff, 875px 1506px #fff, 988px 1020px #fff, 1524px 1492px #fff,
1722px 1681px #fff, 1102px 1669px #fff, 860px 768px #fff, 1369px 336px #fff,
1432px 19px #fff, 748px 988px #fff, 635px 1578px #fff, 1943px 397px #fff,
1944px 1615px #fff, 696px 225px #fff, 1922px 196px #fff, 1601px 1779px #fff,
1363px 1541px #fff, 14px 1554px #fff, 618px 917px #fff, 336px 992px #fff,
1208px 1788px #fff, 1617px 764px #fff, 1769px 1294px #fff, 1222px 9px #fff,
1386px 1796px #fff, 533px 575px #fff, 596px 923px #fff, 1847px 431px #fff,
1426px 160px #fff, 1128px 1833px #fff, 316px 233px #fff, 1293px 13px #fff,
987px 356px #fff, 1396px 1073px #fff, 1763px 1076px #fff, 1655px 547px #fff,
1923px 1286px #fff, 814px 1567px #fff, 856px 71px #fff, 1766px 886px #fff,
1764px 70px #fff, 1557px 279px #fff, 317px 660px #fff, 1828px 732px #fff,
327px 137px #fff, 307px 1363px #fff, 1355px 1970px #fff, 1559px 614px #fff,
1500px 467px #fff, 1460px 1827px #fff, 570px 560px #fff, 918px 544px #fff,
1816px 806px #fff, 646px 1641px #fff, 415px 199px #fff, 1621px 917px #fff,
1080px 893px #fff, 1537px 838px #fff, 1089px 539px #fff, 291px 711px #fff,
1654px 1537px #fff, 1065px 1843px #fff, 522px 1073px #fff, 813px 1724px #fff,
1005px 1984px #fff, 1807px 1783px #fff, 357px 1186px #fff, 757px 523px #fff,
1182px 248px #fff, 1232px 1491px #fff, 1391px 796px #fff, 1578px 54px #fff,
912px 1178px #fff, 1988px 1421px #fff, 500px 1545px #fff, 1266px 890px #fff,
1108px 897px #fff, 727px 111px #fff, 673px 1184px #fff, 561px 906px #fff,
1957px 1993px #fff, 698px 1419px #fff, 328px 1484px #fff, 710px 772px #fff,
14px 1102px #fff, 160px 1068px #fff, 1896px 595px #fff, 213px 775px #fff,
1184px 1495px #fff, 883px 239px #fff, 1092px 1733px #fff, 1041px 570px #fff,
189px 1295px #fff, 1343px 1128px #fff, 127px 1581px #fff, 1706px 288px #fff,
218px 919px #fff, 1333px 1223px #fff, 1958px 1385px #fff, 600px 575px #fff,
1542px 952px #fff, 1894px 1212px #fff, 810px 492px #fff, 722px 1119px #fff,
746px 298px #fff, 770px 392px #fff, 922px 355px #fff, 1651px 934px #fff,
566px 415px #fff, 675px 1922px #fff, 488px 5px #fff, 918px 809px #fff,
1510px 1827px #fff, 511px 165px #fff, 382px 1684px #fff, 1934px 1992px #fff,
993px 1730px #fff, 1603px 1836px #fff, 63px 234px #fff, 250px 1178px #fff,
467px 1201px #fff, 1883px 7px #fff, 1868px 1487px #fff, 868px 1971px #fff,
613px 1272px #fff, 664px 756px #fff, 1781px 1327px #fff, 165px 544px #fff,
319px 45px #fff, 1870px 629px #fff, 556px 1502px #fff, 975px 807px #fff,
1869px 313px #fff, 156px 1968px #fff, 1647px 555px #fff, 1589px 864px #fff,
85px 1634px #fff, 943px 202px #fff, 1270px 1850px #fff, 1910px 307px #fff,
1163px 1002px #fff, 1571px 1892px #fff, 835px 1929px #fff, 322px 1527px #fff,
1706px 1371px #fff, 1498px 967px #fff, 466px 1566px #fff, 1330px 542px #fff,
1651px 1955px #fff, 1416px 685px #fff, 1484px 1447px #fff, 161px 1975px #fff,
866px 1581px #fff, 252px 416px #fff, 1693px 1326px #fff, 1810px 43px #fff,
653px 650px #fff, 744px 654px #fff, 1573px 590px #fff, 1430px 1962px #fff,
52px 312px #fff, 710px 1805px #fff, 1910px 87px #fff, 1767px 1641px #fff,
281px 608px #fff, 191px 95px #fff, 861px 717px #fff, 1890px 1608px #fff,
495px 1847px #fff, 459px 1932px #fff, 206px 1262px #fff, 950px 1761px #fff,
213px 110px #fff, 1051px 1830px #fff, 1550px 55px #fff, 240px 170px #fff,
629px 1986px #fff, 816px 1520px #fff, 1615px 1032px #fff, 995px 1963px #fff,
272px 180px #fff, 916px 1876px #fff, 176px 793px #fff, 517px 1886px #fff,
1907px 1182px #fff, 161px 951px #fff, 1395px 1642px #fff, 278px 1828px #fff,
733px 1605px #fff, 268px 504px #fff, 447px 631px #fff, 773px 232px #fff,
1978px 1272px #fff, 1902px 1673px #fff, 1398px 544px #fff, 1369px 464px #fff,
1902px 1018px #fff, 1864px 558px #fff, 1194px 1182px #fff, 1813px 95px #fff,
1465px 318px #fff, 1929px 1685px #fff, 228px 692px #fff, 1179px 1618px #fff,
1419px 517px #fff, 459px 748px #fff, 1202px 629px #fff, 1456px 1115px #fff,
803px 307px #fff, 380px 466px #fff, 294px 467px #fff, 301px 1257px #fff,
425px 184px #fff, 383px 1178px #fff, 458px 716px #fff, 1766px 495px #fff,
159px 1325px #fff, 12px 1395px #fff, 1024px 104px #fff, 1609px 1955px #fff,
824px 304px #fff, 1338px 1144px #fff, 250px 45px #fff, 1100px 1464px #fff,
1948px 811px #fff, 942px 624px #fff, 39px 356px #fff, 566px 1666px #fff,
901px 517px #fff, 1904px 1230px #fff, 1195px 123px #fff, 200px 187px #fff,
1538px 463px #fff, 518px 1670px #fff, 1680px 183px #fff, 1051px 608px #fff,
51px 70px #fff, 21px 1896px #fff, 863px 583px #fff, 375px 206px #fff,
802px 75px #fff, 152px 1920px #fff, 308px 1255px #fff, 836px 329px #fff,
952px 193px #fff, 515px 800px #fff, 1236px 1406px #fff, 1606px 871px #fff,
1882px 1016px #fff, 825px 931px #fff, 562px 552px #fff, 1699px 1585px #fff,
1643px 1161px #fff, 1796px 1371px #fff, 301px 1056px #fff,
1893px 1668px #fff, 1739px 1660px #fff, 914px 612px #fff, 307px 1px #fff,
88px 315px #fff, 1186px 1326px #fff, 1086px 1646px #fff, 368px 1944px #fff,
1422px 882px #fff, 858px 1844px #fff, 1554px 817px #fff, 1224px 1606px #fff,
1901px 406px #fff, 447px 807px #fff, 1364px 461px #fff, 635px 1541px #fff,
506px 294px #fff, 2000px 1960px #fff, 498px 900px #fff, 1374px 154px #fff,
264px 480px #fff, 1561px 471px #fff, 1381px 1692px #fff, 1954px 1513px #fff,
701px 76px #fff, 1730px 1587px #fff, 1002px 279px #fff, 524px 1620px #fff,
282px 1248px #fff, 686px 1528px #fff, 755px 719px #fff, 789px 1218px #fff,
205px 533px #fff, 330px 1649px #fff, 1089px 1357px #fff, 1116px 975px #fff,
281px 394px #fff, 1635px 1678px #fff, 529px 1008px #fff, 1465px 798px #fff,
1968px 771px #fff, 129px 214px #fff, 733px 10px #fff, 847px 622px #fff,
1114px 8px #fff, 1714px 1396px #fff, 861px 1787px #fff, 480px 1624px #fff,
1026px 741px #fff, 1436px 167px #fff, 1642px 54px #fff, 1228px 141px #fff,
1282px 1416px #fff, 1703px 1192px #fff, 1885px 33px #fff, 1663px 221px #fff,
807px 283px #fff, 67px 1949px #fff, 961px 1480px #fff, 1709px 1359px #fff,
591px 1867px #fff, 1481px 1938px #fff, 189px 244px #fff, 1825px 1499px #fff,
816px 1190px #fff, 1679px 1521px #fff, 1376px 1324px #fff, 951px 1782px #fff,
953px 556px #fff, 1710px 1706px #fff, 1826px 608px #fff, 1326px 1095px #fff,
1467px 1709px #fff, 697px 731px #fff, 1323px 1097px #fff, 1192px 888px #fff,
732px 443px #fff, 431px 1225px #fff, 851px 1716px #fff, 30px 289px #fff,
47px 1807px #fff, 411px 1084px #fff, 881px 1385px #fff, 1347px 1646px #fff,
1577px 448px #fff, 1459px 229px #fff, 1178px 1305px #fff, 1467px 1527px #fff,
538px 807px #fff, 1377px 1531px #fff, 1398px 78px #fff, 1573px 422px #fff,
10px 1896px #fff, 435px 544px #fff, 224px 406px #fff, 7px 609px #fff,
752px 1956px #fff, 268px 964px #fff, 1395px 1358px #fff, 38px 492px #fff,
1819px 705px #fff, 56px 249px #fff, 1337px 1983px #fff, 151px 5px #fff,
533px 102px #fff, 1849px 678px #fff, 1393px 1483px #fff, 1166px 735px #fff,
425px 98px #fff, 907px 1764px #fff, 1628px 379px #fff, 1356px 1566px #fff,
1917px 1476px #fff, 162px 1815px #fff, 1518px 1495px #fff, 1889px 259px #fff,
342px 100px #fff, 1520px 248px #fff, 606px 1010px #fff, 553px 1713px #fff,
134px 1898px #fff, 721px 1342px #fff, 2px 1437px #fff, 1563px 890px #fff,
888px 1370px #fff, 1606px 1304px #fff, 786px 1421px #fff, 1426px 1692px #fff,
1693px 135px #fff, 1695px 49px #fff, 1145px 222px #fff, 65px 1376px #fff,
1027px 1788px #fff, 1007px 873px #fff, 1380px 67px #fff, 341px 1319px #fff,
34px 583px #fff, 1066px 921px #fff, 113px 689px #fff, 412px 1925px #fff,
1268px 67px #fff, 1535px 1358px #fff, 530px 317px #fff, 425px 349px #fff,
1435px 572px #fff, 1118px 1285px #fff, 875px 1186px #fff, 472px 520px #fff,
603px 463px #fff, 1578px 1649px #fff, 1659px 1046px #fff, 895px 1602px #fff,
1486px 1084px #fff, 1683px 1294px #fff, 290px 1862px #fff, 739px 1192px #fff,
615px 301px #fff, 696px 1592px #fff, 530px 79px #fff, 1718px 1266px #fff,
151px 1700px #fff, 1989px 1824px #fff, 1237px 1613px #fff, 964px 1299px #fff,
335px 341px #fff, 1133px 975px #fff, 996px 438px #fff, 281px 1552px #fff,
1352px 1071px #fff, 1057px 1379px #fff, 342px 14px #fff, 1154px 1563px #fff,
1802px 705px #fff, 737px 1790px #fff, 657px 1487px #fff, 1533px 1166px #fff,
1195px 704px #fff, 1448px 216px #fff, 1606px 1480px #fff, 1783px 1450px #fff,
626px 1292px #fff, 522px 258px #fff, 724px 1347px #fff, 55px 106px #fff,
948px 1791px #fff, 1672px 1688px #fff, 1094px 1534px #fff, 464px 1681px #fff,
666px 1081px #fff, 1413px 785px #fff, 74px 122px #fff, 1023px 1171px #fff,
407px 1852px #fff, 1254px 1667px #fff, 662px 256px #fff, 1969px 1163px #fff,
905px 939px #fff, 514px 120px #fff, 306px 365px #fff, 287px 1828px #fff,
881px 149px #fff, 1859px 403px #fff, 1008px 1725px #fff, 305px 564px #fff,
543px 1109px #fff, 1040px 337px #fff, 957px 62px #fff, 1039px 1250px #fff,
869px 267px #fff, 1450px 229px #fff, 1910px 686px #fff, 1373px 1913px #fff,
1202px 1617px #fff, 911px 545px #fff, 1537px 1311px #fff, 124px 1609px #fff,
1717px 1591px #fff, 1916px 1588px #fff, 550px 771px #fff, 596px 1107px #fff,
12px 1229px #fff, 984px 225px #fff, 981px 962px #fff, 1995px 1998px #fff,
822px 375px #fff, 542px 88px #fff, 277px 1327px #fff, 1028px 404px #fff,
1294px 195px #fff, 1456px 240px #fff, 333px 1451px #fff, 239px 1480px #fff,
53px 1845px #fff, 1239px 1585px #fff, 1826px 694px #fff, 1995px 682px #fff,
1804px 935px #fff, 1926px 1321px #fff, 1545px 850px #fff, 1957px 1071px #fff,
458px 977px #fff, 252px 1383px #fff, 616px 65px #fff, 192px 674px #fff,
547px 1603px #fff, 802px 1291px #fff, 1182px 1847px #fff, 303px 1498px #fff,
591px 952px #fff, 1539px 1472px #fff, 1997px 1270px #fff, 1707px 1895px #fff,
839px 252px #fff, 51px 1666px #fff, 1863px 1945px #fff, 1485px 1971px #fff,
59px 1569px #fff, 1486px 840px #fff, 852px 1370px #fff, 752px 1066px #fff,
1639px 947px #fff, 1213px 594px #fff, 1937px 390px #fff, 827px 1693px #fff,
1883px 1645px #fff, 1220px 1886px #fff, 499px 760px #fff, 1813px 722px #fff,
100px 223px #fff, 1270px 540px #fff, 1165px 894px #fff, 1846px 833px #fff,
172px 19px #fff, 109px 1228px #fff, 1431px 1565px #fff, 1565px 737px #fff,
326px 1377px #fff, 815px 1983px #fff, 1181px 1790px #fff, 79px 597px #fff,
264px 1777px #fff, 972px 864px #fff, 45px 1063px #fff, 797px 1905px #fff,
950px 1326px #fff, 1199px 488px #fff, 1921px 32px #fff, 894px 518px #fff,
1482px 1405px #fff, 660px 471px #fff, 171px 1537px #fff, 699px 1832px #fff,
725px 1988px #fff, 1496px 757px #fff, 1243px 310px #fff, 1274px 262px #fff,
790px 732px #fff, 1704px 1810px #fff, 959px 1327px #fff, 459px 161px #fff,
1629px 303px #fff, 1390px 699px #fff, 1973px 1799px #fff, 841px 963px #fff,
1985px 1621px #fff, 1267px 452px #fff, 1537px 1757px #fff, 251px 814px #fff,
1855px 987px #fff, 777px 26px #fff, 1837px 284px #fff, 1799px 1075px #fff,
1622px 337px #fff, 1283px 91px #fff, 1760px 585px #fff, 1669px 1911px #fff,
1397px 1669px #fff, 866px 1163px #fff, 281px 1425px #fff, 1455px 1643px #fff,
141px 402px #fff, 979px 1566px #fff, 1723px 589px #fff, 146px 424px #fff,
559px 1477px #fff, 779px 1999px #fff, 908px 674px #fff, 355px 570px #fff,
1760px 1654px #fff, 958px 1880px #fff, 604px 926px #fff, 291px 1165px #fff,
1856px 1003px #fff, 1104px 1161px #fff, 1296px 1341px #fff, 225px 406px #fff,
1180px 351px #fff, 1037px 372px #fff, 1439px 1669px #fff, 1110px 743px #fff,
1255px 419px #fff, 551px 1213px #fff, 490px 790px #fff, 1822px 1899px #fff,
100px 1283px #fff, 1119px 81px #fff;
}
#stars:after {
content: " ";
position: absolute;
bottom: 0px;
width: 1px;
height: 1px;
background: transparent;
}
@keyframes animStar {
from {
transform: translateY(-1400px);
}
to {
transform: translateY(-0px);
}
}
/**Own Code**/
.login {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 300px;
}
.login-screen {
background-color: #233142;
padding: 20px;
border-radius: 5px
}
.login-title {
text-align: center;
color: #587ca7;
}
.login-form {
text-align: center;
}
.login-box {
margin-bottom: 10px;
}
.login-field {
color: #7996b9;
background-color: #2c3e54;
}
input {
text-align: center;
background-color: #ECF0F1;
border: 2px solid transparent;
border-radius: 3px;
font-size: 16px;
font-weight: 200;
padding: 10px 0;
width: 250px;
transition: border .5s;
}
input:focus {
border: 2px solid #3498DB;
box-shadow: none;
}
.btn {
border: 2px solid transparent;
background: #3498DB;
color: #ffffff;
font-size: 16px;
line-height: 25px;
padding: 10px 0;
text-decoration: none;
text-shadow: none;
border-radius: 3px;
box-shadow: none;
transition: 0.25s;
display: block;
width: 250px;
margin: 0 auto;
}
.btn:hover {
background-color: #2980B9;
}
.login-link {
font-size: 12px;
color: #7996b9;
display: block;
margin-top: 12px;
}
.wpassword {
font-size: 12px;
color: #ff0000;
margin: center;
padding-left: 15%;
}
+195
View File
@@ -0,0 +1,195 @@
/* LOGO-WEBSTATUS */
@media only screen and (max-width: 967px) {
h1{
font-size: 6vw;
}
}
@media only screen and (max-width: 467px) {
h1{
font-size: 10vw;
}
}
/* GLOBAL-STATUS RESPONSIVE SHRINKING AND TEXT SHRINKING */
@media only screen and (max-width: 1067px) {
.status {
max-width: 93%;
}
}
@media only screen and (max-width: 967px) {
.status {
max-width: 92%;
}
}
@media only screen and (max-width: 867px) {
.status {
max-width: 90%;
}
}
@media only screen and (max-width: 767px) {
.status {
max-width: 87%;
}
}
@media only screen and (max-width: 517px) {
.status {
max-width: 80%;
}
}
@media only screen and (max-width: 457px) {
.status {
max-width: 75%;
}
.status-text {
font-size: 0.8em;
}
.status-time {
margin-top: 2.5px;
font-size: 0.8em;
}
}
/* TIMELINE RESPONSIVE SHRINKING */
@media only screen and (max-width: 1439px) {
.timeline .item .message {
width: 95%;
}
}
@media only screen and (max-width: 1200px) {
.timeline .item .message {
width: 94%;
}
}
@media only screen and (max-width: 1000px) {
.timeline .item .message {
width: 93%;
}
}
@media only screen and (max-width: 900px) {
.timeline .item .message {
width: 92%;
}
}
@media only screen and (max-width: 700px) {
.timeline .item .message {
width: 89%;
}
}
@media only screen and (max-width: 550px) {
.timeline .item .message {
width: 86%;
}
}
@media only screen and (max-width: 450px) {
.timeline .item .message {
width: 81%;
}
}
@media only screen and (max-width: 400px) {
.timeline .item .message {
width: 76%;
}
}
@media only screen and (max-width: 350px) {
.timeline .item .message {
width: 71%;
}
}
@media only screen and (max-width: 300px) {
.timeline .item .message {
width: 64%;
}
}
/* TIMELINE DATE AND SERVICE INFO MOVE */
@media only screen and (max-width: 1750px) {
.timeline-date {
margin-left: -60px;
margin-top: -130px;
}
.timeline {
margin-top: 150px;
}
.timeline-info {
position: absolute;
margin-left: -33px;
margin-top: -90px;
}
.timeline-services {
margin-left: -69px;
margin-top: -76px;
}
.vertical {
grid-gap: 3px;
grid-template-columns: 33% 33% 33% 33% 33% 33% 33%;
}
}
@media only screen and (max-width: 430px) {
.vertical {
grid-gap: 3px;
grid-template-columns: 33% 33% 33% 33% 33%;
}
}
@media only screen and (max-width: 650px) {
.status-annoucement {
visibility:hidden
}
}
/* MORE BOX RESIZING */
@media screen and (max-width: 700px){
.more-box{
width: 70%;
}
.more-popup{
width: 70%;
}
}
@media screen and (max-height: 700px){
.more-popup {
margin: 9% auto;
}
}
@media screen and (max-height: 600px){
.more-popup {
margin: 2% auto;
}
}
@media screen and (max-width: 400px){
.more-popup {
margin: 2% auto;
}
}
+642
View File
@@ -0,0 +1,642 @@
body{
background: #233142;
overflow-x: hidden;
max-width: 1400px;
margin: 0 auto;
padding:15px;
}
h1{
vertical-align: top;
text-align: left;
font-family: "Lato", sans-serif;
font-size: 3vw;
color: #009900;
position: relative;
left: 25px;
}
h4{
font-family: 'Brush Script MT', cursive;
font-size: 0.2vw;
color: #009900;
}
@-webkit-keyframes dual-ring {
0% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes dual-ring {
0% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
.dual-ring div {
width: 20px;
height: 20px;
border-radius: 50%;
border: 2px solid #000;
border-color: #039be5 transparent #039be5 transparent;
-webkit-animation: dual-ring 1.3s linear infinite;
animation: dual-ring 1.3s linear infinite;
}
.status {
border-radius: 4px;
display: -webkit-box;
display: flex;
-webkit-box-align: center;
align-items: center;
border: 2px solid transparent;
-webkit-transition: 0.5es;
transition: 0.5s;
padding: 15px;
margin: 0 auto;
max-width: 94%;
}
.status > div {
width:100%;
}
.status.status-checking {
background-color: #233142;
border-color: #90CAF9;
color: #90CAF9;
}
.status.status-okay {
background-color: #233142;
color: #8bc34a;
border-color: #8bc34a;
}
.status.status-maintenance {
background-color: #233142;
color: #ff9933;
border-color: #ff9933;
}
.status.status-problems {
background-color: #233142;
color: #ff1a1a;
border-color: #ff1a1a;
}
.status-text {
font-weight: bold;
display: inline;
font-family: 'Trebuchet MS', sans-serif;
}
.status-time {
float: right;
font-weight: bold;
font-family: 'Trebuchet MS', sans-serif;
}
.status .loading {
width: 25px;
height: 25px;
margin-right: 10px;
}
.status .loading.fa {
font-size: 1.6em;
}
input[type="checkbox"] {
position: absolute;
opacity: 0;
z-index: -1;
}
label {
position: relative;
display: inline-block;
padding: 1px 0 0 1.5em;
height: 1.5em;
line-height: 1.0;
cursor: pointer;
font-family: 'Trebuchet MS', sans-serif;
color: #7996b9;
float: right;
right: 24px;
}
label::before,
label::after {
position: absolute;
top: 0;
left: 0;
display: block;
width: 1.0em;
height: 1.0em;
}
label::before {
content: " ";
border: 2px solid #7996b9;
border-radius: 20%;
}
input[type="checkbox"] + label::after {
font-family:FontAwesome;
content: "\f00c";
color: #7996b9;
line-height: 1.3;
text-align: center;
margin-left:2px;
}
input[type="checkbox"]:checked + label::before {
/*background: #587ca7;
border-color: #587ca7;*/
}
input[type="checkbox"] + label::after {
-webkit-transform: scale(0);
-ms-transform: scale(0);
-o-transform: scale(0);
transform: scale(0);
}
input[type="checkbox"]:checked + label::after {
-webkit-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
}
label::before,
label::after {
-webkit-transition: .25s all ease;
-o-transition: .25s all ease;
transition: .25s all ease;
}
.service-block {
padding: 13px;
font-family: "Lato", sans-serif;
margin-bottom: -30px;
}
.service-title {
color: #8bc34a;
}
.services {
border: 1px solid #E3E3E3;
border-radius: 4px;
list-style-type: none;
padding: 1rem 0.75rem 0.25rem;
border: 2px solid #000;
border-color: #233142 transparent #233142 transparent;
}
.services-okay {
background-color: #233142;
color: #8bc34a;
}
.services-maintenance {
background-color: #233142;
color: #ff9933;
}
.services-troubles {
background-color: #233142;
color: #ff1a1a;
}
.services-header {
margin-top: 0;
}
.service {
border: 1px solid #E3E3E3;
border-color: #354a64;
border-radius: 2px;
cursor: pointer;
margin-bottom: 0.5rem;
padding: 0.75rem 0;
position: relative;
}
.service-name {
display:flex;
border-left-width:2px;
border-left-style:solid;
padding-left: 1rem;
}
.service-icon {
display:flex;
float:left;
}
.service-icon:before {
font-family:FontAwesome;
display: inline-block;
height: 1.4rem;
line-height: 1.4rem;
text-align: center;
width: 2.8rem;
}
.service-okay > .service-name {
border-left-color: #42996D;
}
.service-okay > .service-icon:before {
color: #42996D;
content: "\f00c";
}
.service-maintenance > .service-name {
border-left-color: #ff9933;
}
.service-maintenance > .service-icon:before {
color: #ff9933;
content: "\f017";
}
.service-troubles > .service-name {
border-left-color: #ff1a1a;
}
.service-troubles > .service-icon:before {
color: #ff1a1a;
content: "\f00d";
}
.status-annoucement {
float: right;
margin-top: -20px;
padding-right: 20px;
font-family: 'Trebuchet MS', sans-serif;
position: relative;
}
.status-annoucement:before {
font-family:FontAwesome;
content: "\f12a";
color: #ff9933;
}
.timeline {
position: relative;
padding-left: 70px;
margin-top: 100px;
}
.timeline:before {
position: absolute;
width: 2px;
height: 100%;
left: 30px;
content: "";
background: #354a64;
}
.timeline .item {
position: relative;
}
.timeline .item .circle {
position: absolute;
top: 18px;
left: -46px;
background: #acbbc7;
border: 4px solid #354a64;
width: 6px;
height: 6px;
border-radius: 50%;
}
.timeline .item .message {
width: 1264px;
position: relative;
padding: 15px 20px;
margin-bottom: 15px;
background: #2c3e54;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
border-radius: 5px;
font-family: 'Trebuchet MS', sans-serif;
color: #a6a6a6;
}
.timeline-icon {
display:flex;
float:left;
padding-right: 15px;
}
.timeline-new:before {
font-family:FontAwesome;
content: "\f0a1";
color: #cc6600;
}
.timeline-working:before {
font-family:FontAwesome;
content: "\f013";
color: #0052cc;
}
.timeline-update:before {
font-family:FontAwesome;
content: "\f0e5";
color: #4d9900;
}
.timeline-finished:before {
font-family:FontAwesome;
content: "\f00c";
color: #8bc34a;
}
.timeline .item .message:before {
position: absolute;
z-index: 0;
content: "";
top: 25px;
left: -6px;
box-sizing: border-box;
border: 5px solid transparent;
border-top-color: #2c3e54;
border-bottom-color: transparent;
border-left-color: #2c3e54;
border-right-color: transparent;
filter: drop-shadow(-1px 0 1px rgba(0, 0, 0, 0.08));
transform-origin: 0 0;
transform: rotate(-45deg);
}
.timeline-date {
position: absolute;
margin-left: -260px;
margin-top: 10px;
}
.timeline-date h1 {
font-size: 1.8em;
font-family: "Lato", sans-serif;
color: #3e5675;
}
.timeline-info {
position: absolute;
margin-left: -232px;
margin-top: 50px;
}
.timeline-info h2 {
font-size: 0.8em;
font-family: "Lato", sans-serif;
color: #3e5675;
}
.timeline-services {
position: absolute;
margin-left: -270px;
margin-top: 63px;
max-width: 180px;
text-align: center;
}
.timeline-services li {
font-size: 0.8em;
font-family: "Lato", sans-serif;
color: #3e5675;
}
.timeline-services li {
list-style-type: none;
}
.vertical {
display: grid;
grid-gap: 5px;
grid-template-columns: 33% 33% 33%;
}
.footer {
margin-top: 50px;
color: #868c96;
}
.footer-heart {
color: #f42;
font-size: 0.8em;
}
.footer-subtext {
color: #868c96;
margin-top: -94px;
}
.footer p {
padding: 40px 0;
text-align: center;
}
.footer img {
width: 44px;
}
.footer a {
text-decoration: none;
color: #868c96;
}
.legend {
position: absolute;
margin-top: -40px;
display: inline-block;
left: 30px;
}
.legend-text {
color: #a6a6a6;
font-family: "Lato", sans-serif;
font-size: 0.8em;
padding-right: 5px;
}
.legend-maintenance:before {
font-family:FontAwesome;
content: "\f017";
color: #ff9933;
}
.legend-problems:before {
font-family:FontAwesome;
content: "\f00d";
color: #ff1a1a;
}
.legend-lastdown:before {
font-family:FontAwesome;
color: #cc6600;
content: "\f05c";
}
.more-box {
width: 40%;
margin: 0 auto;
background: rgba(255,255,255,0.2);
padding: 35px;
border: 2px solid #233142;
border-radius: 20px/50px;
background-clip: padding-box;
text-align: center;
}
.more-overlay {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(0, 0, 0, 0.7);
transition: opacity 500ms;
visibility: hidden;
opacity: 0;
}
.more-overlay:target {
visibility: visible;
opacity: 1;
}
.more-popup {
margin: 15% auto;
padding: 20px;
background: #233142;
border-radius: 5px;
width: 30%;
position: relative;
transition: all 5s ease-in-out;
}
.more-popup h2 {
margin-top: 0;
color: #a6a6a6;
font-family: Tahoma, Arial, sans-serif;
}
.more-popup .close {
position: absolute;
top: 20px;
right: 30px;
transition: all 200ms;
font-size: 30px;
font-weight: bold;
text-decoration: none;
color: #a6a6a6;
}
.more-popup .close:hover {
color: #009900;
}
.more-popup .content {
max-height: 30%;
overflow: auto;
}
.more-box-caller {
text-decoration: none;
}
.more-up {
margin-top: -12px;
padding-left: 1px;
color: #42996D;
font-family: Tahoma, Arial, sans-serif;
}
.more-up:before {
color: #42996D;
content: "\f00c";
font-family:FontAwesome;
}
.more-working {
margin-top: -12px;
padding-left: 1px;
color: #0052cc;
font-family: Tahoma, Arial, sans-serif;
}
.more-working:before {
color: #0052cc;
content: "\f013";
font-family:FontAwesome;
}
.more-maintenance {
margin-top: -12px;
padding-left: 1px;
color: #ff9933;
font-family: Tahoma, Arial, sans-serif;
}
.more-maintenance:before {
color: #ff9933;
content: "\f017";
font-family:FontAwesome;
}
.more-troubles {
margin-top: -12px;
padding-left: 1px;
color: #ff1a1a;
font-family: Tahoma, Arial, sans-serif;
}
.more-troubles:before {
color: #ff1a1a;
content: "\f00d";
font-family:FontAwesome;
}
.more-lastdown {
margin-top: 2px;
padding-left: 2px;
color: #cc6600;
font-family: Tahoma, Arial, sans-serif;
}
.more-lastdown:before {
color: #cc6600;
content: "\f05c";
font-family:FontAwesome;
}
.more-maintenance-info {
margin-top: 4px;
margin-top: 4px;
padding-left: 2px;
color: #a6a6a6;
font-family: Tahoma, Arial, sans-serif;
}
.more-maintenance-info:before {
color: #ff9933;
content: "\f017";
font-family:FontAwesome;
}
.more-hide-maintenance {
display: none;
}
.hidden {
display: none;
visibility: hidden;
}
+52
View File
@@ -0,0 +1,52 @@
<?php
function sMaintenance() {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$services = mysqli_query($con, "SELECT priority, groupid, name, id, status FROM services ORDER BY priority DESC");
$find = False;
while($servicelist = mysqli_fetch_array($services)){
if(strpos($servicelist['status'], "Maintenance") !== false) {
$find = True;
}
}
return $find;
}
function sOffline() {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$services = mysqli_query($con, "SELECT priority, groupid, name, id, status FROM services ORDER BY priority DESC");
$find = False;
while($servicelist = mysqli_fetch_array($services)){
if(strpos($servicelist['status'], "Offline") !== false) {
$find = True;
}
}
return $find;
}
function getName($id) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
return mysqli_fetch_assoc(mysqli_query($con, "SELECT sname FROM services WHERE id='".mysqli_real_escape_string($con, $id)."'"))["sname"];
}
?>
+280
View File
@@ -0,0 +1,280 @@
<?php
//Fetch data from database;
include('config.php');
include('functions.php');
//Checking if setup is complete
if(!file_exists("config.php")) {
header("Location: install/index.php");
die();
}
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$instancename = mysqli_fetch_assoc(mysqli_query($con, "SELECT value FROM settings WHERE type='instancename'"))["value"];
$autoreload_setting = mysqli_fetch_assoc(mysqli_query($con, "SELECT value FROM settings WHERE type='autoreload'"))["value"];
$modular_setting = mysqli_fetch_assoc(mysqli_query($con, "SELECT value FROM settings WHERE type='modularwindow'"))["value"];
$groups = mysqli_query($con, "SELECT priority, name, id FROM groups ORDER BY priority DESC");
$services = mysqli_query($con, "SELECT priority, groupid, name, id, status FROM services ORDER BY priority DESC");
$incidents = mysqli_query($con, "SELECT id, status, services, text, date, childof FROM incidents ORDER BY id ASC");
$incidents2 = mysqli_query($con, "SELECT id, status, services, text, date, childof FROM incidents ORDER BY id ASC");
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link type="text/css" rel="stylesheet" href="css/style.css" />
<link type="text/css" rel="stylesheet" href="css/mobile.css" />
<link rel="stylesheet" href="css/font-awesome/css/font-awesome.css">
<?php
echo '<title>'.$instancename.' - Home</title>';
?>
</head>
<body>
<?php
echo '<h1>'.$instancename.'</h1>';
?>
<!-- GLOBAL STATUS-->
<?php
if(sOffline()) {
echo '
<div class="global-status">
<div id="status" class="status status-problems">
<div class="loading fa fa-times">
</div>
<div>
<div class="status-text">Some Systems may not work at the moment</div>
<div id="timer" class="status-time"></div>
</div>
</div>';
} else if(sMaintenance()) {
echo '
<div class="global-status">
<div id="status" class="status status-maintenance">
<div class="loading fa fa-times">
</div>
<div>
<div class="status-text">Systems currently under maintenance</div>
<div id="timer" class="status-time"></div>
</div>
</div>';
} else {
echo '
<div class="global-status">
<div id="status" class="status status-okay">
<div class="loading fa fa-times">
</div>
<div>
<div class="status-text">All Systems operational!</div>
<div id="timer" class="status-time"></div>
</div>
</div>';
}
?>
<!-- AUTORELOAD CHECKBOX-->
<?php
if($autoreload_setting == "enabled") {
echo '
<p>
<input type="checkbox" id="cb1" checked>
<label for="cb1">Autoreload</label>
</p>';
}
?>
</div>
<?php
mysqli_data_seek($groups, 0);
while($grouplist = mysqli_fetch_array($groups)){
echo '
<div class="service-block">
<ul class="services">
<h3 class="services-header service-title">'.$grouplist['name'].'</h3>
';
mysqli_data_seek($services, 0);
while($servicelist = mysqli_fetch_array($services)){
if($grouplist['id'] == $servicelist['groupid']) {
if($servicelist['status'] == "Online") {
echo '
<li id="status-'.$servicelist['id'].'" class="service service-okay services-okay">
<div class="service-icon"></div>
<div class="service-name">'.$servicelist['name'].'</div>
</li></a>
';
} else if($servicelist['status'] == "Maintenance") {
echo '
<li id="status-'.$servicelist['id'].'" class="service service-maintenance services-maintenance">
<div class="service-icon"></div>
<div class="service-name">'.$servicelist['name'].'</div>
<div id="alert-'.$servicelist['id'].'" class="status-annoucement"></div>
</li></a>
';
} else if($servicelist['status'] == "Offline") {
echo '
<li id="status-'.$servicelist['id'].'" class="service service-troubles services-troubles">
<div class="service-icon"></div>
<div class="service-name">'.$servicelist['name'].'</div>
<div id="alert-'.$servicelist['id'].'" class="status-annoucement"></div>
</li></a>
';
}
}
}
echo '
</ul>
</div>
';
}
?>
<!-- TIMELINE REPORT NEW -->
<?php
mysqli_data_seek($incidents, 0);
$count = 3;
if(isset($_GET['lmore'])) {
$add = (int) $_GET['lmore'];
$count += $add;
}
while($incidentlist = mysqli_fetch_array($incidents)){
if($count != 0) {
if(strpos($incidentlist['childof'], "-1") !== false) {
$count--;
echo '
<div class="timeline">
<div class="timeline-date">
<h1>'.str_replace("-", ".", $incidentlist['date']).'</h1>
</div>
<div class="timeline-info">
<h2>Affected Services:</h2>
</div>
<div class="timeline-services">
<ul class="vertical">';
$servicearray = explode(",", $incidentlist['services']);
foreach ($servicearray as $index) {
echo '<li>'.getName($index).'</li>';
}
echo '
</ul>
</div>
<div class="item">
<div class="circle"></div>
<div class="message">';
if(strpos($incidentlist['status'], "new") !== false) {
echo '
<div class="timeline-icon timeline-new"></div>
'.$incidentlist['text'].'
</div>
</div>';
} else if(strpos($incidentlist['status'], "working") !== false) {
echo '
<div class="timeline-icon timeline-working"></div>
'.$incidentlist['text'].'
</div>
</div>';
} else if(strpos($incidentlist['status'], "update") !== false) {
echo '
<div class="timeline-icon timeline-update"></div>
'.$incidentlist['text'].'
</div>
</div>';
} else if(strpos($incidentlist['status'], "finished") !== false) {
echo '
<div class="timeline-icon timeline-finished"></div>
'.$incidentlist['text'].'
</div>
</div>';
}
mysqli_data_seek($incidents2, 0);
while($incidentlist2 = mysqli_fetch_array($incidents2)){
if(strpos($incidentlist['id'], $incidentlist2['childof']) !== false) {
echo '
<div class="item">
<div class="circle"></div>
<div class="message">';
if(strpos($incidentlist2['status'], "new") !== false) {
echo '
<div class="timeline-icon timeline-new"></div>
'.$incidentlist2['text'].'
</div>
</div>';
} else if(strpos($incidentlist2['status'], "working") !== false) {
echo '
<div class="timeline-icon timeline-working"></div>
'.$incidentlist2['text'].'
</div>
</div>';
} else if(strpos($incidentlist2['status'], "update") !== false) {
echo '
<div class="timeline-icon timeline-update"></div>
'.$incidentlist2['text'].'
</div>
</div>';
} else if(strpos($incidentlist2['status'], "finished") !== false) {
echo '
<div class="timeline-icon timeline-finished"></div>
'.$incidentlist2['text'].'
</div>
</div>
';
}
}
}
echo '</div>';
}
}
}
?>
<!-- FOOTER -->
<footer class="footer">
<p class="footer">Powered by <a href="#" target="_blank">WebStatus</a></p>
<p class="footer-subtext">Made with <span class="footer-heart"><i class="fa fa-heart"></i></span> by Givou</p>
</footer>
<div class="legend">
<span class="timeline-new legend-text"> Annoucement</span>
<span class="timeline-update legend-text"> Update</span>
<span class="timeline-working legend-text"> Working on a fix</span>
<span class="timeline-finished legend-text"> Finished / No Problems</span>
<span class="legend-maintenance legend-text"> Maintenance</span>
<span class="legend-lastdown legend-text"> Last time down</span>
<span class="legend-problems legend-text"> Offline / Problems</span>
</div>
</body>
<?php
if($autoreload_setting == "enabled") {
echo '<script type="text/javascript" src="js/checking.js"></script>';
}
?>
</html>
+117
View File
@@ -0,0 +1,117 @@
<?php
session_start();
if(file_exists("../config.php")) {
header("Location: ../index.php");
die();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link type="text/css" rel="stylesheet" href="style.css" />
<title>WebStatus - Simplesetup</title>
</head>
<body>
<div class="center">
<form method="POST" action="index.php">
<h2 class="text">Setup</h2>
<?php
if(isset($_GET['mysqlerror'])) {
echo '<p class="error">MySQL Connection failed, please check your inputs!</p>';
}
if(isset($_GET['passwordnotmatch'])) {
echo '<p class="error">Passwords do not match!</p>';
}
?>
<p class="subtext">Website Settings:</p>
<input type="text" class="" placeholder="Websitetitle" name="websitename" required>
<p class="subtext">Database Setup:</p>
<input type="text" placeholder="Host" name="dbhost" required>
<input type="text" placeholder="Databasename" name="dbname" required>
<input type="text" placeholder="User" name="dbuser" required>
<input type="password" placeholder="Password" name="dbpwd" required>
<p class="subtext">Administrative User:</p>
<input type="text" placeholder="Username" name="username" required>
<input type="password" placeholder="Password" name="password" required>
<input type="password" placeholder="repeat password" name="password2" required>
<input class="button-green" value="Submit" type="submit">
</form>
</div>
</body>
</html>
<?php
if(isset($_POST['dbhost']) && isset($_POST['dbname']) && isset($_POST['dbpwd']) && isset($_POST['dbuser'])
&& isset($_POST['websitename']) && isset($_POST['username']) && isset($_POST['password']) && isset($_POST['password2'])) {
if(!file_exists("../config.php")) {
//Inputs read in, check inputs, start infliating database
$instancename = $_POST['websitename'];
$dbhost = $_POST['dbhost'];
$dbname = $_POST['dbname'];
$dbpwd = $_POST['dbpwd'];
$dbuser = $_POST['dbuser'];
$admin_username = $_POST['username'];
$admin_password = $_POST['password'];
$admin_password2 = $_POST['password2'];
$admin_password_hash = password_hash($_POST['password'], PASSWORD_DEFAULT);
//Check if passwords of the administrative user match
if(strcmp($admin_password, $admin_password2)) {
header("Location: index.php?passwordnotmatch");
die();
}
$con = mysqli_connect($dbhost, $dbuser, $dbpwd, $dbname) OR header("Location: index.php?mysqlerror") && die();
//Creating Tables
mysqli_query($con, "CREATE TABLE IF NOT EXISTS accounts(id int(255) PRIMARY KEY AUTO_INCREMENT, username varchar(255), password varchar(255), role varchar(255));");
mysqli_query($con, "CREATE TABLE IF NOT EXISTS groups(id int(255) PRIMARY KEY AUTO_INCREMENT, priority int(255), name varchar(255));");
mysqli_query($con, "CREATE TABLE IF NOT EXISTS incidents(id int(255) PRIMARY KEY AUTO_INCREMENT, status varchar(255), services varchar(255), text varchar(255), date varchar(255), childof int(255));");
mysqli_query($con, "CREATE TABLE IF NOT EXISTS services(id int(255) PRIMARY KEY AUTO_INCREMENT, priority int(255), groupid int(255), name varchar(255), status varchar(255), cmaintenance int(255), sname int(255));");
mysqli_query($con, "CREATE TABLE IF NOT EXISTS settings(type varchar(255), value varchar(255));");
//Infliating Settings
mysqli_query($con, "INSERT INTO settings(type, value) VALUES ('instancename', '".mysqli_real_escape_string($con,$instancename)."')");
mysqli_query($con, "INSERT INTO settings(type, value) VALUES ('autoreload', 'enabled')");
//Creating Administrative User
mysqli_query($con, "INSERT INTO accounts (username, password, role) VALUES ('".mysqli_real_escape_string($con,$admin_username)."',
'".mysqli_real_escape_string($con,$admin_password_hash)."', 'administrator')");
//Create Config
if($con != null) {
$config = ('<?php
$config=array(
"DBHOST"=>"'.$dbhost.'",
"DBNAME"=>"'.$dbname.'",
"DBPWD"=>"'.$dbpwd.'",
"DBUSER"=>"'.$dbuser.'"
);
?>');
file_put_contents("../config.php",$config);
header("Location: ../admin.php");
}
//Setup File already exists
} else {
header("Location: ../index.php");
die();
}
}
?>
+114
View File
@@ -0,0 +1,114 @@
body {
background: #233142;
}
input {
text-align: center;
background-color: #ECF0F1;
border: 2px solid transparent;
border-radius: 3px;
font-size: 15px;
font-weight: 200;
padding: 10px 0;
width: 200px;
transition: border .5s;
margin-left: -2px;
margin-top: 2px;
color: #7996b9;
background-color: #2c3e54;
display: block !important;
}
input:focus {
border: 2px solid #3498DB;
box-shadow: none;
}
.center {
transform: translate(440%, 10%);
width: 10%;
}
.text {
font-family: "Lato", sans-serif;
color: #a6a6a6;
}
.subtext {
font-family: "Lato", sans-serif;
color: #a6a6a6;
}
.error {
font-family: "Lato", sans-serif;
size: 1em;
color: #800000;
}
button {
position: relative;
margin-bottom: 2px;
font-size: 15px !important;
font-weight: 200 !important;
color: #7996b9 !important;
}
button:focus {
outline: 0;
}
button:before {
content: "";
display: block;
position: absolute;
background: rgba(255, 255, 255, 0.5);
width: 60px;
height: 100%;
left: 0;
top: 0;
opacity: 0.5;
filter: blur(30px);
transform: translateX(-100px) skewX(-15deg);
}
button:after {
content: "";
display: block;
position: absolute;
background: rgba(255, 255, 255, 0.2);
width: 30px;
height: 100%;
left: 30px;
top: 0;
opacity: 0;
filter: blur(5px);
transform: translateX(-100px) skewX(-15deg);
}
button:hover:before {
transform: translateX(300px) skewX(-15deg);
opacity: 0.6;
transition: 0.7s;
}
button:hover:after {
transform: translateX(300px) skewX(-15deg);
opacity: 1;
transition: 0.7s;
}
.button-green {
background: #2c3e54;
color: #ccc;
width: 80px;
height: 42px;
border: 0;
font-size: 18px;
border-radius: 4px;
font-family: "Raleway", sans-serif;
transition: 0.6s;
overflow: hidden;
}
.button-green:hover {
background: #338033;
cursor: pointer;
}
+104
View File
@@ -0,0 +1,104 @@
timer();
var checkbox = document.getElementById("cb1");
function timer() {
var timeleft = 10;
var downloadTimer = setInterval(function(){
if (checkbox.checked) {
if(timeleft <= 0){
clearInterval(downloadTimer);
document.getElementById("timer").innerHTML = "checking";
reload();
} else {
document.getElementById("timer").innerHTML = timeleft + "s";
}
timeleft -= 1;
} else {
if(document.getElementById("timer").innerHTML.includes("s")) {
document.getElementById("timer").innerHTML = "";
}
}
}, 1000);
}
function reload() {
if(checkbox.checked) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var json = JSON.parse(this.responseText);
var current = json.overall;
var status = document.getElementById("status");
var loading = document.querySelector('#status .loading');
var text = document.querySelector('#status .status-text');
loading.innerHTML = '<div style="width:100%;height:100%" class="dual-ring"><div></div></div>';
loading.className = 'loading';
status.className = "status status-checking";
text.innerHTML = 'Checking...';
setTimeout(function () {
document.getElementById("timer").innerHTML = "10s";
switch(current) {
case "Online":
loading.innerHTML = '';
loading.className = 'loading fa fa-check';
status.className = "status status-okay";
text.innerHTML = 'All systems operational';
break;
case "Maintenance":
loading.innerHTML = '';
loading.className = 'loading fa fa-clock-o';
status.className = "status status-maintenance";
text.innerHTML = 'Systems currently under maintenance';
break;
case "Offline":
loading.innerHTML = '';
loading.className = 'loading fa fa-times';
status.className = "status status-problems";
text.innerHTML = 'Some Systems may not work correctly';
break;
}
for( let prop in json ){
if(!(prop === "overall")) {
var cbox = document.getElementById("status-"+prop);
var cstatus = json[prop];
switch(cstatus) {
case "Online":
cbox.className = "service service-okay services-okay";
if(document.getElementById("alert-"+prop) != null) {
document.getElementById("alert-"+prop).className = 'hidden';
}
break;
case "Maintenance":
cbox.className = "service service-maintenance services-maintenance";
document.getElementById("alert-"+prop).className = 'status-annoucement';
break;
case "Offline":
cbox.className = "service service-troubles services-troubles";
document.getElementById("alert-"+prop).className = 'status-annoucement';
break;
}
}
}
timer();
}, 1000)
}
};
xmlhttp.open("GET", "json.php", true);
xmlhttp.send();
}
}
+7
View File
@@ -0,0 +1,7 @@
var url = window.location.href;
var hash = url.substring(url.indexOf('#'));
var check = hash.includes("#");
if(check == false) {
window.location.replace(url+"#dashboard");
}
+17
View File
@@ -0,0 +1,17 @@
var inner = document.getElementById("sidebar").innerHTML;
function closeNav() {
document.getElementById("sidebar").style.width = "0";
document.getElementById("sidebar").innerHTML = "";
document.getElementById("opener").style.visibility = "visible";
}
function openNav() {
document.getElementById("sidebar").style.width = "35%";
document.getElementById("sidebar").innerHTML = inner;
document.getElementById("opener").style.visibility = "hidden";
}
if( /Android|webOS|iPhone|iPad|Mac|Macintosh|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
closeNav();
}
+45
View File
@@ -0,0 +1,45 @@
<?php
session_start();
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$status = mysqli_query($con, "SELECT id,status FROM services ORDER BY priority DESC");
$overall;
$jsonObj = new stdClass();
while($statuses = mysqli_fetch_array($status)){
if(strcmp($statuses['status'], "Offline") == 0) {
$overall = "offline";
} else if((strcmp($statuses['status'], "Maintenance") == 0) && !$overall == "offline"){
$overall = "maintenance";
}
$id = $statuses['id'];
$jsonObj->$id = $statuses['status'];
}
switch($overall) {
case "online":
$jsonObj->overall = "Online";
break;
case "maintenance":
$jsonObj->overall = "Maintenance";
break;
case "offline":
$jsonObj->overall = "Offline";
break;
default:
$jsonObj->overall = "Online";
break;
}
$json = json_encode($jsonObj);
echo $json;
?>
+107
View File
@@ -0,0 +1,107 @@
<?php
session_start();
if(!file_exists("config.php")) {
header("Location: install/index.php");
die();
}
if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {
header("Location: admin.php");
}
?>
<?php
$wrong=FALSE;
if(isset($_POST['username']) && isset($_POST['password'])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
if (empty($_POST['username']) || empty($_POST['password'])) {
header("Location: login.php");
}
if ($stmt = $con->prepare('SELECT id, password FROM accounts WHERE username = ?')) {
$stmt->bind_param('s', $_POST['username']);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0) {
$stmt->bind_result($id, $password);
$stmt->fetch();
if (password_verify($_POST['password'], $password)) {
session_regenerate_id();
$_SESSION['loggedin'] = TRUE;
$_SESSION['name'] = $_POST['username'];
$_SESSION['id'] = $id;
$wrong=FALSE;
header("Location: admin.php");
} else {
$wrong=TRUE;
}
} else {
$wrong=TRUE;
}
$stmt->close();
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link type="text/css" rel="stylesheet" href="css/login/style.css" />
<link rel="stylesheet" href="css/font-awesome/css/font-awesome.css">
<title>WebStatus - Adminlogin</title>
</head>
<body>
<div id="stars"></div>
<div class="login">
<div class="login-screen">
<div class="login-title">
<h1>Login</h1>
</div>
<?php
if($wrong == true) {
echo '<p class="wpassword">Wrong password or username!</p>';
}
?>
<form action="login.php" method="post">
<div class="login-form">
<div class="login-box">
<input type="text" class="login-field" value="" placeholder="Username" id="username" name="username" required>
<label class="login-field-icon fui-user" for="username"></label>
</div>
<div class="login-box">
<input type="password" class="login-field" value="" placeholder="Password" id="password" name="password" required>
<label for="password"></label>
</div>
<input type="submit" value="Login" class="btn btn-primary btn-large btn-block" href="#"></input>
<a class="login-link" href="index.php">Back to Statuspage</a>
</div>
</form>
</div>
</div>
</body>
</html>
+93
View File
@@ -0,0 +1,93 @@
__ __ ___. _________ __ __
/ \ / \ ____\_ |__ / _____// |______ _/ |_ __ __ ______
\ \/\/ // __ \| __ \ \_____ \\ __\__ \\ __\ | \/ ___/
\ /\ ___/| \_\ \/ \| | / __ \| | | | /\___ \
\__/\ / \___ >___ /_______ /|__| (____ /__| |____//____ >
\/ \/ \/ \/ \/ \/
Made with love by Givou
#License
This Project is Licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License
View your rights here: https://creativecommons.org/licenses/by-sa/4.0/
#setup
This is a sample setup! You can modify folder names as you wish.
#1:
cd /var/www
#2:
git clone PROJECTLINKISNICHTDA
#3:
chown -R www-data:www-data
#4:
cd /etc/nginx/sites-available
#5:
nano status.conf
6#
You can now paste this Nginx Sample Configuration.
Its made very simple, and should work for php7.4 nginx webservers.
server {
listen 80;
server_name status.example.com;
location / {
rewrite ^/?(.*) https://$server_name/$1 redirect;
}
}
server {
listen 443;
root /var/www/webstatus;
index index.php;
location / {
index index.php;
}
server_name status.example.com;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
include /etc/nginx/fastcgi_params;
}
}
#7:
ln -s /etc/nginx/sites-available/status.conf /etc/nginx/sites-enabled
#8:
(If you have installed cerbot! The Configuration above needs a SSL Certificate to work properly)
cerbot --nginx
#9:
Select "status.example.com" and follow the introductions as you wish
#10:
Open "status.example.com" in your browser and fill out the Setup field
#11:
ENJOY Webstatus, if you have any questions, requests or something write me at thiemo.tiziani@nerdcity.at or make a issue at git.thiemoo.at
+664
View File
@@ -0,0 +1,664 @@
<?php
//Check if user is logged in
session_start();
if(!isset($_SESSION['loggedin']) && $_SESSION['loggedin'] !== true) {
header("Location: login.php");
die;
}
if(isset($_GET["logout"])) {
session_destroy();
header('Location: login.php');
}
?>
<?php
//Get datas from database
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$role = mysqli_fetch_assoc(mysqli_query($con, "SELECT role FROM accounts WHERE id='".mysqli_real_escape_string($con, $_SESSION['id'])."'"))["role"];
$instancename = mysqli_fetch_assoc(mysqli_query($con, "SELECT value FROM settings WHERE type='instancename'"))["value"];
if($role == "administrator") {
$autoreload_setting = mysqli_fetch_assoc(mysqli_query($con, "SELECT value FROM settings WHERE type='autoreload'"))["value"];
$modular_setting = mysqli_fetch_assoc(mysqli_query($con, "SELECT value FROM settings WHERE type='modularwindow'"))["value"];
}
?>
<?php
//Define all users in a $users variable
if($role == "administrator") {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$users = mysqli_query($con, "SELECT username,id,role FROM accounts");
}
?>
<?php
//Define all groups and services in a $groups and $services variable
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$groups = mysqli_query($con, "SELECT priority, name, id FROM groups ORDER BY priority DESC");
$services = mysqli_query($con, "SELECT priority, groupid, name, id, status FROM services ORDER BY priority DESC");
$incidents = mysqli_query($con, "SELECT id, status, services, text, date, childof FROM incidents ORDER BY id ASC");
$incidents2 = mysqli_query($con, "SELECT id, status, services, text, date, childof FROM incidents ORDER BY id ASC");
?>
<?php
//Update Username for user
if(isset($_GET["updateusername"]) && isset($_POST['username'])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$query="SELECT * FROM accounts WHERE username='".mysqli_real_escape_string($con,$_POST['username'])."'";
if($result=mysqli_query($con,$query)){
if(mysqli_num_rows($result)>0){
header("Location: admin.php?userexist#account");
}else{
$statement = mysqli_query($con,"UPDATE accounts SET username='".mysqli_real_escape_string($con,$_POST['username'])."' WHERE ID='".$_SESSION['id']."'");
header('Location: worker.php?logout');
}
}
}
?>
<?php
//Update Password for user
if(isset($_GET["updatepassword"]) && isset($_POST['password1']) && isset($_POST['password2'])) {
include('config.php');
if($_POST['password1'] == $_POST['password2']) {
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
if ($stmt = $con->prepare('SELECT id, password FROM accounts WHERE username = ?')) {
$stmt->bind_param('s', $_SESSION['name']);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0) {
$stmt->bind_result($id, $password);
$stmt->fetch();
if (password_verify($_POST['oldpassword'], $password)) {
$npassword = password_hash($_POST['password1'], PASSWORD_DEFAULT);
$statement = mysqli_query($con,"UPDATE accounts SET password='".mysqli_real_escape_string($con,$npassword)."' WHERE ID='".$_SESSION['id']."'");
if($statement) {
header("Location: admin.php?pwupdated#account");
}
} else {
header("Location: admin.php?pwrong#account");
}
} else {
header("Location: admin.php?pwrong#account");
}
$stmt->close();
}
} else {
header("Location: admin.php?pwnotmatch#account");
}
}
?>
<?php
//Create a new user
if($role == "administrator") {
if(isset($_GET["newuser"]) && isset($_POST['username']) && isset($_POST['password'])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$query="SELECT * FROM accounts WHERE username='".mysqli_real_escape_string($con,$_POST['username'])."'";
if($result=mysqli_query($con,$query)){
if(mysqli_num_rows($result)>0){
header("Location: admin.php?userexist#users");
}else{
$newpw = password_hash($_POST['password'], PASSWORD_DEFAULT);
$statement = mysqli_query($con, "INSERT INTO accounts (username, password, role) VALUES ('".mysqli_real_escape_string($con,$_POST['username'])."',
'".mysqli_real_escape_string($con,$newpw)."', '".mysqli_real_escape_string($con, $_POST['role'])."')");
if($statement) {
header("Location: admin.php?usercreated#users");
}
}
}
}
}
?>
<?php
//Update password for another user
if($role == "administrator") {
if(isset($_GET["updatepwfor"]) && isset($_POST['password1']) && isset($_POST['password2'])) {
include('config.php');
if($_POST['password1'] == $_POST['password2']) {
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$npassword = password_hash($_POST['password1'], PASSWORD_DEFAULT);
$statement = mysqli_query($con,"UPDATE accounts SET password='".mysqli_real_escape_string($con,$npassword)."'
WHERE username='".mysqli_real_escape_string($con,$_GET["updatepwfor"])."'");
if($statement) {
header("Location: admin.php?edit=".$_GET["updatepwfor"]."&pwupdated#edit");
}
} else {
header("Location: admin.php?edit=".$_GET["updatepwfor"]."&pwnotmatch#edit");
}
}
}
?>
<?php
//Update username for another user
if($role == "administrator") {
if(isset($_GET["updateunfor"]) && isset($_POST['username'])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con,"UPDATE accounts SET username='".mysqli_real_escape_string($con,$_POST['username'])."'
WHERE username='".mysqli_real_escape_string($con, $_GET["updateunfor"])."'");
if($statement) {
header("Location: admin.php?edit=".$_POST['username']."&unupdated#edit");
}
}
}
?>
<?php
//Update role for some user
if($role == "administrator") {
if(isset($_GET["updaterole"])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
if($_POST['role'] == "administrator") {
$statement = mysqli_query($con,"UPDATE accounts SET role='".mysqli_real_escape_string($con, $_POST['role'])."'
WHERE username='".mysqli_real_escape_string($con, $_GET["updaterole"])."'");
if($statement) {
header("Location: admin.php?edit=".$_GET["updaterole"]."&roleupdated#edit");
}
} else if($_POST['role'] == "moderator") {
$statement = mysqli_query($con,"UPDATE accounts SET role='".mysqli_real_escape_string($con, $_POST['role'])."'
WHERE username='".mysqli_real_escape_string($con, $_GET["updaterole"])."'");
if($statement) {
header("Location: admin.php?edit=".$_GET["updaterole"]."&roleupdated#edit");
}
}
}
}
?>
<?php
//Deleter user
if($role == "administrator") {
if(isset($_GET["deluser"])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con, "DELETE FROM accounts WHERE username='".mysqli_real_escape_string($con, $_GET["deluser"])."'");
if($statement) {
header("Location: admin.php?userdeleted#users");
}
}
}
?>
<?php
//Change instance name
if($role == "administrator") {
if(isset($_GET["upname"]) && isset($_POST['iname'])) {
include ('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con,"UPDATE settings SET value='".mysqli_real_escape_string($con, $_POST['iname'])."'
WHERE type='instancename'");
if($statement) {
header("Location: admin.php?nameupdated#settings");
}
}
}
?>
<?php
//Change autoreload setting
if($role == "administrator") {
if(isset($_GET["upautoreload"]) && isset($_POST['autoreload'])) {
include ('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con,"UPDATE settings SET value='".mysqli_real_escape_string($con, $_POST['autoreload'])."'
WHERE type='autoreload'");
if($statement) {
header("Location: admin.php?reloadupdated=".$_POST['autoreload']."#settings");
}
}
}
?>
<?php
//Create new service
if(isset($_GET["createservice"]) && isset($_POST['priority']) && isset($_POST['group']) && isset($_POST['name'])) {
include ('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con, "INSERT INTO services (priority, groupid, name, status, cmaintenance, sname) VALUES ('".mysqli_real_escape_string($con,$_POST['priority'])."',
'".mysqli_real_escape_string($con,$_POST['group'])."', '".mysqli_real_escape_string($con, $_POST['name'])."', 'Online', '0',
'".mysqli_real_escape_string($con, $_POST['sname'])."')");
if($statement) {
header("Location: admin.php?serviceadded#services");
}
}
?>
<?php
//Create new group
if(isset($_GET["creategroup"]) && isset($_POST['priority']) && isset($_POST['name'])) {
include ('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con, "INSERT INTO groups (priority, name) VALUES ('".mysqli_real_escape_string($con,$_POST['priority'])."',
'".mysqli_real_escape_string($con, $_POST['name'])."')");
if($statement) {
header("Location: admin.php?groupadded#services");
}
}
?>
<?php
//Delete service
if(isset($_GET["delservice"])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con, "DELETE FROM services WHERE id='".mysqli_real_escape_string($con, $_GET["delservice"])."'");
if($statement) {
header("Location: admin.php?servicedeleted#services");
}
}
?>
<?php
//Delete group
if(isset($_GET["delgroup"])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con, "DELETE FROM groups WHERE id='".mysqli_real_escape_string($con, $_GET['delgroup'])."'");
$statement2 = mysqli_query($con, "DELETE FROM services WHERE groupid='".mysqli_real_escape_string($con, $_GET['delgroup'])."'");
if($statement) {
header("Location: admin.php?groupdeleted#services");
}
}
?>
<?php
//Update Service Status
if(isset($_GET["updatest"])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con, "UPDATE services SET status = '".mysqli_real_escape_string($con, $_GET['status'])."'
WHERE id = '".mysqli_real_escape_string($con, $_GET['updatest'])."'");
if($statement) {
header("Location: admin.php?manageservice=".$_GET['updatest']."&statusupdated#mservice");
}
}
?>
<?php
//Create Incident
if(isset($_GET["createincident"])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$services = "".implode(",",$_POST['services'])."";
$statement = mysqli_query($con, "INSERT INTO incidents (status, services, text, date, childof) VALUES ('new',
'".mysqli_real_escape_string($con, $services)."', '".mysqli_real_escape_string($con, $_POST['text'])."', '".mysqli_real_escape_string($con, $_POST['date'])."'
, '-1')");
if($statement) {
header("Location: admin.php?incidentcreated#incidents");
} else {
}
}
?>
<?php
//Create Incident Message
if(isset($_GET["addmessage"])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con, "INSERT INTO incidents (status, services, text, date, childof) VALUES ('".mysqli_real_escape_string($con, $_POST['state'])."',
'-1', '".mysqli_real_escape_string($con, $_POST['text'])."', '2021-02-02'
, '".mysqli_real_escape_string($con, $_POST['childof'])."')");
if($statement) {
header("Location: admin.php?messagecreated#incidents");
}
}
?>
<?php
//Delete Incident
if(isset($_GET["rmincident"])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con, "DELETE FROM incidents WHERE id='".mysqli_real_escape_string($con, $_GET['rmincident'])."'");
$statement2 = mysqli_query($con, "DELETE FROM incidents WHERE childof='".mysqli_real_escape_string($con, $_GET['rmincident'])."'");
if($statement) {
header("Location: admin.php?incidentdeleted#incidents");
}
}
?>
<?php
//Flush Incidents
if(isset($_GET["flushincidents"])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con, "DELETE FROM incidents");
if($statement) {
header("Location: admin.php?incidentsflushed#incidents");
} else {
die("no!");
}
}
?>
<?php
//Update Group Name
if(isset($_GET["upgroupname"])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con, "UPDATE groups SET name = '".mysqli_real_escape_string($con, $_POST['name'])."'
WHERE id = '".mysqli_real_escape_string($con, $_GET['upgroupname'])."'");
if($statement) {
header("Location: admin.php?editgroup=".$_GET['upgroupname']."&nameupdated#groupedit");
}
}
?>
<?php
//Update Group Priority
if(isset($_GET["upgrouppriority"])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con, "UPDATE groups SET priority = '".mysqli_real_escape_string($con, $_POST['priority'])."'
WHERE id = '".mysqli_real_escape_string($con, $_GET['upgrouppriority'])."'");
if($statement) {
header("Location: admin.php?editgroup=".$_GET['upgrouppriority']."&priorityupdated#groupedit");
}
}
?>
<?php
//Update Service Priority
if(isset($_GET["upservicepriority"])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con, "UPDATE services SET priority = '".mysqli_real_escape_string($con, $_POST['priority'])."'
WHERE id = '".mysqli_real_escape_string($con, $_GET['upservicepriority'])."'");
if($statement) {
header("Location: admin.php?manageservice=".$_GET['upservicepriority']."&priorityupdated#mservice");
}
}
?>
<?php
//Update Service Name
if(isset($_GET["upservicename"])) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$statement = mysqli_query($con, "UPDATE services SET name = '".mysqli_real_escape_string($con, $_POST['name'])."'
WHERE id = '".mysqli_real_escape_string($con, $_GET['upservicename'])."'");
if($statement) {
header("Location: admin.php?manageservice=".$_GET['upservicename']."&nameupdated#mservice");
}
}
?>
<?php
//Functions
function getStatus($id) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
return mysqli_fetch_assoc(mysqli_query($con, "SELECT status FROM services WHERE id='".mysqli_real_escape_string($con, $id)."'"))["status"];
}
function getGroupName($id) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
return mysqli_fetch_assoc(mysqli_query($con, "SELECT name FROM groups WHERE id='".mysqli_real_escape_string($con, $id)."'"))["name"];
}
function getGroupPriority($id) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
return mysqli_fetch_assoc(mysqli_query($con, "SELECT priority FROM groups WHERE id='".mysqli_real_escape_string($con, $id)."'"))["priority"];
}
function getServiceName($id) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
return mysqli_fetch_assoc(mysqli_query($con, "SELECT name FROM services WHERE id='".mysqli_real_escape_string($con, $id)."'"))["name"];
}
function getServicePriority($id) {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
return mysqli_fetch_assoc(mysqli_query($con, "SELECT priority FROM services WHERE id='".mysqli_real_escape_string($con, $id)."'"))["priority"];
}
function debug_to_console($data) {
$output = $data;
if (is_array($output))
$output = implode(',', $output);
echo "<script>console.log('Debug Objects: " . $output . "' );</script>";
}
function sMaintenance() {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$services = mysqli_query($con, "SELECT priority, groupid, name, id, status FROM services ORDER BY priority DESC");
$find = False;
while($servicelist = mysqli_fetch_array($services)){
if(strpos($servicelist['status'], "Maintenance") !== false) {
$find = True;
}
}
return $find;
}
function sOffline() {
include('config.php');
$con = mysqli_connect($config['DBHOST'], $config['DBUSER'], $config['DBPWD'], $config['DBNAME']);
if ( mysqli_connect_errno() ) {
exit('MySQl Connection failed with error: ' . mysqli_connect_error());
}
$services = mysqli_query($con, "SELECT priority, groupid, name, id, status FROM services ORDER BY priority DESC");
$find = False;
while($servicelist = mysqli_fetch_array($services)){
if(strpos($servicelist['status'], "Offline") !== false) {
$find = True;
}
}
return $find;
}
?>