Files
urbackup/front/server_test.ajax.php
T

69 lines
1.8 KiB
PHP
Raw Normal View History

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
}