Update tables : use bootstrap tables, x-editable, bootstrap
datepicker...
This commit is contained in:
+9
-17
@@ -1,37 +1,29 @@
|
||||
<?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);
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
?>
|
||||
|
||||
+94
-96
@@ -1,75 +1,67 @@
|
||||
<?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'])){
|
||||
|
||||
if(isset($_GET['select'])){
|
||||
|
||||
// Select the users
|
||||
if($_POST['select'] == "user"){
|
||||
if($_GET['select'] == "user"){
|
||||
$req = $bdd->prepare('SELECT * FROM user');
|
||||
$req->execute();
|
||||
|
||||
if($data = $req->fetch()) {
|
||||
do {
|
||||
|
||||
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);
|
||||
"user_start_date" => $data['user_start_date'],
|
||||
"user_end_date" => $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);
|
||||
echo json_encode($list);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Select the logs
|
||||
else if($_POST['select'] == "log"){
|
||||
else if($_GET['select'] == "log" && isset($_GET['offset'], $_GET['limit'])){
|
||||
$offset = intval($_GET['offset']);
|
||||
$limit = intval($_GET['limit']);
|
||||
|
||||
// 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 = "";
|
||||
}
|
||||
|
||||
$page = "LIMIT $offset, $limit";
|
||||
|
||||
// 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_string = "SELECT *, (SELECT COUNT(*) FROM log) AS nb FROM log ORDER BY log_id DESC $page";
|
||||
$req = $bdd->prepare($req_string);
|
||||
$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'],
|
||||
@@ -78,126 +70,132 @@
|
||||
"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_start_time" => $data['log_start_time'],
|
||||
"log_end_time" => $data['log_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));
|
||||
|
||||
$result = array('total' => intval($nb), 'rows' => $list);
|
||||
|
||||
echo json_encode($result);
|
||||
}
|
||||
|
||||
|
||||
// Select the admins
|
||||
else if($_POST['select'] == "admin"){
|
||||
else if($_GET['select'] == "admin"){
|
||||
$req = $bdd->prepare('SELECT * FROM admin');
|
||||
$req->execute();
|
||||
|
||||
if($data = $req->fetch()) {
|
||||
do{
|
||||
|
||||
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);
|
||||
} while($data = $req->fetch());
|
||||
|
||||
echo json_encode($list);
|
||||
}
|
||||
else{
|
||||
$list = array();
|
||||
echo json_encode($list);
|
||||
echo json_encode($list);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ---------------- ADD USER ----------------
|
||||
else if(isset($_POST['add_user'])){
|
||||
else if(isset($_POST['add_user'], $_POST['user_id'], $_POST['user_pass'])){
|
||||
// Put some default values
|
||||
$id = $_POST['user_id'];
|
||||
$pass = "";
|
||||
$pass = hashPass($_POST['user_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)
|
||||
"user_start_date" => $start,
|
||||
"user_end_date" => $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);
|
||||
}
|
||||
|
||||
$field = $_POST['name'];
|
||||
$value = $_POST['value'];
|
||||
$pk = $_POST['pk'];
|
||||
|
||||
if (!isset($field) || !isset($pk) || !in_array($field, $valid)) {
|
||||
return;
|
||||
}
|
||||
// Build the request
|
||||
array_push($set_value, $_POST['set_user']);
|
||||
|
||||
$req_string = 'UPDATE user SET ' . implode(',', $set_field) . ' WHERE user_id = ?';
|
||||
|
||||
if ($field === 'user_pass') {
|
||||
$value = hashPass($value);
|
||||
}
|
||||
|
||||
// /!\ SQL injection: field was checked with in_array function
|
||||
$req_string = 'UPDATE user SET ' . $field . ' = ? WHERE user_id = ?';
|
||||
$req = $bdd->prepare($req_string);
|
||||
$req->execute($set_value);
|
||||
$req->execute(array($value, $pk));
|
||||
}
|
||||
|
||||
|
||||
// ---------------- REMOVE USER ----------------
|
||||
else if(isset($_POST['del_user_id'])){
|
||||
else if(isset($_POST['del_user'], $_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'])){
|
||||
else if(isset($_POST['add_admin'], $_POST['admin_id'], $_POST['admin_pass'])){
|
||||
$req = $bdd->prepare('INSERT INTO admin(admin_id, admin_pass) VALUES (?, ?)');
|
||||
$req->execute(array($_POST['admin_id'], ""));
|
||||
$req->execute(array($_POST['admin_id'], hashPass($_POST['admin_pass'])));
|
||||
}
|
||||
|
||||
|
||||
// ---------------- 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']));
|
||||
$valid = array("admin_id", "admin_pass");
|
||||
|
||||
$field = $_POST['name'];
|
||||
$value = $_POST['value'];
|
||||
$pk = $_POST['pk'];
|
||||
|
||||
if (!isset($field) || !isset($pk) || !in_array($field, $valid)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($field === 'admin_pass') {
|
||||
$value = hashPass($value);
|
||||
}
|
||||
|
||||
$req_string = 'UPDATE admin SET ' . $field . ' = ? WHERE admin_id = ?';
|
||||
$req = $bdd->prepare($req_string);
|
||||
$req->execute(array($value, $pk));
|
||||
}
|
||||
|
||||
|
||||
// ---------------- REMOVE ADMIN ----------------
|
||||
else if(isset($_POST['del_admin_id'])){
|
||||
else if(isset($_POST['del_admin'], $_POST['del_admin_id'])){
|
||||
$req = $bdd->prepare('DELETE FROM admin WHERE admin_id = ?');
|
||||
$req->execute(array($_POST['del_admin_id']));
|
||||
}
|
||||
|
||||
+69
-27
@@ -1,41 +1,83 @@
|
||||
<!-- Users grid -->
|
||||
<div class="block-grid row" id="user-grid">
|
||||
<div class="grid-header">
|
||||
<label>OpenVPN Users</label>
|
||||
<h4>
|
||||
OpenVPN Users <button data-toggle="modal" data-target="#modal-user-add" type="button" class="btn btn-success btn-xs"><span class="glyphicon glyphicon-plus"></span></button>
|
||||
</h4>
|
||||
<table id="table-users" class="table"></table>
|
||||
|
||||
<div id="modal-user-add" class="modal fade" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title">Add user</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<label for="modal-user-add-username">Username</label>
|
||||
<input type="text" name="username" id="modal-user-add-username" class="form-control" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="modal-user-add-password">Password</label>
|
||||
<input type="password" name="password" id="modal-user-add-password" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-primary" id="modal-user-add-save">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid" id="grid_user"></div>
|
||||
</div>
|
||||
|
||||
<!-- Logs grid -->
|
||||
<div class="block-grid row" id="log-grid">
|
||||
<div class="grid-header">
|
||||
<label>OpenVPN Logs</label>
|
||||
</div>
|
||||
<div class="grid" id="grid_log"></div>
|
||||
<div id="pager" class="slick-enhancement-pager"></div>
|
||||
<h4>
|
||||
OpenVPN logs
|
||||
</h4>
|
||||
<table id="table-logs" class="table"></table>
|
||||
</div>
|
||||
|
||||
<!-- Admins grid -->
|
||||
<div class="block-grid row" id="admin-grid">
|
||||
<div class="grid-header">
|
||||
<label>Web Admins</label>
|
||||
<h4>
|
||||
Web Admins <button data-toggle="modal" data-target="#modal-admin-add" type="button" class="btn btn-success btn-xs"><span class="glyphicon glyphicon-plus"></span></button>
|
||||
</h4>
|
||||
<table id="table-admins" class="table"></table>
|
||||
|
||||
<div id="modal-admin-add" class="modal fade" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title">Add admin</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<label for="modal-admin-add-username">Username</label>
|
||||
<input type="text" name="username" id="modal-admin-add-username" class="form-control" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="modal-admin-add-password">Password</label>
|
||||
<input type="password" name="password" id="modal-admin-add-password" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-primary" id="modal-admin-add-save">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</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>
|
||||
<script src="/vendor/jquery/dist/jquery.min.js"></script>
|
||||
<script src="/vendor/bootstrap/js/modal.js"></script>
|
||||
<script src="/vendor/bootstrap/js/tooltip.js"></script>
|
||||
<script src="/vendor/bootstrap/js/popover.js"></script>
|
||||
<script src="/vendor/bootstrap-table/dist/bootstrap-table.min.js"></script>
|
||||
<script src="/vendor/bootstrap-datepicker/dist/js/bootstrap-datepicker.js"></script>
|
||||
<script src="/vendor/bootstrap-table/dist/extensions/editable/bootstrap-table-editable.min.js"></script>
|
||||
<script src="/vendor/x-editable/dist/bootstrap3-editable/js/bootstrap-editable.js"></script>
|
||||
<script src="/js/grids.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user