2024-06-28 17:05:32 +00:00
|
|
|
<?php
|
|
|
|
|
2024-07-01 09:45:07 +00:00
|
|
|
/**
|
|
|
|
* Jilo web logs observer
|
|
|
|
*
|
|
|
|
* Description: A web interface to Jilo (JItsi Logs Observer), written in PHP
|
|
|
|
* Author: Yasen Pramatarov
|
|
|
|
* License: GPLv2
|
|
|
|
* Project URL: https://lindeas.com/jilo
|
|
|
|
* Year: 2024
|
2024-08-31 17:24:12 +00:00
|
|
|
* Version: 0.2
|
2024-07-01 09:45:07 +00:00
|
|
|
*/
|
|
|
|
|
2024-08-19 10:25:09 +00:00
|
|
|
// we start output buffering and.
|
|
|
|
// flush it later only when there is no redirect
|
|
|
|
ob_start();
|
|
|
|
|
2024-09-04 09:53:02 +00:00
|
|
|
require '../app/helpers/errors.php';
|
|
|
|
|
2024-07-04 19:14:12 +00:00
|
|
|
// error reporting, comment out in production
|
|
|
|
ini_set('display_errors', 1);
|
|
|
|
ini_set('display_startup_errors', 1);
|
|
|
|
error_reporting(E_ALL);
|
|
|
|
|
2024-07-01 09:45:07 +00:00
|
|
|
// list of available pages
|
|
|
|
// edit accordingly, add 'pages/PAGE.php'
|
|
|
|
$allowed_urls = [
|
2024-09-13 11:02:59 +00:00
|
|
|
'dashboard',
|
|
|
|
|
2024-07-04 09:04:27 +00:00
|
|
|
'conferences',
|
2024-07-07 09:10:41 +00:00
|
|
|
'participants',
|
2024-07-08 09:17:35 +00:00
|
|
|
'components',
|
2024-09-13 11:02:59 +00:00
|
|
|
|
|
|
|
'agents',
|
|
|
|
|
|
|
|
'profile',
|
|
|
|
'config',
|
|
|
|
'logs',
|
|
|
|
|
|
|
|
'login',
|
|
|
|
'logout',
|
|
|
|
'register',
|
2024-07-01 09:45:07 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
// cnfig file
|
2024-08-01 08:20:31 +00:00
|
|
|
// possible locations, in order of preference
|
|
|
|
$config_file_locations = [
|
2024-08-12 11:12:24 +00:00
|
|
|
__DIR__ . '/../app/config/jilo-web.conf.php',
|
2024-08-01 08:20:31 +00:00
|
|
|
__DIR__ . '/../jilo-web.conf.php',
|
|
|
|
'/srv/jilo-web/jilo-web.conf.php',
|
|
|
|
'/opt/jilo-web/jilo-web.conf.php'
|
|
|
|
];
|
|
|
|
$config_file = null;
|
|
|
|
// try to find the config file
|
|
|
|
foreach ($config_file_locations as $location) {
|
|
|
|
if (file_exists($location)) {
|
|
|
|
$config_file = $location;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// if found, use it
|
|
|
|
if ($config_file) {
|
2024-08-13 14:53:52 +00:00
|
|
|
$config = require $config_file;
|
2024-07-01 09:45:07 +00:00
|
|
|
} else {
|
|
|
|
die('Config file not found');
|
|
|
|
}
|
|
|
|
|
2024-07-05 08:23:31 +00:00
|
|
|
$app_root = $config['folder'];
|
|
|
|
|
2024-08-10 18:42:44 +00:00
|
|
|
session_name('jilo');
|
2024-07-01 09:45:07 +00:00
|
|
|
session_start();
|
2024-06-28 17:05:32 +00:00
|
|
|
|
2024-08-15 07:31:26 +00:00
|
|
|
if (isset($_REQUEST['page'])) {
|
|
|
|
$page = $_REQUEST['page'];
|
2024-06-28 17:05:32 +00:00
|
|
|
} else {
|
2024-09-13 11:02:59 +00:00
|
|
|
$page = 'dashboard';
|
2024-06-28 17:05:32 +00:00
|
|
|
}
|
2024-08-28 09:59:13 +00:00
|
|
|
if (isset($_REQUEST['item'])) {
|
|
|
|
$item = $_REQUEST['item'];
|
|
|
|
} else {
|
|
|
|
$item = '';
|
|
|
|
}
|
|
|
|
|
2024-07-03 06:37:35 +00:00
|
|
|
// check if logged in
|
2024-09-13 09:13:00 +00:00
|
|
|
unset($currentUser);
|
2024-07-03 06:37:35 +00:00
|
|
|
if (isset($_COOKIE['username'])) {
|
|
|
|
if ( !isset($_SESSION['username']) ) {
|
|
|
|
$_SESSION['username'] = $_COOKIE['username'];
|
|
|
|
}
|
2024-09-13 09:13:00 +00:00
|
|
|
$currentUser = htmlspecialchars($_SESSION['username']);
|
2024-07-01 09:45:07 +00:00
|
|
|
}
|
2024-06-28 17:05:32 +00:00
|
|
|
|
2024-07-01 09:45:07 +00:00
|
|
|
// redirect to login
|
2024-07-03 15:15:32 +00:00
|
|
|
if ( !isset($_COOKIE['username']) && ($page !== 'login' && $page !== 'register') ) {
|
2024-06-28 17:05:32 +00:00
|
|
|
header('Location: index.php?page=login');
|
|
|
|
exit();
|
|
|
|
}
|
|
|
|
|
2024-07-01 09:45:07 +00:00
|
|
|
// we use 'notice' for all non-critical messages and 'error' for errors
|
|
|
|
if (isset($_SESSION['notice'])) {
|
|
|
|
$notice = $_SESSION['notice'];
|
2024-06-28 17:05:32 +00:00
|
|
|
}
|
2024-07-01 09:45:07 +00:00
|
|
|
if (isset($_SESSION['error'])) {
|
|
|
|
$error = $_SESSION['error'];
|
2024-06-28 17:05:32 +00:00
|
|
|
}
|
|
|
|
|
2024-09-04 09:53:02 +00:00
|
|
|
// connect to db of Jilo Web
|
|
|
|
require '../app/classes/database.php';
|
|
|
|
require '../app/helpers/database.php';
|
|
|
|
$dbWeb = connectDB($config);
|
|
|
|
|
2024-09-16 14:09:37 +00:00
|
|
|
// start logging
|
|
|
|
require '../app/classes/log.php';
|
2024-09-17 11:22:43 +00:00
|
|
|
include '../app/helpers/logs.php';
|
2024-09-16 14:09:37 +00:00
|
|
|
$logObject = new Log($dbWeb);
|
2024-09-17 11:22:43 +00:00
|
|
|
$user_IP = getUserIP();
|
2024-09-16 14:09:37 +00:00
|
|
|
|
2024-09-04 09:53:02 +00:00
|
|
|
// get platforms details
|
|
|
|
require '../app/classes/platform.php';
|
|
|
|
$platformObject = new Platform($dbWeb);
|
|
|
|
$platformsAll = $platformObject->getPlatformDetails();
|
|
|
|
|
2024-08-17 08:20:08 +00:00
|
|
|
// by default we connect ot the first configured platform
|
2024-09-04 09:53:02 +00:00
|
|
|
$firstPlatform = $platformsAll[0]['id'];
|
|
|
|
$platform_id = $_REQUEST['platform'] ?? $firstPlatform;
|
|
|
|
$platformDetails = $platformObject->getPlatformDetails($platform_id);
|
2024-08-17 08:20:08 +00:00
|
|
|
|
2024-09-16 16:08:03 +00:00
|
|
|
// init user functions
|
|
|
|
require '../app/classes/user.php';
|
|
|
|
include '../app/helpers/profile.php';
|
|
|
|
$userObject = new User($dbWeb);
|
|
|
|
|
2024-09-13 08:05:11 +00:00
|
|
|
// logout is a special case, as we can't use session vars for notices
|
|
|
|
if ($page == 'logout') {
|
2024-06-28 17:05:32 +00:00
|
|
|
|
2024-09-16 16:08:03 +00:00
|
|
|
$notice = "You were logged out.<br />You can log in again.";
|
|
|
|
$user_id = $userObject->getUserId($currentUser)[0]['id'];
|
2024-09-17 11:22:43 +00:00
|
|
|
$logObject->insertLog($user_id, "Logout: User \"$currentUser\" logged out. IP: $user_IP", 'user');
|
2024-09-16 16:08:03 +00:00
|
|
|
|
2024-09-13 08:05:11 +00:00
|
|
|
// clean up session
|
|
|
|
session_unset();
|
|
|
|
session_destroy();
|
|
|
|
setcookie('username', "", time() - 100, $config['folder'], $config['domain'], isset($_SERVER['HTTPS']), true);
|
2024-06-28 17:05:32 +00:00
|
|
|
|
2024-09-13 08:05:11 +00:00
|
|
|
include '../app/templates/page-header.php';
|
|
|
|
include '../app/templates/page-menu.php';
|
|
|
|
include '../app/templates/block-message.php';
|
|
|
|
include '../app/pages/login.php';
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
2024-09-13 09:13:00 +00:00
|
|
|
// if user is logged in, we need user details and rights
|
2024-09-13 10:49:17 +00:00
|
|
|
if (isset($currentUser)) {
|
|
|
|
$user_id = $userObject->getUserId($currentUser)[0]['id'];
|
|
|
|
$userDetails = $userObject->getUserDetails($user_id);
|
|
|
|
$userRights = $userObject->getUserRights($user_id);
|
|
|
|
$userTimezone = isset($userDetails[0]['timezone']) ? $userDetails[0]['timezone'] : 'UTC'; // Default to UTC if no timezone is set
|
|
|
|
}
|
2024-09-13 09:13:00 +00:00
|
|
|
|
2024-09-13 08:05:11 +00:00
|
|
|
// page building
|
2024-09-13 11:02:59 +00:00
|
|
|
include '../app/templates/page-header.php';
|
|
|
|
include '../app/templates/page-menu.php';
|
|
|
|
include '../app/templates/block-message.php';
|
|
|
|
if (isset($currentUser)) {
|
|
|
|
include '../app/templates/page-sidebar.php';
|
|
|
|
}
|
2024-09-13 08:05:11 +00:00
|
|
|
if (in_array($page, $allowed_urls)) {
|
|
|
|
// all normal pages
|
|
|
|
include "../app/pages/{$page}.php";
|
2024-07-01 09:45:07 +00:00
|
|
|
} else {
|
2024-09-13 11:02:59 +00:00
|
|
|
// the page is not in allowed urls, loading "not found" page
|
|
|
|
include '../app/templates/error-notfound.php';
|
2024-08-06 07:40:52 +00:00
|
|
|
}
|
2024-06-28 17:05:32 +00:00
|
|
|
}
|
2024-09-13 08:05:11 +00:00
|
|
|
// end with the footer
|
2024-08-12 11:12:24 +00:00
|
|
|
include '../app/templates/page-footer.php';
|
2024-06-28 17:05:32 +00:00
|
|
|
|
2024-08-19 10:25:09 +00:00
|
|
|
// flush the output buffer and show the page
|
|
|
|
ob_end_flush();
|
|
|
|
|
2024-07-01 09:45:07 +00:00
|
|
|
// clear errors and notices before next page just in case
|
|
|
|
unset($_SESSION['error']);
|
|
|
|
unset($_SESSION['notice']);
|
|
|
|
|
2024-06-28 17:05:32 +00:00
|
|
|
?>
|