Big refresh

This commit is contained in:
Chocobozzz
2015-07-09 21:19:54 +02:00
parent 8dd87a4acd
commit d14ae374a4
109 changed files with 1333 additions and 8772 deletions
-181
View File
@@ -1,181 +0,0 @@
<?php
session_start();
if(!isset($_SESSION['admin_id']))
exit -1;
require(dirname(__FILE__) . '/connexion_bdd.php');
function datetosql($date) {
return implode('-', array_reverse(explode('/', $date)));
}
function datefromsql($date) {
return implode('/', array_reverse(explode('-', $date)));
}
// Selection des données
if(isset($_POST['select'])){
// User pouvant se connecter au VPN
if($_POST['select'] == "user"){
$req = $bdd->prepare('SELECT * FROM user');
$req->execute();
if($data = $req->fetch()) {
do{
$list[] = array("user_id" => $data['user_id'],
"user_pass" => $data['user_pass'],
"user_mail" => $data['user_mail'],
"user_phone" => $data['user_phone'],
"user_online" => $data['user_online'],
"user_enable" => $data['user_enable'],
"user_start_date" => datefromsql($data['user_start_date']),
"user_end_date" => datefromsql($data['user_end_date']));
} while($data = $req->fetch());
echo json_encode($list);
}
else{
$list = array();
echo json_encode($list);
}
}
// Log du VPN
else if($_POST['select'] == "log"){
// Création du LIMIT de la requête SQL en fonction de la page
if(isset($_POST['pageIndex'], $_POST['pageSize'])) {
$page_actuelle = ($_POST['pageIndex']-1) * $_POST['pageSize'];
$page_max = $_POST['pageSize'];
$page = " LIMIT " . $page_actuelle . ", " . $page_max;
}
else {
$page = "";
}
// Sélection des logs
$string_requete = 'SELECT * FROM log ORDER BY log_id DESC' . $page;
$req = $bdd->prepare($string_requete);
$req->execute();
$list = array();
while($data = $req->fetch()) {
// C'est mieux exprimé en Mo ou Ko
$received = ($data['log_received'] > 100000) ? $data['log_received']/100000 . " Mo" : $data['log_received']/100 . " Ko";
$sent = ($data['log_send'] > 100000) ? $data['log_send']/100000 . " Mo" : $data['log_send']/100 . " Ko";
$start_time_array = explode(' ', $data['log_start_time']);
$start_time = datefromsql($start_time_array[0]) . ' ' . $start_time_array[1];
$end_time_array = explode(' ', $data['log_end_time']);
$end_time = datefromsql($end_time_array[0]) . ' ' . $end_time_array[1];
// On ajoute à notre tableau la nouvelle ligne de log
array_push($list, array("log_id" => $data['log_id'],
"user_id" => $data['user_id'],
"log_trusted_ip" => $data['log_trusted_ip'],
"log_trusted_port" => $data['log_trusted_port'],
"log_remote_ip" => $data['log_remote_ip'],
"log_remote_port" => $data['log_remote_port'],
"log_start_time" => $start_time,
"log_end_time" => $end_time,
"log_received" => $received,
"log_send" => $sent));
}
// Récupération du nombre lignes de log
$req_nb = $bdd->prepare('SELECT COUNT(*) AS nb FROM log');
$req_nb->execute();
$data_nb = $req_nb->fetch()['nb'];
// On affiche la réponse JSON
$result = array('Total' => $data_nb, 'Rows' => json_encode($list));
echo json_encode($result);
}
// Affichage des personnes pouvant se connecter à l'interface d'administration
else if($_POST['select'] == "admin"){
$req = $bdd->prepare('SELECT * FROM admin');
$req->execute();
if($data = $req->fetch()) {
do{
$list[] = array("admin_id" => $data['admin_id'],
"admin_pass" => $data['admin_pass'],
);
} while($data = $req->fetch());
echo json_encode($list);
}
else{
$list = array();
echo json_encode($list);
}
}
}
// Ajout d'un utilisateur du VPN
else if(isset($_POST['add_user'])){
$id = $_POST['user_id'];
$pass = "";
$mail = "";
$phone = "";
$online = 0;
$enable = 1;
$start = "0000-00-00";
$end = "0000-00-00";
$req = $bdd->prepare('INSERT INTO user (user_id, user_pass, user_mail, user_phone, user_online, user_enable, user_start_date, user_end_date)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)');
$req->execute(array($id, $pass, $mail, $phone, $online, $enable, $start, $end));
}
// Modification d'un utilisateur du VPN
else if(isset($_POST['set_user'])){
$valid = array("user_id", "user_pass", "user_mail", "user_phone", "user_enable", "user_start_date", "user_end_date");
$set_field = $set_value = array();
// Algo pour mettre à jour seulement ce qui a été modifié
foreach($_POST as $key => $value){
if(in_array($key, $valid)){
array_push($set_field, $key . "=?");
if($key == "user_pass")
if($value == "")
array_push($set_value, $value);
else
array_push($set_value, sha1($value));
else if($key == "user_start_date" || $key == "user_end_date")
array_push($set_value, datetosql($value));
else
array_push($set_value, $value);
}
}
// Construction de la requête
array_push($set_value, $_POST['set_user']);
$req_string = 'UPDATE user SET ' . implode(',', $set_field) . ' WHERE user_id = ?';
$req = $bdd->prepare($req_string);
$req->execute($set_value);
}
// Suppression d'un utilisateur du VPN
else if(isset($_POST['del_user_id'])){
$req = $bdd->prepare('DELETE FROM user WHERE user_id = ?');
$req->execute(array($_POST['del_user_id']));
}
// Ajout d'un admin
else if(isset($_POST['add_admin'])){
$req = $bdd->prepare('INSERT INTO admin(admin_id, admin_pass) VALUES (?, ?)');
$req->execute(array($_POST['admin_id'], ""));
}
// Modification d'un admin
else if(isset($_POST['set_admin'])){
$mdp = $_POST['admin_pass'] ? sha1($_POST['admin_pass']) : "";
$req = $bdd->prepare('UPDATE admin SET admin_id = ?, admin_pass = ? WHERE admin_id = ?');
$req->execute(array($_POST['admin_id'], $mdp, $_POST['set_admin']));
}
// Suppression d'un admin
else if(isset($_POST['del_admin_id'])){
$req = $bdd->prepare('DELETE FROM admin WHERE admin_id = ?');
$req->execute(array($_POST['del_admin_id']));
}
?>
+7
View File
@@ -0,0 +1,7 @@
<?php
$host = 'localhost';
$port = '3306';
$db = 'openvpn-admin';
$user = '';
$pass = '';
?>
-7
View File
@@ -1,7 +0,0 @@
<?php
$hote='localhost';
$port='3306';
$bd='vpn';
$utilisateur='user';
$mdp='password';
?>
@@ -2,5 +2,5 @@
require(dirname(__FILE__) . "/config.php");
$options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO("mysql:host=$hote;port=$port;dbname=$bd", $utilisateur, $mdp, $options);
$bdd = new PDO("mysql:host=$host;port=$port;dbname=$db", $user, $pass, $options);
?>
+37
View File
@@ -0,0 +1,37 @@
<?php
function dateToSql($date) {
return implode('-', array_reverse(explode('/', $date)));
}
function dateFromSql($date) {
return implode('/', array_reverse(explode('-', $date)));
}
function printError($str) {
echo '<div class="alert alert-danger" role="alert">' . $str . '</div>';
}
function printSuccess($str) {
echo '<div class="alert alert-success" role="alert">' . $str . '</div>';
}
function isInstalled($bdd) {
$req = $bdd->prepare("SHOW TABLES LIKE 'admin'");
$req->execute();
if(!$req->fetch())
return false;
return true;
}
function hashPass($pass) {
return password_hash($pass, PASSWORD_DEFAULT);
}
function passEqual($pass, $hash) {
return password_verify($pass, $hash);
}
?>
+205
View File
@@ -0,0 +1,205 @@
<?php
session_start();
if(!isset($_SESSION['admin_id']))
exit -1;
require(dirname(__FILE__) . '/connect.php');
require(dirname(__FILE__) . '/functions.php');
// ---------------- SELECT ----------------
if(isset($_POST['select'])){
// Select the users
if($_POST['select'] == "user"){
$req = $bdd->prepare('SELECT * FROM user');
$req->execute();
if($data = $req->fetch()) {
do {
$list[] = array("user_id" => $data['user_id'],
"user_pass" => $data['user_pass'],
"user_mail" => $data['user_mail'],
"user_phone" => $data['user_phone'],
"user_online" => $data['user_online'],
"user_enable" => $data['user_enable'],
"user_start_date" => dateFromSql($data['user_start_date']),
"user_end_date" => dateFromSql($data['user_end_date']));
} while($data = $req->fetch());
echo json_encode($list);
}
// If it is an empty answer, we need to encore an empty json object
else{
$list = array();
echo json_encode($list);
}
}
// Select the logs
else if($_POST['select'] == "log"){
// Creation of the LIMIT for build different pages
if(isset($_POST['pageIndex'], $_POST['pageSize'])) {
$actual_page = ($_POST['pageIndex']-1) * $_POST['pageSize'];
$max_page = $_POST['pageSize'];
$page = "LIMIT $actual_page, $max_page";
}
else {
$page = "";
}
// Select the logs
$string_requete = "SELECT *, (SELECT COUNT(*) FROM log) AS nb FROM log ORDER BY log_id DESC $page";
$req = $bdd->prepare($string_requete);
$req->execute();
$list = array();
$data = $req->fetch();
if($data) {
$nb = $data['nb'];
do {
// Better in Kb or Mb
$received = ($data['log_received'] > 100000) ? $data['log_received']/100000 . " Mo" : $data['log_received']/100 . " Ko";
$sent = ($data['log_send'] > 100000) ? $data['log_send']/100000 . " Mo" : $data['log_send']/100 . " Ko";
$start_time_array = explode(' ', $data['log_start_time']);
$start_time = dateFromSql($start_time_array[0]) . ' ' . $start_time_array[1];
$end_time_array = explode(' ', $data['log_end_time']);
$end_time = dateFromSql($end_time_array[0]) . ' ' . $end_time_array[1];
// We add to the array the new line of logs
array_push($list, array(
"log_id" => $data['log_id'],
"user_id" => $data['user_id'],
"log_trusted_ip" => $data['log_trusted_ip'],
"log_trusted_port" => $data['log_trusted_port'],
"log_remote_ip" => $data['log_remote_ip'],
"log_remote_port" => $data['log_remote_port'],
"log_start_time" => $start_time,
"log_end_time" => $end_time,
"log_received" => $received,
"log_send" => $sent));
} while ($data = $req->fetch());
}
else {
$nb = 0;
}
// We finally print the result
$result = array('Total' => $nb, 'Rows' => json_encode($list));
echo json_encode($result);
}
// Select the admins
else if($_POST['select'] == "admin"){
$req = $bdd->prepare('SELECT * FROM admin');
$req->execute();
if($data = $req->fetch()) {
do{
$list[] = array(
"admin_id" => $data['admin_id'],
"admin_pass" => $data['admin_pass']
);
} while($data = $req->fetch());
echo json_encode($list);
}
else{
$list = array();
echo json_encode($list);
}
}
}
// ---------------- ADD USER ----------------
else if(isset($_POST['add_user'])){
// Put some default values
$id = $_POST['user_id'];
$pass = "";
$mail = "";
$phone = "";
$online = 0;
$enable = 1;
$start = "0000-00-00";
$end = "0000-00-00";
$req = $bdd->prepare('INSERT INTO user (user_id, user_pass, user_mail, user_phone, user_online, user_enable, user_start_date, user_end_date)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)');
$req->execute(array($id, $pass, $mail, $phone, $online, $enable, $start, $end));
$res = array("user_id" => $id,
"user_pass" => $pass,
"user_mail" => $mail ,
"user_phone" => $phone,
"user_online" => $online,
"user_enable" => $enable,
"user_start_date" => dateFromSql($start),
"user_end_date" => dateFromSql($end)
);
echo json_encode($res);
}
// ---------------- UPDATE USER ----------------
else if(isset($_POST['set_user'])){
$valid = array("user_id", "user_pass", "user_mail", "user_phone", "user_enable", "user_start_date", "user_end_date");
$set_field = $set_value = array();
// Only update what was modified
foreach($_POST as $key => $value){
if(in_array($key, $valid)){
array_push($set_field, $key . "=?");
if($key == "user_pass")
if($value == "")
array_push($set_value, $value);
else
array_push($set_value, hashPass($value));
else if($key == "user_start_date" || $key == "user_end_date")
array_push($set_value, dateToSql($value));
else
array_push($set_value, $value);
}
}
// Build the request
array_push($set_value, $_POST['set_user']);
$req_string = 'UPDATE user SET ' . implode(',', $set_field) . ' WHERE user_id = ?';
$req = $bdd->prepare($req_string);
$req->execute($set_value);
}
// ---------------- REMOVE USER ----------------
else if(isset($_POST['del_user_id'])){
$req = $bdd->prepare('DELETE FROM user WHERE user_id = ?');
$req->execute(array($_POST['del_user_id']));
}
// ---------------- ADD ADMIN ----------------
else if(isset($_POST['add_admin'])){
$req = $bdd->prepare('INSERT INTO admin(admin_id, admin_pass) VALUES (?, ?)');
$req->execute(array($_POST['admin_id'], ""));
}
// ---------------- UPDATE ADMIN ----------------
else if(isset($_POST['set_admin'])){
$mdp = $_POST['admin_pass'] ? hashPass($_POST['admin_pass']) : "";
$req = $bdd->prepare('UPDATE admin SET admin_id = ?, admin_pass = ? WHERE admin_id = ?');
$req->execute(array($_POST['admin_id'], $mdp, $_POST['set_admin']));
}
// ---------------- REMOVE ADMIN ----------------
else if(isset($_POST['del_admin_id'])){
$req = $bdd->prepare('DELETE FROM admin WHERE admin_id = ?');
$req->execute(array($_POST['del_admin_id']));
}
?>
+35
View File
@@ -0,0 +1,35 @@
<div class="row">
<div class="col-md-4 col-md-offset-4">
<form id="configuration_form" method="POST" class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Get the configuration files</h3>
</div>
<div class="panel-body">
<div class="form-group">
<label for="configuration_username">Username</label>
<input type="text" id="configuration_username" name="configuration_username" class="form-control" />
</div>
<div class="form-group">
<label for="configuration_pass">Password</label>
<input type="password" id="configuration_pass" name="configuration_pass" class="form-control" />
</div>
<div class="form-group">
<label for="configuration_os">OS</label>
<select name="configuration_os" id="configuration_os" class="form-control">
<option value="gnu_linux">GNU/Linux</option>
<option value="windows">Windows</option>
</select>
</div>
<input id="configuration_get" name="configuration_get" type="submit" value="Get configuration files" class="btn btn-default" />
</div>
</form>
</div>
</div>
+36
View File
@@ -0,0 +1,36 @@
<div class="row">
<div class="col-md-4 col-md-offset-4">
<form id="install_form" method="POST" class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Installation</h3>
</div>
<div class="panel-body">
<div class="form-group">
<label for="admin_username">Admin username:</label>
<input type="text" id="admin_username" name="admin_username" class="form-control" />
</div>
<br /><br />
<div class="form-group">
<label for="admin_pass">Admin password:</label>
<input type="password" id="admin_pass" name="admin_pass" class="form-control" />
</div>
<div class="form-group">
<label for="repeat_admin_pass">Repeat the admin password:</label>
<input type="password" id="repeat_admin_pass" name="repeat_admin_pass" class="form-control" />
</div>
<br /><br />
<input id="install" name="install" type="submit" value="Install" class="btn btn-default" />
</div>
</form>
</div>
</div>
+27
View File
@@ -0,0 +1,27 @@
<div class="row">
<div class="col-md-2 col-md-offset-5">
<form id="login_form" method="POST" class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Administrator</h3>
</div>
<div class="panel-body">
<div class="form-group">
<label for="admin_username">Username</label>
<input type="text" id="admin_username" name="admin_username" class="form-control" />
</div>
<div class="form-group">
<label for="admin_pass">Password</label>
<input type="password" id="admin_pass" name="admin_pass" class="form-control" />
</div>
<input id="admin_login" name="admin_login" type="submit" value="Login" class="btn btn-default" />
</div>
</form>
</div>
</div>
+41
View File
@@ -0,0 +1,41 @@
<!-- Users grid -->
<div class="block-grid row" id="user-grid">
<div class="grid-header">
<label>Users</label>
</div>
<div class="grid" id="grid_user"></div>
</div>
<!-- Logs grid -->
<div class="block-grid row" id="log-grid">
<div class="grid-header">
<label>Logs</label>
</div>
<div class="grid" id="grid_log"></div>
<div id="pager" class="slick-enhancement-pager"></div>
</div>
<!-- Admins grid -->
<div class="block-grid row" id="admin-grid">
<div class="grid-header">
<label>Admin</label>
</div>
<div class="grid" id="grid_admin"></div>
</div>
<script src="vendor/slickgrid/lib/jquery-1.7.min.js"></script>
<script src="vendor/slickgrid/lib/jquery-ui-1.8.16.custom.min.js"></script>
<script src="vendor/slickgrid/lib/jquery.event.drag-2.2.js"></script>
<script src="vendor/slickgrid/slick.core.js"></script>
<script src="vendor/slickgrid/slick.formatters.js"></script>
<script src="vendor/slickgrid/slick.editors.js"></script>
<script src="vendor/slickgrid/slick.grid.js"></script>
<script src="vendor/slickgrid-enhancement-pager/libs/jquery.json-2.3.min.js"></script>
<script src="vendor/slickgrid-enhancement-pager/libs/jquery.dropkick-2.1.6.js"></script>
<script src="vendor/slickgrid-enhancement-pager/slick.enhancementpager.js"></script>
<script src="vendor/js-sha1/src/sha1.js"></script>
<script src="js/grids.js"></script>
+12
View File
@@ -0,0 +1,12 @@
<div class="col-md-6 col-md-offset-3">
<nav class="navbar navbar-default">
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li <?php if(!isset($_GET['admin'])) echo 'class="active"'; ?>><a href="index.php">Configurations</a></li>
<li <?php if(isset($_GET['admin'])) echo 'class="active"'; ?>><a href="index.php?admin">Administrator</a></li>
</ul>
</div>
</nav>
</div>