| 
									
										
										
										
											2024-08-12 11:12:24 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-18 19:12:45 +00:00
										 |  |  | $action = $_REQUEST['action'] ?? ''; | 
					
						
							| 
									
										
										
										
											2024-09-20 09:13:18 +00:00
										 |  |  | $agent = $_REQUEST['agent'] ?? ''; | 
					
						
							| 
									
										
										
										
											2024-10-30 20:14:54 +00:00
										 |  |  | $host = $_REQUEST['host'] ?? ''; | 
					
						
							| 
									
										
										
										
											2024-09-20 09:13:18 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-04 09:53:02 +00:00
										 |  |  | require '../app/classes/config.php'; | 
					
						
							| 
									
										
										
										
											2024-10-30 17:11:23 +00:00
										 |  |  | require '../app/classes/host.php'; | 
					
						
							| 
									
										
										
										
											2024-09-20 09:13:18 +00:00
										 |  |  | require '../app/classes/agent.php'; | 
					
						
							| 
									
										
										
										
											2024-08-18 19:12:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-06 16:34:03 +00:00
										 |  |  | $configObject = new Config(); | 
					
						
							| 
									
										
										
										
											2024-10-30 17:11:23 +00:00
										 |  |  | $hostObject = new Host($dbWeb); | 
					
						
							| 
									
										
										
										
											2024-09-20 09:13:18 +00:00
										 |  |  | $agentObject = new Agent($dbWeb); | 
					
						
							| 
									
										
										
										
											2024-08-28 09:59:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  | // if a form is submitted, it's from the edit page
 | 
					
						
							|  |  |  | if ($_SERVER['REQUEST_METHOD'] == 'POST') { | 
					
						
							| 
									
										
										
										
											2024-08-18 19:12:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-04 22:06:38 +00:00
										 |  |  | // FIXME - if editing the flat file is no more needed, remove this
 | 
					
						
							|  |  |  | //    // load the config file and initialize a copy
 | 
					
						
							|  |  |  | //    $content = file_get_contents($config_file);
 | 
					
						
							|  |  |  | //    $updatedContent = $content;
 | 
					
						
							| 
									
										
										
										
											2024-08-18 19:12:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-30 17:11:23 +00:00
										 |  |  |     // 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"; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-20 09:13:18 +00:00
										 |  |  |     // new agent adding
 | 
					
						
							| 
									
										
										
										
											2024-10-30 17:11:23 +00:00
										 |  |  |     } elseif (isset($_POST['new']) && isset($_POST['item']) && $_POST['new'] === 'true' && $_POST['item'] === 'agent') { | 
					
						
							| 
									
										
										
										
											2024-09-20 09:13:18 +00:00
										 |  |  |         $newAgent = [ | 
					
						
							| 
									
										
										
										
											2024-10-04 08:36:45 +00:00
										 |  |  |             'type_id'       => $type, | 
					
						
							|  |  |  |             'url'           => $url, | 
					
						
							|  |  |  |             'secret_key'	=> $secret_key, | 
					
						
							| 
									
										
										
										
											2024-10-25 09:19:54 +00:00
										 |  |  |             'check_period'  => $check_period, | 
					
						
							| 
									
										
										
										
											2024-09-20 09:13:18 +00:00
										 |  |  |         ]; | 
					
						
							|  |  |  |         $result = $agentObject->addAgent($platform_id, $newAgent); | 
					
						
							|  |  |  |         if ($result === true) { | 
					
						
							|  |  |  |             $_SESSION['notice'] = "New Jilo Agent added."; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $_SESSION['error'] = "Adding the agent failed. Error: $result"; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-26 18:19:21 +00:00
										 |  |  |     // new platform adding
 | 
					
						
							| 
									
										
										
										
											2024-09-20 09:13:18 +00:00
										 |  |  |     } elseif (isset($_POST['new']) && $_POST['new'] === 'true') { | 
					
						
							| 
									
										
										
										
											2024-08-26 18:19:21 +00:00
										 |  |  |         $newPlatform = [ | 
					
						
							| 
									
										
										
										
											2024-10-04 08:36:45 +00:00
										 |  |  |             'name'          => $name, | 
					
						
							| 
									
										
										
										
											2024-08-27 18:18:27 +00:00
										 |  |  |             'jitsi_url'		=> $_POST['jitsi_url'], | 
					
						
							|  |  |  |             'jilo_database'	=> $_POST['jilo_database'], | 
					
						
							| 
									
										
										
										
											2024-08-26 18:19:21 +00:00
										 |  |  |         ]; | 
					
						
							| 
									
										
										
										
											2024-10-31 09:45:59 +00:00
										 |  |  |         $result = $platformObject->addPlatform($newPlatform); | 
					
						
							|  |  |  |         if ($result === true) { | 
					
						
							|  |  |  |             $_SESSION['notice'] = "New Jitsi platform added."; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $_SESSION['error'] = "Adding the platform failed. Error: $result"; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-08-26 18:19:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-30 20:14:54 +00:00
										 |  |  |     // deleting a host
 | 
					
						
							|  |  |  |     } elseif (isset($_POST['delete']) && isset($_POST['host']) && $_POST['delete'] === 'true') { | 
					
						
							|  |  |  |         $result = $hostObject->deleteHost($host); | 
					
						
							|  |  |  |         if ($result === true) { | 
					
						
							|  |  |  |             $_SESSION['notice'] = "Host id \"{$_REQUEST['host']}\" deleted."; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $_SESSION['error'] = "Deleting the host failed. Error: $result"; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-20 09:13:18 +00:00
										 |  |  |     // deleting an agent
 | 
					
						
							| 
									
										
										
										
											2024-09-23 09:39:33 +00:00
										 |  |  |     } elseif (isset($_POST['delete']) && isset($_POST['agent']) && $_POST['delete'] === 'true') { | 
					
						
							| 
									
										
										
										
											2024-09-20 09:13:18 +00:00
										 |  |  |         $result = $agentObject->deleteAgent($agent); | 
					
						
							|  |  |  |         if ($result === true) { | 
					
						
							|  |  |  |             $_SESSION['notice'] = "Agent id \"{$_REQUEST['agent']}\" deleted."; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $_SESSION['error'] = "Deleting the agent failed. Error: $result"; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-26 18:19:21 +00:00
										 |  |  |     // deleting a platform
 | 
					
						
							|  |  |  |     } elseif (isset($_POST['delete']) && $_POST['delete'] === 'true') { | 
					
						
							|  |  |  |         $platform = $_POST['platform']; | 
					
						
							| 
									
										
										
										
											2024-10-31 09:45:59 +00:00
										 |  |  |         $result = $platformObject->deletePlatform($platform); | 
					
						
							|  |  |  |         if ($result === true) { | 
					
						
							|  |  |  |             $_SESSION['notice'] = "Platform \"{$platformObject['name']}\" added."; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $_SESSION['error'] = "Adding the platform failed. Error: $result"; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-08-26 18:19:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-31 09:25:37 +00:00
										 |  |  |     // an update to an existing host
 | 
					
						
							|  |  |  |     } elseif (isset($_POST['host'])) { | 
					
						
							|  |  |  |         $updatedHost = [ | 
					
						
							|  |  |  |             'id'        => $host, | 
					
						
							|  |  |  |             'address'   => $address, | 
					
						
							|  |  |  |             'port'      => $port, | 
					
						
							|  |  |  |             'name'      => $name, | 
					
						
							|  |  |  |         ]; | 
					
						
							|  |  |  |         $result = $hostObject->editHost($platform_id, $updatedHost); | 
					
						
							|  |  |  |         if ($result === true) { | 
					
						
							| 
									
										
										
										
											2024-10-31 13:02:28 +00:00
										 |  |  |             $_SESSION['notice'] = "Host \"{$_REQUEST['address']}:{$_REQUEST['port']}\" edited."; | 
					
						
							| 
									
										
										
										
											2024-10-31 09:25:37 +00:00
										 |  |  |         } else { | 
					
						
							|  |  |  |             $_SESSION['error'] = "Editing the host failed. Error: $result"; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-22 09:26:19 +00:00
										 |  |  |     // an update to an existing agent
 | 
					
						
							|  |  |  |     } elseif (isset($_POST['agent'])) { | 
					
						
							|  |  |  |         $updatedAgent = [ | 
					
						
							| 
									
										
										
										
											2024-10-03 08:28:23 +00:00
										 |  |  |             'id'            => $agent, | 
					
						
							| 
									
										
										
										
											2024-10-04 08:36:45 +00:00
										 |  |  |             'agent_type_id' => $type, | 
					
						
							|  |  |  |             'url'           => $url, | 
					
						
							|  |  |  |             'secret_key'	=> $secret_key, | 
					
						
							| 
									
										
										
										
											2024-10-24 09:11:35 +00:00
										 |  |  |             'check_period'  => $check_period, | 
					
						
							| 
									
										
										
										
											2024-09-22 09:26:19 +00:00
										 |  |  |         ]; | 
					
						
							|  |  |  |         $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"; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-26 18:19:21 +00:00
										 |  |  |     // an update to an existing platform
 | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |         $platform = $_POST['platform']; | 
					
						
							| 
									
										
										
										
											2024-09-04 09:53:02 +00:00
										 |  |  |         $updatedPlatform = [ | 
					
						
							| 
									
										
										
										
											2024-10-04 08:36:45 +00:00
										 |  |  |             'name'		    => $name, | 
					
						
							| 
									
										
										
										
											2024-09-04 09:53:02 +00:00
										 |  |  |             'jitsi_url'		=> $_POST['jitsi_url'], | 
					
						
							|  |  |  |             'jilo_database'	=> $_POST['jilo_database'], | 
					
						
							|  |  |  |         ]; | 
					
						
							| 
									
										
										
										
											2024-10-31 09:39:03 +00:00
										 |  |  |         $result = $platformObject->editPlatform($platform, $updatedPlatform); | 
					
						
							|  |  |  |         if ($result === true) { | 
					
						
							|  |  |  |             $_SESSION['notice'] = "Platform \"{$_REQUEST['name']}\" edited."; | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $_SESSION['error'] = "Editing the platform failed. Error: $result"; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-08-26 18:19:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-06 16:03:08 +00:00
										 |  |  | // FIXME - if this is not needed for editing the flat file, remove it
 | 
					
						
							|  |  |  | //    // check if file is writable
 | 
					
						
							|  |  |  | //    if (!is_writable($config_file)) {
 | 
					
						
							|  |  |  | //        $_SESSION['error'] = getError('Configuration file is not writable.');
 | 
					
						
							|  |  |  | //        header("Location: $app_root?platform=$platform_id&page=config");
 | 
					
						
							|  |  |  | //        exit();
 | 
					
						
							|  |  |  | //    }
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //    // try to update the config file
 | 
					
						
							|  |  |  | //    if (file_put_contents($config_file, $updatedContent) !== false) {
 | 
					
						
							|  |  |  | //        // update successful
 | 
					
						
							|  |  |  | //        $_SESSION['notice'] = "Configuration for {$_POST['name']} is updated.";
 | 
					
						
							|  |  |  | //    } else {
 | 
					
						
							|  |  |  | //        // unsuccessful
 | 
					
						
							|  |  |  | //        $error = error_get_last();
 | 
					
						
							|  |  |  | //        $_SESSION['error'] = getError('Error updating the config: ' . ($error['message'] ?? 'unknown error'));
 | 
					
						
							|  |  |  | //    }
 | 
					
						
							| 
									
										
										
										
											2024-08-19 10:42:16 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  | // FIXME the new file is not loaded on first page load
 | 
					
						
							|  |  |  |     unset($config); | 
					
						
							| 
									
										
										
										
											2024-10-30 20:00:39 +00:00
										 |  |  | //    header("Location: $app_root?platform=$platform_id&page=config");
 | 
					
						
							|  |  |  |     header("Location: $app_root?page=config&item=$item"); | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  |     exit(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // no form submitted, show the templates
 | 
					
						
							|  |  |  | } else { | 
					
						
							| 
									
										
										
										
											2024-08-31 16:50:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-28 09:59:13 +00:00
										 |  |  |     switch ($item) { | 
					
						
							| 
									
										
										
										
											2024-10-30 15:21:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-30 14:54:09 +00:00
										 |  |  |         case 'platform': | 
					
						
							| 
									
										
										
										
											2024-10-30 15:10:35 +00:00
										 |  |  |             if (isset($action) && $action === 'add') { | 
					
						
							|  |  |  |                 include '../app/templates/config-platform-add.php'; | 
					
						
							|  |  |  |             } elseif (isset($action) && $action === 'edit') { | 
					
						
							| 
									
										
										
										
											2024-10-30 14:54:09 +00:00
										 |  |  |                 include '../app/templates/config-platform-edit.php'; | 
					
						
							| 
									
										
										
										
											2024-10-30 15:03:42 +00:00
										 |  |  |             } elseif (isset($action) && $action === 'delete') { | 
					
						
							|  |  |  |                 include '../app/templates/config-platform-delete.php'; | 
					
						
							| 
									
										
										
										
											2024-10-30 14:54:09 +00:00
										 |  |  |             } else { | 
					
						
							|  |  |  |                 if ($userObject->hasRight($user_id, 'view config file')) { | 
					
						
							|  |  |  |                     include '../app/templates/config-platform.php'; | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     include '../app/templates/error-unauthorized.php'; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  |             break; | 
					
						
							| 
									
										
										
										
											2024-10-30 15:21:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-30 14:54:09 +00:00
										 |  |  |         case 'host': | 
					
						
							| 
									
										
										
										
											2024-10-30 15:21:36 +00:00
										 |  |  |             if (isset($action) && $action === 'add') { | 
					
						
							|  |  |  |                 include '../app/templates/config-host-add.php'; | 
					
						
							|  |  |  |             } elseif (isset($action) && $action === 'edit') { | 
					
						
							| 
									
										
										
										
											2024-10-31 09:08:53 +00:00
										 |  |  |                 $hostDetails = $hostObject->getHostDetails($platform_id, $agent); | 
					
						
							| 
									
										
										
										
											2024-10-30 15:21:36 +00:00
										 |  |  |                 include '../app/templates/config-host-edit.php'; | 
					
						
							|  |  |  |             } elseif (isset($action) && $action === 'delete') { | 
					
						
							| 
									
										
										
										
											2024-10-30 20:14:54 +00:00
										 |  |  |                 $hostDetails = $hostObject->getHostDetails($platform_id, $agent); | 
					
						
							| 
									
										
										
										
											2024-10-30 15:21:36 +00:00
										 |  |  |                 include '../app/templates/config-host-delete.php'; | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 if ($userObject->hasRight($user_id, 'view config file')) { | 
					
						
							| 
									
										
										
										
											2024-10-30 17:11:23 +00:00
										 |  |  |                     $hostDetails = $hostObject->getHostDetails(); | 
					
						
							| 
									
										
										
										
											2024-10-30 15:21:36 +00:00
										 |  |  |                     include '../app/templates/config-host.php'; | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     include '../app/templates/error-unauthorized.php'; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2024-08-26 18:19:21 +00:00
										 |  |  |             break; | 
					
						
							| 
									
										
										
										
											2024-10-30 15:21:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-30 14:54:09 +00:00
										 |  |  |         case 'endpoint': | 
					
						
							| 
									
										
										
										
											2024-10-30 15:21:36 +00:00
										 |  |  |             // TODO
 | 
					
						
							| 
									
										
										
										
											2024-10-29 11:15:14 +00:00
										 |  |  |             break; | 
					
						
							| 
									
										
										
										
											2024-10-30 15:21:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-29 11:15:14 +00:00
										 |  |  |         case 'config_file': | 
					
						
							| 
									
										
										
										
											2024-10-29 11:38:22 +00:00
										 |  |  |             if (isset($action) && $action === 'edit') { | 
					
						
							|  |  |  |                 include '../app/templates/config-configfile-edit.php'; | 
					
						
							| 
									
										
										
										
											2024-10-29 11:15:14 +00:00
										 |  |  |             } else { | 
					
						
							| 
									
										
										
										
											2024-10-29 11:38:22 +00:00
										 |  |  |                 if ($userObject->hasRight($user_id, 'view config file')) { | 
					
						
							|  |  |  |                     include '../app/templates/config-configfile.php'; | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     include '../app/templates/error-unauthorized.php'; | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2024-10-29 11:15:14 +00:00
										 |  |  |             } | 
					
						
							|  |  |  |             break; | 
					
						
							| 
									
										
										
										
											2024-08-28 09:59:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  |         default: | 
					
						
							| 
									
										
										
										
											2024-10-31 13:02:28 +00:00
										 |  |  |         // the default config page is the platforms page
 | 
					
						
							|  |  |  |             header("Location: $app_root?page=config&item=platform"); | 
					
						
							|  |  |  |             exit(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //            switch ($action) {
 | 
					
						
							|  |  |  | //                case 'add-agent':
 | 
					
						
							|  |  |  | //                    $jilo_agent_types = $agentObject->getAgentTypes();
 | 
					
						
							|  |  |  | //                    $jilo_agents_in_platform = $agentObject->getPlatformAgentTypes($platform_id);
 | 
					
						
							|  |  |  | //                    $jilo_agent_types_in_platform = array_column($jilo_agents_in_platform, 'agent_type_id');
 | 
					
						
							|  |  |  | //                    include '../app/templates/config-add-agent.php';
 | 
					
						
							|  |  |  | //                    break;
 | 
					
						
							|  |  |  | //                case 'edit':
 | 
					
						
							|  |  |  | //                    if (isset($_GET['agent'])) {
 | 
					
						
							|  |  |  | //                        $agentDetails = $agentObject->getAgentDetails($platform_id, $agent);
 | 
					
						
							|  |  |  | //                        $jilo_agent_types = $agentObject->getAgentTypes();
 | 
					
						
							|  |  |  | //                        include '../app/templates/config-edit-agent.php';
 | 
					
						
							|  |  |  | //                    }
 | 
					
						
							|  |  |  | //                    break;
 | 
					
						
							|  |  |  | //                case 'delete':
 | 
					
						
							|  |  |  | //                    if (isset($_GET['agent'])) {
 | 
					
						
							|  |  |  | //                        $agentDetails = $agentObject->getAgentDetails($platform_id, $agent);
 | 
					
						
							|  |  |  | //                        include '../app/templates/config-delete-agent.php';
 | 
					
						
							|  |  |  | //                    }
 | 
					
						
							|  |  |  | //                    break;
 | 
					
						
							|  |  |  | //            }
 | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-08-18 19:12:45 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2024-08-12 11:12:24 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ?>
 |