2026-05-20 09:20:27 +02:00
|
|
|
<?php
|
2026-05-21 10:54:04 +02:00
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
2026-05-20 09:20:27 +02:00
|
|
|
/**
|
2026-08-07 14:27:33 +02:00
|
|
|
* AJAX endpoint for testing UrBackup API.
|
|
|
|
|
*
|
|
|
|
|
* This endpoint updates the server monitoring fields (last_api_status,
|
|
|
|
|
* last_api_message, last_api_check), so it requires UPDATE right and
|
|
|
|
|
* only accepts POST requests (GET requests must not trigger state changes).
|
2026-05-20 09:20:27 +02:00
|
|
|
*/
|
|
|
|
|
|
2026-08-07 14:27:33 +02:00
|
|
|
use GlpiPlugin\Urbackup\Profile;
|
|
|
|
|
use GlpiPlugin\Urbackup\Server;
|
|
|
|
|
use GlpiPlugin\Urbackup\UrbackupApiClient;
|
|
|
|
|
|
|
|
|
|
if (!defined('GLPI_ROOT')) {
|
|
|
|
|
define('GLPI_ROOT', dirname(__DIR__, 4));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
include_once GLPI_ROOT . '/inc/includes.php';
|
2026-05-20 09:20:27 +02:00
|
|
|
|
|
|
|
|
header("Content-Type: application/json; charset=UTF-8");
|
|
|
|
|
Html::header_nocache();
|
|
|
|
|
|
|
|
|
|
Session::checkLoginUser();
|
|
|
|
|
|
2026-08-07 14:27:33 +02:00
|
|
|
if (($_SERVER['REQUEST_METHOD'] ?? '') !== 'POST') {
|
|
|
|
|
http_response_code(405);
|
|
|
|
|
echo json_encode(['success' => false, 'message' => __('Method not allowed', 'urbackup')]);
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!Profile::canCurrentUser(UPDATE)) {
|
|
|
|
|
http_response_code(403);
|
2026-05-21 11:08:15 +02:00
|
|
|
echo json_encode(['success' => false, 'message' => __('No permission', 'urbackup')]);
|
2026-05-20 09:20:27 +02:00
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
2026-08-07 14:27:33 +02:00
|
|
|
$server_id = (int) ($_POST['id'] ?? 0);
|
2026-05-20 09:20:27 +02:00
|
|
|
|
|
|
|
|
if ($server_id <= 0) {
|
2026-05-21 11:08:15 +02:00
|
|
|
echo json_encode(['success' => false, 'message' => __('Invalid server ID', 'urbackup')]);
|
2026-05-20 09:20:27 +02:00
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
2026-08-07 14:27:33 +02:00
|
|
|
$server = new Server();
|
2026-05-20 09:20:27 +02:00
|
|
|
|
|
|
|
|
if (!$server->getFromDB($server_id)) {
|
2026-05-21 11:08:15 +02:00
|
|
|
echo json_encode(['success' => false, 'message' => __('Server not found', 'urbackup')]);
|
2026-05-20 09:20:27 +02:00
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
2026-08-07 14:27:33 +02:00
|
|
|
$client = new UrbackupApiClient($server);
|
2026-05-20 09:20:27 +02:00
|
|
|
$result = $client->testConnection();
|
|
|
|
|
|
|
|
|
|
$server->update([
|
|
|
|
|
'id' => $server_id,
|
|
|
|
|
'last_api_status' => $result['success'] ? 1 : 0,
|
|
|
|
|
'last_api_message' => $result['message'],
|
|
|
|
|
'last_api_check' => date('Y-m-d H:i:s'),
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
echo json_encode($result);
|
|
|
|
|
} catch (Throwable $e) {
|
|
|
|
|
echo json_encode(['success' => false, 'message' => $e->getMessage()]);
|
2026-08-07 14:27:33 +02:00
|
|
|
}
|