Fixed some bugs and added a cookies disclaimer
This commit is contained in:
commit
d39b7214b8
624
admin.php
Normal file
624
admin.php
Normal file
@ -0,0 +1,624 @@
|
||||
<?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 class="placeholder"></div>
|
||||
<div class="content">Impressum & Privacy Policity</div>';
|
||||
if($_GET['impressumset']) {
|
||||
echo '<p class="upassword">Impressum link set to: '.$_GET['impressumset'].'!</p>';
|
||||
} else if($_GET['privacyset']) {
|
||||
echo '<p class="upassword">Privacy policity link set to: '.$_GET['privacyset'].'!</p>';
|
||||
} else if(isset($_GET['newtabset'])) {
|
||||
echo '<p class="upassword">Open new tab policy updated!</p>';
|
||||
}
|
||||
echo '
|
||||
<form action="admin.php?upimpressum" method="post">
|
||||
<input type="text" class="username-field" value="'.$impressum.'" readonly>
|
||||
<input type="text" class="username-field" placeholder="Impressum link" name="impressum">
|
||||
<input style="display: none;" type="submit"><button class="button-green button-up">Submit</button></input>
|
||||
</form>
|
||||
|
||||
<form action="admin.php?upprivacy" method="post">
|
||||
<input type="text" class="username-field" value="'.$privacy.'" readonly>
|
||||
<input type="text" class="username-field" placeholder="Privacy policity link" name="privacy">
|
||||
<input style="display: none;" type="submit"><button class="button-green button-up">Submit</button></input>
|
||||
</form>
|
||||
|
||||
<form action="admin.php?uptabpolicy" method="post">
|
||||
<input type="text" class="username-field" value="'.$newtab.'" readonly>
|
||||
<select name = "newtab">
|
||||
<option value = "new tab" selected>new tab</option>
|
||||
<option value = "same tab">same tab</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
auth.php
Normal file
50
auth.php
Normal 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();
|
||||
}
|
||||
|
||||
|
||||
?>
|
8
config.php
Normal file
8
config.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
$config=array(
|
||||
"DBHOST"=>"data2.thiemoo.at",
|
||||
"DBNAME"=>"webstatus",
|
||||
"DBPWD"=>"X5G3njgZ4s@E4S9J",
|
||||
"DBUSER"=>"webstatus"
|
||||
);
|
||||
?>
|
135
css/admin/mobile.css
Normal file
135
css/admin/mobile.css
Normal 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
css/admin/style.css
Normal file
420
css/admin/style.css
Normal 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;
|
||||
}
|
2337
css/font-awesome/css/font-awesome.css
vendored
Normal file
2337
css/font-awesome/css/font-awesome.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
css/font-awesome/css/font-awesome.min.css
vendored
Normal file
4
css/font-awesome/css/font-awesome.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
css/font-awesome/fonts/FontAwesome.otf
Normal file
BIN
css/font-awesome/fonts/FontAwesome.otf
Normal file
Binary file not shown.
BIN
css/font-awesome/fonts/fontawesome-webfont.eot
Normal file
BIN
css/font-awesome/fonts/fontawesome-webfont.eot
Normal file
Binary file not shown.
2671
css/font-awesome/fonts/fontawesome-webfont.svg
Normal file
2671
css/font-awesome/fonts/fontawesome-webfont.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 434 KiB |
BIN
css/font-awesome/fonts/fontawesome-webfont.ttf
Normal file
BIN
css/font-awesome/fonts/fontawesome-webfont.ttf
Normal file
Binary file not shown.
BIN
css/font-awesome/fonts/fontawesome-webfont.woff
Normal file
BIN
css/font-awesome/fonts/fontawesome-webfont.woff
Normal file
Binary file not shown.
BIN
css/font-awesome/fonts/fontawesome-webfont.woff2
Normal file
BIN
css/font-awesome/fonts/fontawesome-webfont.woff2
Normal file
Binary file not shown.
296
css/login/style.css
Normal file
296
css/login/style.css
Normal 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
css/mobile.css
Normal file
195
css/mobile.css
Normal 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;
|
||||
}
|
||||
}
|
714
css/style.css
Normal file
714
css/style.css
Normal file
@ -0,0 +1,714 @@
|
||||
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;
|
||||
}
|
||||
|
||||
.footer a:hover {
|
||||
text-decoration: underline;
|
||||
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;
|
||||
}
|
||||
|
||||
.underline {
|
||||
text-decoration: underline;
|
||||
text-decoration-color: #a6a6a6;
|
||||
}
|
||||
|
||||
.cookies {
|
||||
position: fixed;
|
||||
width: 99.7%;
|
||||
height: 100px;
|
||||
border-color: #3f9066;
|
||||
border-style: solid;
|
||||
background-color: #222c3b;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.cookies .cogs {
|
||||
position: absolute;
|
||||
top: 35%;
|
||||
left: 15px;
|
||||
font-size: 2em;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.cookies h1 {
|
||||
left: 0px;
|
||||
font-size: 1vw;
|
||||
color: white;
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
.cookies p {
|
||||
margin-top: -10px;
|
||||
color: #a6a6a6;
|
||||
}
|
||||
|
||||
.cookies .text {
|
||||
position: absolute;
|
||||
left: 5%;
|
||||
}
|
||||
|
||||
.cookies button {
|
||||
position: fixed;
|
||||
right: 15px;
|
||||
bottom: 35px;
|
||||
cursor: pointer;
|
||||
border-radius: 5px;
|
||||
border: none;
|
||||
outline: none;
|
||||
transition: 0.7s;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
font-size: 20px;
|
||||
color: white;
|
||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0);
|
||||
background-color: #83be4e;
|
||||
}
|
||||
|
||||
.cookies button:hover {
|
||||
background-color: #578230;
|
||||
|
||||
}
|
||||
|
||||
.cookies .handshake {
|
||||
margin-left: 10px;
|
||||
}
|
52
functions.php
Normal file
52
functions.php
Normal 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"];
|
||||
}
|
||||
?>
|
313
index.php
Normal file
313
index.php
Normal file
@ -0,0 +1,313 @@
|
||||
<?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"];
|
||||
$privacy = mysqli_fetch_assoc(mysqli_query($con, "SELECT value FROM settings WHERE type='privacy'"))["value"];
|
||||
$impressum = mysqli_fetch_assoc(mysqli_query($con, "SELECT value FROM settings WHERE type='impressum'"))["value"];
|
||||
$newtab = mysqli_fetch_assoc(mysqli_query($con, "SELECT value FROM settings WHERE type='newtab'"))["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 class="underline" href="http://git.thiemoo.at/Givou/WebStatus.git" target="_blank">WebStatus</a></p>
|
||||
<?php
|
||||
if($newtab === "new tab") {
|
||||
echo '<p class="footer-subtext"><a target="_blank" href="'.$impressum.'">Impressum</a> | <a target="_blank" href="'.$privacy.'">Privacy policity</a></p>';
|
||||
} else {
|
||||
echo '<p class="footer-subtext"><a href="'.$impressum.'">Impressum</a> | <a href="'.$privacy.'">Privacy policity</a></p>';
|
||||
}
|
||||
|
||||
?>
|
||||
<p class="footer-subtext">Made with <span class="footer-heart"><i class="fa fa-heart"></i></span> by <a target="_blank" href="https://thiemoo.at">Givou</a></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>
|
||||
|
||||
|
||||
|
||||
<?php
|
||||
if(isset($_GET["disclaimcookie"])) {
|
||||
setcookie('disclaimed', 'true');
|
||||
}
|
||||
|
||||
if(!isset($_COOKIE['disclaimed']) && !isset($_GET["disclaimcookie"])) {
|
||||
echo '
|
||||
<div class="cookies">
|
||||
<i class="cogs fa fa-cogs" aria-hidden="true"></i>
|
||||
<div class="text">
|
||||
<h1>Cookie disclaimer</h1>
|
||||
<p>This website only uses technical cookies to store session information or to hide this disclaimer!</p>
|
||||
|
||||
|
||||
<a href="index.php?disclaimcookie"><button class="button-green button-up">Got it<i class="handshake fa fa-handshake-o" aria-hidden="true"></i></button></a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
';
|
||||
}
|
||||
?>
|
||||
</body>
|
||||
|
||||
|
||||
<?php
|
||||
if($autoreload_setting == "enabled") {
|
||||
echo '<script type="text/javascript" src="js/checking.js"></script>';
|
||||
}
|
||||
?>
|
||||
</html>
|
120
install/index.php
Normal file
120
install/index.php
Normal file
@ -0,0 +1,120 @@
|
||||
<?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 varchar(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')");
|
||||
mysqli_query($con, "INSERT INTO settings(type, value) VALUES ('impressum', '#')");
|
||||
mysqli_query($con, "INSERT INTO settings(type, value) VALUES ('privacy', '#')");
|
||||
mysqli_query($con, "INSERT INTO settings(type, value) VALUES ('newtab', 'same tab')");
|
||||
|
||||
//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
install/style.css
Normal file
114
install/style.css
Normal 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
js/checking.js
Normal file
104
js/checking.js
Normal file
@ -0,0 +1,104 @@
|
||||
timer();
|
||||
var checkbox = document.getElementById("cb1");
|
||||
|
||||
function timer() {
|
||||
var timeleft = 300;
|
||||
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 = "300s";
|
||||
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
js/redirect.js
Normal file
7
js/redirect.js
Normal 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
js/sidebar.js
Normal file
17
js/sidebar.js
Normal 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
json.php
Normal file
45
json.php
Normal 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
login.php
Normal file
107
login.php
Normal 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>
|
96
readme.txt
Normal file
96
readme.txt
Normal file
@ -0,0 +1,96 @@
|
||||
__ __ ___. _________ __ __
|
||||
/ \ / \ ____\_ |__ / _____// |______ _/ |_ __ __ ______
|
||||
\ \/\/ // __ \| __ \ \_____ \\ __\__ \\ __\ | \/ ___/
|
||||
\ /\ ___/| \_\ \/ \| | / __ \| | | | /\___ \
|
||||
\__/\ / \___ >___ /_______ /|__| (____ /__| |____//____ >
|
||||
\/ \/ \/ \/ \/ \/
|
||||
|
||||
Made with love by Givou
|
||||
|
||||
|
||||
#Demo
|
||||
https://status.nerdcity.at
|
||||
|
||||
#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 http://git.thiemoo.at/Givou/WebStatus.git
|
||||
|
||||
#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
|
729
worker.php
Normal file
729
worker.php
Normal file
@ -0,0 +1,729 @@
|
||||
<?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"];
|
||||
$privacy = mysqli_fetch_assoc(mysqli_query($con, "SELECT value FROM settings WHERE type='privacy'"))["value"];
|
||||
$impressum = mysqli_fetch_assoc(mysqli_query($con, "SELECT value FROM settings WHERE type='impressum'"))["value"];
|
||||
$newtab = mysqli_fetch_assoc(mysqli_query($con, "SELECT value FROM settings WHERE type='newtab'"))["value"];
|
||||
|
||||
if($role == "administrator") {
|
||||
$autoreload_setting = mysqli_fetch_assoc(mysqli_query($con, "SELECT value FROM settings WHERE type='autoreload'"))["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
|
||||
//Set Impressum link
|
||||
if($role == "administrator") {
|
||||
if(isset($_GET["upimpressum"]) && isset($_POST['impressum'])) {
|
||||
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['impressum'])."'
|
||||
WHERE type='impressum'");
|
||||
|
||||
if($statement) {
|
||||
header("Location: admin.php?impressumset=".$_POST['impressum']."#settings");
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
//Set Privacy policity link
|
||||
if($role == "administrator") {
|
||||
if(isset($_GET["upprivacy"]) && isset($_POST['privacy'])) {
|
||||
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['privacy'])."'
|
||||
WHERE type='privacy'");
|
||||
|
||||
if($statement) {
|
||||
header("Location: admin.php?privacyset=".$_POST['privacy']."#settings");
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
//Set new tab policy
|
||||
if($role == "administrator") {
|
||||
if(isset($_GET["uptabpolicy"]) && isset($_POST['newtab'])) {
|
||||
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['newtab'])."'
|
||||
WHERE type='newtab'");
|
||||
|
||||
if($statement) {
|
||||
header("Location: admin.php?newtabset#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;
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in New Issue
Block a user