Adds support for managing Jilo Agents
parent
48a0cf9e86
commit
de7133be3d
|
@ -6,6 +6,9 @@ All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Added support for managing Jilo Agents
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Jitsi platforms config moved from file to SQLite database
|
- Jitsi platforms config moved from file to SQLite database
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,105 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
class Agent {
|
||||||
|
private $db;
|
||||||
|
|
||||||
|
public function __construct($database) {
|
||||||
|
$this->db = $database->getConnection();
|
||||||
|
}
|
||||||
|
|
||||||
|
// get details of a specified agent ID (or all) in a specified platform ID
|
||||||
|
public function getAgentDetails($platform_id, $agent_id = '') {
|
||||||
|
$sql = 'SELECT * FROM jilo_agents
|
||||||
|
WHERE
|
||||||
|
platform_id = :platform_id';
|
||||||
|
if ($agent_id !== '') {
|
||||||
|
$sql .= ' AND id = :agent_id';
|
||||||
|
$query = $this->db->prepare($sql);
|
||||||
|
$query->execute([
|
||||||
|
':platform_id' => $platform_id,
|
||||||
|
':agent_id' => $agent_id,
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
$query = $this->db->prepare($sql);
|
||||||
|
$query->bindParam(':platform_id', $platform_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
$query->execute();
|
||||||
|
|
||||||
|
return $query->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
}
|
||||||
|
|
||||||
|
// add new agent
|
||||||
|
public function addAgent($platform_id, $newAgent) {
|
||||||
|
try {
|
||||||
|
$sql = 'INSERT INTO jilo_agents
|
||||||
|
(platform_id, type_id, url, secret_key)
|
||||||
|
VALUES
|
||||||
|
(:platform_id, :type_id, :url, :secret_key)';
|
||||||
|
|
||||||
|
$query = $this->db->prepare($sql);
|
||||||
|
$query->execute([
|
||||||
|
':platform_id' => $platform_id,
|
||||||
|
':type_id' => $newAgent['type_id'],
|
||||||
|
':url' => $newAgent['url'],
|
||||||
|
':secret_key' => $newAgent['secret_key'],
|
||||||
|
]);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return $e->getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// edit an existing agent
|
||||||
|
public function editAgent($platform_id, $updatedAgent) {
|
||||||
|
try {
|
||||||
|
$sql = 'UPDATE jilo_agents SET
|
||||||
|
type_id = :type_id,
|
||||||
|
url = :url,
|
||||||
|
secret_key = :secret_key
|
||||||
|
WHERE
|
||||||
|
id = :agent_id
|
||||||
|
AND
|
||||||
|
platform_id = :platform_id';
|
||||||
|
|
||||||
|
$query = $this->db->prepare($sql);
|
||||||
|
$query->execute([
|
||||||
|
':type_id' => $updatedAgent['type_id'],
|
||||||
|
':url' => $updatedAgent['url'],
|
||||||
|
':secret_key' => $updatedAgent['secret_key'],
|
||||||
|
':agent_id' => $updatedAgent['id'],
|
||||||
|
':platform_id' => $platform_id,
|
||||||
|
]);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return $e->getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// delete an agent
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -38,7 +38,6 @@ class Platform {
|
||||||
':jilo_database' => $newPlatform['jilo_database'],
|
':jilo_database' => $newPlatform['jilo_database'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$query->execute();
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
@ -64,7 +63,6 @@ class Platform {
|
||||||
':platform_id' => $platform_id,
|
':platform_id' => $platform_id,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$query->execute();
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
@ -72,7 +70,6 @@ class Platform {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// delete a platform
|
// delete a platform
|
||||||
public function deletePlatform($platform_id) {
|
public function deletePlatform($platform_id) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$action = $_REQUEST['action'] ?? '';
|
||||||
|
$agent = $_REQUEST['agent'] ?? '';
|
||||||
|
require '../app/classes/agent.php';
|
||||||
|
|
||||||
|
$agentObject = new Agent($dbWeb);
|
||||||
|
|
||||||
|
// if a form is submitted, it's from the edit page
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
|
|
||||||
|
// new agent adding
|
||||||
|
if (isset($_POST['new']) && $_POST['new'] === 'true') {
|
||||||
|
$newAgent = [
|
||||||
|
'type_id' => 1,
|
||||||
|
'url' => $_POST['url'],
|
||||||
|
'secret_key' => $_POST['secret_key'],
|
||||||
|
];
|
||||||
|
$result = $agentObject->addAgent($platform_id, $newAgent);
|
||||||
|
if ($result === true) {
|
||||||
|
$_SESSION['notice'] = "New Jilo Agent added.";
|
||||||
|
} else {
|
||||||
|
$_SESSION['error'] = "Adding the agent failed. Error: $result";
|
||||||
|
}
|
||||||
|
|
||||||
|
// deleting an agent
|
||||||
|
} elseif (isset($_POST['delete']) && $_POST['delete'] === 'true') {
|
||||||
|
$result = $agentObject->deleteAgent($agent);
|
||||||
|
if ($result === true) {
|
||||||
|
$_SESSION['notice'] = "Agent id \"{$_REQUEST['agent']}\" deleted.";
|
||||||
|
} else {
|
||||||
|
$_SESSION['error'] = "Deleting the agent failed. Error: $result";
|
||||||
|
}
|
||||||
|
|
||||||
|
// an update to an existing agent
|
||||||
|
} else {
|
||||||
|
$updatedAgent = [
|
||||||
|
'id' => $agent,
|
||||||
|
'type_id' => 1,
|
||||||
|
'url' => $_POST['url'],
|
||||||
|
'secret_key' => $_POST['secret_key'],
|
||||||
|
];
|
||||||
|
$result = $agentObject->editAgent($platform_id, $updatedAgent);
|
||||||
|
if ($result === true) {
|
||||||
|
$_SESSION['notice'] = "Agent id \"{$_REQUEST['agent']}\" edited.";
|
||||||
|
} else {
|
||||||
|
$_SESSION['error'] = "Editing the agent failed. Error: $result";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
header("Location: $app_root?platform=$platform_id&page=agents");
|
||||||
|
exit();
|
||||||
|
|
||||||
|
// no form submitted, show the templates
|
||||||
|
} else {
|
||||||
|
|
||||||
|
switch ($action) {
|
||||||
|
case 'add':
|
||||||
|
include('../app/templates/agent-add.php');
|
||||||
|
break;
|
||||||
|
case 'edit':
|
||||||
|
$agentDetails = $agentObject->getAgentDetails($platform_id, $agent);
|
||||||
|
include('../app/templates/agent-edit.php');
|
||||||
|
break;
|
||||||
|
case 'delete':
|
||||||
|
$agentDetails = $agentObject->getAgentDetails($platform_id, $agent);
|
||||||
|
include('../app/templates/agent-delete.php');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$agentDetails = $agentObject->getAgentDetails($platform_id);
|
||||||
|
include('../app/templates/agent-list.php');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -8,9 +8,10 @@ $configure = new Config();
|
||||||
// if a form is submitted, it's from the edit page
|
// if a form is submitted, it's from the edit page
|
||||||
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
|
|
||||||
// load the config file and initialize a copy
|
// FIXME - if editing the flat file is no more needed, remove this
|
||||||
$content = file_get_contents($config_file);
|
// // load the config file and initialize a copy
|
||||||
$updatedContent = $content;
|
// $content = file_get_contents($config_file);
|
||||||
|
// $updatedContent = $content;
|
||||||
|
|
||||||
// new platform adding
|
// new platform adding
|
||||||
if (isset($_POST['new']) && $_POST['new'] === 'true') {
|
if (isset($_POST['new']) && $_POST['new'] === 'true') {
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
|
||||||
|
<!-- widget "agents" -->
|
||||||
|
<div class="card text-center w-50 mx-auto">
|
||||||
|
<p class="h4 card-header">Add new Jilo Agent to Jitsi platform "<strong><?= htmlspecialchars($platformDetails[0]['name']) ?></strong>"</p>
|
||||||
|
<div class="card-body">
|
||||||
|
<!--p class="card-text">add new platform:</p-->
|
||||||
|
<form method="POST" action="<?= $app_root ?>?platform=<?= htmlspecialchars($platform_id) ?>&page=agents">
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4 text-end">
|
||||||
|
<label for="type" class="form-label">type</label>
|
||||||
|
<span class="text-danger" style="margin-right: -12px;">*</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input class="form-control" type="text" name="type" value="" required />
|
||||||
|
<p class="text-start"><small>type of agent (meet, jvb, jibri, all)</small></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4 text-end">
|
||||||
|
<label for="url" class="form-label">URL</label>
|
||||||
|
<span class="text-danger" style="margin-right: -12px;">*</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input class="form-control" type="text" name="url" value="https://" required />
|
||||||
|
<p class="text-start"><small>URL of the Jilo Agent API (https://example.com:8081)</small></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4 text-end">
|
||||||
|
<label for="secret_key" class="form-label">secret key</label>
|
||||||
|
<span class="text-danger" style="margin-right: -12px;">*</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input class="form-control" type="text" name="secret_key" value="" required />
|
||||||
|
<p class="text-start"><small>secret key for generating the access JWT token</small></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input type="hidden" name="new" value="true" />
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<a class="btn btn-secondary" href="<?= $app_root ?>?platform=<?= htmlspecialchars($platform_id) ?>&page=agents" />Cancel</a>
|
||||||
|
<input type="submit" class="btn btn-primary" value="Save" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /widget "agents" -->
|
|
@ -0,0 +1,32 @@
|
||||||
|
|
||||||
|
<!-- widget "agents" -->
|
||||||
|
<div class="card text-center w-50 mx-auto">
|
||||||
|
<p class="h4 card-header">Jilo Agent configuration for Jitsi platform <strong>"<?= htmlspecialchars($platformDetails[0]['name']) ?>"</strong></p>
|
||||||
|
<div class="card-body">
|
||||||
|
<p class="card-text">delete an agent:</p>
|
||||||
|
<form method="POST" action="<?= $app_root ?>?platform=<?= htmlspecialchars($platform_id) ?>&page=agents">
|
||||||
|
<?php
|
||||||
|
foreach ($agentDetails[0] as $key => $value) {
|
||||||
|
// if ($key === 'id') continue;
|
||||||
|
?>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4 text-end">
|
||||||
|
<label for="<?= htmlspecialchars($key) ?>" class="form-label"><?= htmlspecialchars($key) ?>:</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<div class="text-start"><?= htmlspecialchars($value ?? '')?></div>
|
||||||
|
<input type="hidden" name="<?= htmlspecialchars($key) ?>" value="<?= htmlspecialchars($value ?? '')?>" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php } ?>
|
||||||
|
<br />
|
||||||
|
<input type="hidden" name="agent" value="<?= htmlspecialchars($agentDetails[0]['id']) ?>" />
|
||||||
|
<input type="hidden" name="delete" value="true" />
|
||||||
|
<p class="h5 text-danger">Are you sure you want to delete this agent?</p>
|
||||||
|
<br />
|
||||||
|
<a class="btn btn-secondary" href="<?= $app_root ?>?platform=<?= htmlspecialchars($platform_id) ?>&page=agents" />Cancel</a>
|
||||||
|
<input type="submit" class="btn btn-danger" value="Delete" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /widget "agents" -->
|
|
@ -0,0 +1,50 @@
|
||||||
|
|
||||||
|
<!-- widget "agents" -->
|
||||||
|
<div class="card text-center w-50 mx-auto">
|
||||||
|
<p class="h4 card-header">Jilo Agent configuration for Jitsi platform <strong>"<?= htmlspecialchars($platformDetails[0]['name']) ?>"</strong></p>
|
||||||
|
<div class="card-body">
|
||||||
|
<p class="card-text">edit the agent details:</p>
|
||||||
|
<form method="POST" action="<?= $app_root ?>?platform=<?= htmlspecialchars($platform_id) ?>&page=agents">
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4 text-end">
|
||||||
|
<label for="type_id" class="form-label">type</label>
|
||||||
|
<span class="text-danger" style="margin-right: -12px;">*</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input class="form-control" type="text" name="type_id" value="<?= htmlspecialchars($agentDetails[0]['type_id'])?>" required />
|
||||||
|
<p class="text-start"><small>type of agent (meet, jvb, jibri, all)</small></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4 text-end">
|
||||||
|
<label for="url" class="form-label">URL</label>
|
||||||
|
<span class="text-danger" style="margin-right: -12px;">*</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input class="form-control" type="text" name="url" value="<?= htmlspecialchars($agentDetails[0]['url'])?>" required />
|
||||||
|
<p class="text-start"><small>URL of the Jilo Agent API (https://example.com:8081)</small></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4 text-end">
|
||||||
|
<label for="secret_key" class="form-label">secret key</label>
|
||||||
|
<span class="text-danger" style="margin-right: -12px;">*</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input class="form-control" type="text" name="secret_key" value="<?= htmlspecialchars($agentDetails[0]['secret_key'])?>" required />
|
||||||
|
<p class="text-start"><small>secret key for generating the access JWT token</small></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<input type="hidden" name="agent" value="<?= htmlspecialchars($agentDetails[0]['id']) ?>" />
|
||||||
|
<a class="btn btn-secondary" href="<?= $app_root ?>?platform=<?= htmlspecialchars($platform_id) ?>&page=agents" />Cancel</a>
|
||||||
|
<input type="submit" class="btn btn-primary" value="Save" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /widget "agents" -->
|
|
@ -0,0 +1,42 @@
|
||||||
|
|
||||||
|
<!-- widget "agents" -->
|
||||||
|
<div class="card text-center w-75 mx-lef">
|
||||||
|
<p class="h4 card-header">Jilo Agents on platform <strong>"<?= htmlspecialchars($platformDetails[0]['name']) ?>"</strong></p>
|
||||||
|
<div class="card-body">
|
||||||
|
<p class="card-text">agents configuration <a class="btn btn-secondary" style="padding: 0px;" href="<?= $app_root ?>?platform=<?= htmlspecialchars($platform_id) ?>&page=agents&action=add">add</a></p>
|
||||||
|
|
||||||
|
<?php foreach ($agentDetails as $agent_array) { ?>
|
||||||
|
|
||||||
|
<div class="row mb-3" style="padding-left: 0px;">
|
||||||
|
<div class="border bg-light" style="padding-left: 50px; padding-bottom: 20px; padding-top: 20px;">
|
||||||
|
<div class="row mb-1" style="padding-left: 0px;">
|
||||||
|
<div class="col-md-4 text-end">
|
||||||
|
agent id <?= $agent_array['id'] ?>:
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8 text-start">
|
||||||
|
<a class="btn btn-secondary" style="padding: 2px;" href="<?= $app_root ?>?platform=<?= htmlspecialchars($agent_array['platform_id']) ?>&page=agents&agent=<?= htmlspecialchars($agent_array['id']) ?>&action=edit">edit</a>
|
||||||
|
<a class="btn btn-danger" style="padding: 2px;" href="<?= $app_root ?>?platform=<?= htmlspecialchars($agent_array['platform_id'])?>&page=agents&agent=<?= htmlspecialchars($agent_array['id']) ?>&action=delete">delete</a>
|
||||||
|
</div>
|
||||||
|
<div style="padding-left: 100px; padding-bottom: 20px;">
|
||||||
|
<?php foreach ($agent_array as $key => $value) {
|
||||||
|
if ($key === 'id') continue;
|
||||||
|
?>
|
||||||
|
<div class="row mb-1" style="padding-left: 100px;">
|
||||||
|
<div class="col-md-4 text-end">
|
||||||
|
<?= $key ?>:
|
||||||
|
</div>
|
||||||
|
<div class="border col-md-8 text-start">
|
||||||
|
<?= $value ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php } ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /widget "agents" -->
|
|
@ -19,7 +19,7 @@ echo "\n";
|
||||||
<div class="border bg-light" style="padding-left: 50px; padding-bottom: 20px; padding-top: 20px;">
|
<div class="border bg-light" style="padding-left: 50px; padding-bottom: 20px; padding-top: 20px;">
|
||||||
<div class="row mb-1" style="padding-left: 0px;">
|
<div class="row mb-1" style="padding-left: 0px;">
|
||||||
<div class="col-md-4 text-end">
|
<div class="col-md-4 text-end">
|
||||||
<?= $platform_array['id'] ?>:
|
platform id <?= $platform_array['id'] ?>:
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8 text-start">
|
<div class="col-md-8 text-start">
|
||||||
<a class="btn btn-secondary" style="padding: 2px;" href="<?= $app_root ?>?platform=<?= htmlspecialchars($platform_array['id']) ?>&page=config&action=edit">edit</a>
|
<a class="btn btn-secondary" style="padding: 2px;" href="<?= $app_root ?>?platform=<?= htmlspecialchars($platform_array['id']) ?>&page=config&action=edit">edit</a>
|
||||||
|
@ -43,6 +43,15 @@ echo "\n";
|
||||||
</div>
|
</div>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4 text-end">
|
||||||
|
configured jilo agents:
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8 text-start">
|
||||||
|
0
|
||||||
|
<a class="btn btn-secondary" style="padding: 2px; margin-left: 10px;" href="<?= $app_root ?>?platform=<?= htmlspecialchars($platform_array['id']) ?>&page=agents">configure</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -46,12 +46,17 @@
|
||||||
|
|
||||||
<a href="<?= $app_root ?>?platform=<?= $platform_id ?>&page=config&item=configjs">
|
<a href="<?= $app_root ?>?platform=<?= $platform_id ?>&page=config&item=configjs">
|
||||||
<li class="list-group-item<?php if ($page === 'config' && $item === 'configjs') echo ' list-group-item-secondary'; else echo ' list-group-item-action'; ?>">
|
<li class="list-group-item<?php if ($page === 'config' && $item === 'configjs') echo ' list-group-item-secondary'; else echo ' list-group-item-action'; ?>">
|
||||||
<i class="fas fa-tv" data-toggle="tooltip" data-placement="right" data-offset="30.0" title="configuration"></i>config.js
|
<i class="fas fa-tv" data-toggle="tooltip" data-placement="right" data-offset="30.0" title="config.js"></i>config.js
|
||||||
</li>
|
</li>
|
||||||
</a>
|
</a>
|
||||||
<a href="<?= $app_root ?>?platform=<?= $platform_id ?>&page=config&item=interfaceconfigjs">
|
<a href="<?= $app_root ?>?platform=<?= $platform_id ?>&page=config&item=interfaceconfigjs">
|
||||||
<li class="list-group-item<?php if ($page === 'config' && $item === 'interfaceconfigjs') echo ' list-group-item-secondary'; else echo ' list-group-item-action'; ?>">
|
<li class="list-group-item<?php if ($page === 'config' && $item === 'interfaceconfigjs') echo ' list-group-item-secondary'; else echo ' list-group-item-action'; ?>">
|
||||||
<i class="fas fa-th" data-toggle="tooltip" data-placement="right" data-offset="30.0" title="configuration"></i>interface_config.js
|
<i class="fas fa-th" data-toggle="tooltip" data-placement="right" data-offset="30.0" title="interface_config.js"></i>interface_config.js
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
<a href="<?= $app_root ?>?platform=<?= $platform_id ?>&page=agents">
|
||||||
|
<li class="list-group-item<?php if ($page === 'agents') echo ' list-group-item-secondary'; else echo ' list-group-item-action'; ?>">
|
||||||
|
<i class="fas fa-mask" data-toggle="tooltip" data-placement="right" data-offset="30.0" title="jilo agents"></i>jilo agents
|
||||||
</li>
|
</li>
|
||||||
</a>
|
</a>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -31,6 +31,7 @@ $allowed_urls = [
|
||||||
'register',
|
'register',
|
||||||
'profile',
|
'profile',
|
||||||
'config',
|
'config',
|
||||||
|
'agents',
|
||||||
'conferences',
|
'conferences',
|
||||||
'participants',
|
'participants',
|
||||||
'components',
|
'components',
|
||||||
|
|
Loading…
Reference in New Issue