Fixes add host pages
parent
d629e2d9d3
commit
84901a77e0
|
@ -0,0 +1,118 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
class Host {
|
||||||
|
private $db;
|
||||||
|
|
||||||
|
public function __construct($database) {
|
||||||
|
$this->db = $database->getConnection();
|
||||||
|
}
|
||||||
|
|
||||||
|
// get details of a specified host ID (or all) in a specified platform ID
|
||||||
|
public function getHostDetails($platform_id = '', $host_id = '') {
|
||||||
|
$sql = 'SELECT
|
||||||
|
id,
|
||||||
|
address,
|
||||||
|
port,
|
||||||
|
platform_id,
|
||||||
|
name
|
||||||
|
FROM
|
||||||
|
hosts';
|
||||||
|
|
||||||
|
if ($platform_id !== '' && $host_id !== '') {
|
||||||
|
$sql .= ' WHERE platform_id = :platform_id AND id = :host_id';
|
||||||
|
} elseif ($platform_id !== '') {
|
||||||
|
$sql .= ' WHERE platform_id = :platform_id';
|
||||||
|
} elseif ($host_id !== '') {
|
||||||
|
$sql .= ' WHERE id = :host_id';
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = $this->db->prepare($sql);
|
||||||
|
|
||||||
|
if ($platform_id !== '') {
|
||||||
|
$query->bindParam(':platform_id', $platform_id);
|
||||||
|
}
|
||||||
|
if ($host_id !== '') {
|
||||||
|
$query->bindParam(':host_id', $host_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
$query->execute();
|
||||||
|
|
||||||
|
return $query->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// add new host
|
||||||
|
public function addHost($newHost) {
|
||||||
|
try {
|
||||||
|
$sql = 'INSERT INTO hosts
|
||||||
|
(address, port, platform_id, name)
|
||||||
|
VALUES
|
||||||
|
(:address, :port, :platform_id, :name)';
|
||||||
|
|
||||||
|
$query = $this->db->prepare($sql);
|
||||||
|
$query->execute([
|
||||||
|
':address' => $newHost['address'],
|
||||||
|
':port' => $newHost['port'],
|
||||||
|
':platform_id' => $newHost['platform_id'],
|
||||||
|
':name' => $newHost['name'],
|
||||||
|
]);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return $e->getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// edit an existing host
|
||||||
|
public function editAgent($platform_id, $updatedAgent) {
|
||||||
|
try {
|
||||||
|
$sql = 'UPDATE jilo_agents SET
|
||||||
|
agent_type_id = :agent_type_id,
|
||||||
|
url = :url,
|
||||||
|
secret_key = :secret_key,
|
||||||
|
check_period = :check_period
|
||||||
|
WHERE
|
||||||
|
id = :agent_id
|
||||||
|
AND
|
||||||
|
platform_id = :platform_id';
|
||||||
|
|
||||||
|
$query = $this->db->prepare($sql);
|
||||||
|
$query->execute([
|
||||||
|
':agent_type_id' => $updatedAgent['agent_type_id'],
|
||||||
|
':url' => $updatedAgent['url'],
|
||||||
|
':secret_key' => $updatedAgent['secret_key'],
|
||||||
|
':check_period' => $updatedAgent['check_period'],
|
||||||
|
':agent_id' => $updatedAgent['id'],
|
||||||
|
':platform_id' => $platform_id,
|
||||||
|
]);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return $e->getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// delete a host
|
||||||
|
public function deleteAgent($agent_id) {
|
||||||
|
try {
|
||||||
|
$sql = 'DELETE FROM jilo_agents
|
||||||
|
WHERE
|
||||||
|
id = :agent_id';
|
||||||
|
|
||||||
|
$query = $this->db->prepare($sql);
|
||||||
|
$query->bindParam(':agent_id', $agent_id);
|
||||||
|
|
||||||
|
$query->execute();
|
||||||
|
return true;
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return $e->getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -28,6 +28,17 @@ if (isset($_SESSION['error'])) {
|
||||||
$error = htmlspecialchars($_SESSION['error']); // 'error' for errors
|
$error = htmlspecialchars($_SESSION['error']); // 'error' for errors
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// hosts
|
||||||
|
if (isset($_POST['address'])) {
|
||||||
|
$address = htmlspecialchars($_POST['address']);
|
||||||
|
}
|
||||||
|
if (isset($_POST['port'])) {
|
||||||
|
$port = htmlspecialchars($_POST['port']);
|
||||||
|
}
|
||||||
|
if (isset($_POST['name'])) {
|
||||||
|
$name = htmlspecialchars($_POST['name']);
|
||||||
|
}
|
||||||
|
|
||||||
// agents
|
// agents
|
||||||
if (isset($_POST['type'])) {
|
if (isset($_POST['type'])) {
|
||||||
$type = htmlspecialchars($_POST['type']);
|
$type = htmlspecialchars($_POST['type']);
|
||||||
|
|
|
@ -4,9 +4,11 @@ $action = $_REQUEST['action'] ?? '';
|
||||||
$agent = $_REQUEST['agent'] ?? '';
|
$agent = $_REQUEST['agent'] ?? '';
|
||||||
|
|
||||||
require '../app/classes/config.php';
|
require '../app/classes/config.php';
|
||||||
|
require '../app/classes/host.php';
|
||||||
require '../app/classes/agent.php';
|
require '../app/classes/agent.php';
|
||||||
|
|
||||||
$configObject = new Config();
|
$configObject = new Config();
|
||||||
|
$hostObject = new Host($dbWeb);
|
||||||
$agentObject = new Agent($dbWeb);
|
$agentObject = new Agent($dbWeb);
|
||||||
|
|
||||||
// if a form is submitted, it's from the edit page
|
// if a form is submitted, it's from the edit page
|
||||||
|
@ -17,8 +19,23 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
// $content = file_get_contents($config_file);
|
// $content = file_get_contents($config_file);
|
||||||
// $updatedContent = $content;
|
// $updatedContent = $content;
|
||||||
|
|
||||||
|
// new host adding
|
||||||
|
if (isset($_POST['new']) && isset($_POST['item']) && $_POST['new'] === 'true' && $_POST['item'] === 'host') {
|
||||||
|
$newHost = [
|
||||||
|
'address' => $address,
|
||||||
|
'port' => $port,
|
||||||
|
'platform_id' => $platform_id,
|
||||||
|
'name' => $name,
|
||||||
|
];
|
||||||
|
$result = $hostObject->addHost($newHost);
|
||||||
|
if ($result === true) {
|
||||||
|
$_SESSION['notice'] = "New Jilo host added.";
|
||||||
|
} else {
|
||||||
|
$_SESSION['error'] = "Adding the host failed. Error: $result";
|
||||||
|
}
|
||||||
|
|
||||||
// new agent adding
|
// new agent adding
|
||||||
if (isset($_POST['new']) && isset($_POST['item']) && $_POST['new'] === 'true' && $_POST['item'] === 'agent') {
|
} elseif (isset($_POST['new']) && isset($_POST['item']) && $_POST['new'] === 'true' && $_POST['item'] === 'agent') {
|
||||||
$newAgent = [
|
$newAgent = [
|
||||||
'type_id' => $type,
|
'type_id' => $type,
|
||||||
'url' => $url,
|
'url' => $url,
|
||||||
|
@ -136,6 +153,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
include '../app/templates/config-host-delete.php';
|
include '../app/templates/config-host-delete.php';
|
||||||
} else {
|
} else {
|
||||||
if ($userObject->hasRight($user_id, 'view config file')) {
|
if ($userObject->hasRight($user_id, 'view config file')) {
|
||||||
|
$hostDetails = $hostObject->getHostDetails();
|
||||||
include '../app/templates/config-host.php';
|
include '../app/templates/config-host.php';
|
||||||
} else {
|
} else {
|
||||||
include '../app/templates/error-unauthorized.php';
|
include '../app/templates/error-unauthorized.php';
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
|
||||||
|
<!-- widget "config" -->
|
||||||
|
<div class="card text-center w-50 mx-auto">
|
||||||
|
<p class="h4 card-header">Add new host in Jitsi platform <strong><?= htmlspecialchars($platformDetails[0]['name']) ?></strong></p>
|
||||||
|
<div class="card-body">
|
||||||
|
<form method="POST" action="<?= htmlspecialchars($app_root) ?>?platform=<?= htmlspecialchars($platform_id) ?>&page=config&item=host">
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4 text-end">
|
||||||
|
<label for="address" class="form-label">address</label>
|
||||||
|
<span class="text-danger" style="margin-right: -12px;">*</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input class="form-control" type="text" name="address" value="" required autofocus />
|
||||||
|
<p class="text-start"><small>DNS name or IP address of the machine</small></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4 text-end">
|
||||||
|
<label for="port" class="form-label">port</label>
|
||||||
|
<span class="text-danger" style="margin-right: -12px;">*</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input class="form-control" type="text" name="port" value="" required />
|
||||||
|
<p class="text-start"><small>port on which the Jilo Agent is listening</small></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4 text-end">
|
||||||
|
<label for="name" class="form-label">name</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input class="form-control" type="text" name="name" value="" />
|
||||||
|
<p class="text-start"><small>description or name of the host (optional)</small></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="platform_id" value="<?= htmlspecialchars($platformDetails[0]['id'])?>" />
|
||||||
|
<input type="hidden" name="item" value="host" />
|
||||||
|
<input type="hidden" name="new" value="true" />
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<a class="btn btn-secondary" href="<?= htmlspecialchars($app_root) ?>?page=config&item=host" />Cancel</a>
|
||||||
|
<input type="submit" class="btn btn-primary" value="Save" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /widget "config" -->
|
|
@ -0,0 +1,36 @@
|
||||||
|
|
||||||
|
<!-- widget "config" -->
|
||||||
|
<div class="card text-center w-75 mx-lef">
|
||||||
|
<p class="h4 card-header">Jilo configuration :: Jitsi Meet hosts</p>
|
||||||
|
<div class="card-body">
|
||||||
|
<p class="card-text">Jitsi hosts configuration
|
||||||
|
</p>
|
||||||
|
<?php foreach ($platformsAll as $platform_array) {
|
||||||
|
$hosts = $hostObject->getHostDetails($platform_array['id']);
|
||||||
|
?>
|
||||||
|
<a name="platform<?= htmlspecialchars($platform_array['id']) ?>"></a>
|
||||||
|
<div class="row mb-1 border" style="padding: 20px; padding-bottom: 0px;">
|
||||||
|
<p class="text-start">
|
||||||
|
platform <strong><?= htmlspecialchars($platform_array['name']) ?></strong>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<?php foreach ($hosts as $host_array) { ?>
|
||||||
|
<a name="platform<?= htmlspecialchars($platform_array['id']) ?>host<?= htmlspecialchars($host_array['id']) ?>"></a>
|
||||||
|
<p class="text-start" style="padding-left: 50px;">
|
||||||
|
<?= htmlspecialchars($host_array['address']) ?>:<?= htmlspecialchars($host_array['port']) ?>
|
||||||
|
|
||||||
|
<a class="btn btn-outline-secondary btn-sm" href="<?= htmlspecialchars($app_root) ?>?page=config&item=host&platform=<?= htmlspecialchars($host_array['platform_id']) ?>&host=<?= htmlspecialchars($host_array['id']) ?>&action=edit">edit host</a>
|
||||||
|
<a class="btn btn-outline-danger btn-sm" href="<?= htmlspecialchars($app_root) ?>?page=config&item=host&platform=<?= htmlspecialchars($host_array['platform_id']) ?>&host=<?= htmlspecialchars($host_array['id']) ?>&action=delete">delete host</a>
|
||||||
|
</p>
|
||||||
|
<?php } ?>
|
||||||
|
<p class="text-start" style="padding-left: 50px;">
|
||||||
|
total <?= htmlspecialchars(count($hosts)) ?> <?= htmlspecialchars(count($hosts)) === 1 ? 'jilo host' : 'jilo hosts' ?>
|
||||||
|
|
||||||
|
<a class="btn btn-outline-secondary btn-sm" href="<?= htmlspecialchars($app_root) ?>?page=config&item=host&platform=<?= htmlspecialchars($platform_array['id']) ?>&action=add">add new</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<?php } ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /widget "config" -->
|
|
@ -14,6 +14,7 @@ CREATE TABLE users_meta (
|
||||||
bio TEXT,
|
bio TEXT,
|
||||||
FOREIGN KEY (user_id) REFERENCES users(id)
|
FOREIGN KEY (user_id) REFERENCES users(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE users_rights (
|
CREATE TABLE users_rights (
|
||||||
user_id INTEGER,
|
user_id INTEGER,
|
||||||
right_id INTEGER,
|
right_id INTEGER,
|
||||||
|
@ -25,12 +26,32 @@ CREATE TABLE rights (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
name TEXT NOT NULL UNIQUE
|
name TEXT NOT NULL UNIQUE
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE TABLE logs (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
user_id INTEGET NOT NULL,
|
||||||
|
time TEXT DEFAULT (DATETIME('now')),
|
||||||
|
scope TEXT NOT NULL,
|
||||||
|
message TEXT NOT NULL,
|
||||||
|
FOREIGN KEY (user_id) REFERENCES users(id)
|
||||||
|
);
|
||||||
|
|
||||||
CREATE TABLE platforms (
|
CREATE TABLE platforms (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
name TEXT NOT NULL UNIQUE,
|
name TEXT NOT NULL UNIQUE,
|
||||||
jitsi_url TEXT NOT NULL,
|
jitsi_url TEXT NOT NULL,
|
||||||
jilo_database TEXT NOT NULL
|
jilo_database TEXT NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE TABLE hosts (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
address TEXT NOT NULL,
|
||||||
|
port INTEGER NOT NULL,
|
||||||
|
platform_id INTEGER NOT NULL,
|
||||||
|
name TEXT,
|
||||||
|
FOREIGN KEY(platform_id) REFERENCES platforms(id)
|
||||||
|
);
|
||||||
|
|
||||||
CREATE TABLE jilo_agents (
|
CREATE TABLE jilo_agents (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
platform_id INTEGER NOT NULL,
|
platform_id INTEGER NOT NULL,
|
||||||
|
@ -55,11 +76,3 @@ CREATE TABLE jilo_agent_checks (
|
||||||
response_content TEXT,
|
response_content TEXT,
|
||||||
FOREIGN KEY (agent_id) REFERENCES jilo_agents(id)
|
FOREIGN KEY (agent_id) REFERENCES jilo_agents(id)
|
||||||
);
|
);
|
||||||
CREATE TABLE logs (
|
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
user_id INTEGET NOT NULL,
|
|
||||||
time TEXT DEFAULT (DATETIME('now')),
|
|
||||||
scope TEXT NOT NULL,
|
|
||||||
message TEXT NOT NULL,
|
|
||||||
FOREIGN KEY (user_id) REFERENCES users(id)
|
|
||||||
);
|
|
||||||
|
|
Loading…
Reference in New Issue