<?php /** * 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 * Version: 0.1.1 */ // error reporting, comment out in production ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); // list of available pages // edit accordingly, add 'pages/PAGE.php' $allowed_urls = [ 'front', 'login', 'logout', 'register', 'profile', 'config', 'conferences', 'participants', 'components', ]; // cnfig file // possible locations, in order of preference $config_file_locations = [ __DIR__ . '/../app/config/jilo-web.conf.php', __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) { require_once $config_file; } else { die('Config file not found'); } $app_root = $config['folder']; session_name('jilo'); session_start(); if (isset($_GET['page'])) { $page = $_GET['page']; } elseif (isset($_POST['page'])) { $page = $_POST['page']; } else { $page = 'front'; } // check if logged in unset($user); if (isset($_COOKIE['username'])) { if ( !isset($_SESSION['username']) ) { $_SESSION['username'] = $_COOKIE['username']; } $user = htmlspecialchars($_SESSION['username']); } // redirect to login if ( !isset($_COOKIE['username']) && ($page !== 'login' && $page !== 'register') ) { header('Location: index.php?page=login'); exit(); } // we use 'notice' for all non-critical messages and 'error' for errors if (isset($_SESSION['notice'])) { $notice = $_SESSION['notice']; } if (isset($_SESSION['error'])) { $error = $_SESSION['error']; } // page building if (in_array($page, $allowed_urls)) { // logout is a special case, as we can't use session vars for notices if ($page == 'logout') { // clean up session session_unset(); session_destroy(); setcookie('username', "", time() - 100, $config['folder'], $config['domain'], isset($_SERVER['HTTPS']), true); $notice = "You were logged out.<br />You can log in again."; include '../app/templates/page-header.php'; include '../app/templates/page-menu.php'; include '../app/templates/block-message.php'; include '../app/pages/login.php'; // all other normal pages } else { include '../app/templates/page-header.php'; include '../app/templates/page-menu.php'; include '../app/templates/block-message.php'; if (isset($user)) { include '../app/templates/page-sidebar.php'; } include "../app/pages/{$page}.php"; } // the page is not in allowed urls, loading front page } else { $error = 'The page "' . $page . '" is not found'; include '../app/templates/page-header.php'; include '../app/templates/page-menu.php'; include '../app/templates/block-message.php'; if (isset($user)) { include '../app/templates/page-sidebar.php'; } include '../app/pages/front.php'; } include '../app/templates/page-footer.php'; // clear errors and notices before next page just in case unset($_SESSION['error']); unset($_SESSION['notice']); ?>