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
|
||||
}
|
||||
|
||||
// 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
|
||||
if (isset($_POST['type'])) {
|
||||
$type = htmlspecialchars($_POST['type']);
|
||||
|
|
|
@ -4,9 +4,11 @@ $action = $_REQUEST['action'] ?? '';
|
|||
$agent = $_REQUEST['agent'] ?? '';
|
||||
|
||||
require '../app/classes/config.php';
|
||||
require '../app/classes/host.php';
|
||||
require '../app/classes/agent.php';
|
||||
|
||||
$configObject = new Config();
|
||||
$hostObject = new Host($dbWeb);
|
||||
$agentObject = new Agent($dbWeb);
|
||||
|
||||
// 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);
|
||||
// $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
|
||||
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 = [
|
||||
'type_id' => $type,
|
||||
'url' => $url,
|
||||
|
@ -136,6 +153,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
|||
include '../app/templates/config-host-delete.php';
|
||||
} else {
|
||||
if ($userObject->hasRight($user_id, 'view config file')) {
|
||||
$hostDetails = $hostObject->getHostDetails();
|
||||
include '../app/templates/config-host.php';
|
||||
} else {
|
||||
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,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id)
|
||||
);
|
||||
|
||||
CREATE TABLE users_rights (
|
||||
user_id INTEGER,
|
||||
right_id INTEGER,
|
||||
|
@ -25,12 +26,32 @@ CREATE TABLE rights (
|
|||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
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 (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
jitsi_url 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 (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
platform_id INTEGER NOT NULL,
|
||||
|
@ -55,11 +76,3 @@ CREATE TABLE jilo_agent_checks (
|
|||
response_content TEXT,
|
||||
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