Я создал кастомный captive portal для сетевой инфраструктуры клиента. Ранее он был размещен на локальном веб-сервере в каждой сети клиента. Теперь я хочу перенести его на онлайн-сервер. Однако, у меня возникли проблемы с вызовами API через api.ui.com, потому что веб-сервер больше не имеет локального доступа к сети клиента. Я не смог найти никакой документации API, которая бы показывала, как это сделать.
Вот php-функция, которую я написал, которая работает при аутентификации, но я не нашел способа авторизовать клиентов:
```php
function authorizeClient($mac) {
require '../../../config.php';
$controllerSite = "6787ae8ddc071232775e03b0"; // ID del sito corrispondente
$unifiApiUrl = "https://api.ui.com/api/v2/sites/$controllerSite/clients/authorize";
$apiKey = $controllerToken;
$ch = curl_init($unifiApiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'mac' => $mac,
'minutes' => $allowedTime
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'Content-Type: application/json',
"X-API-KEY: $apiKey"
]);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$authResponse = curl_exec($ch);
$httpCodeAuth = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "Authorization Response: $authResponse\n";
echo "HTTP Status: $httpCodeAuth\n";
if (curl_errno($ch)) {
die("Errore cURL (autorizzazione): " . curl_error($ch));
}
curl_close($ch);
$authData = json_decode($authResponse, true);
if (!isset($authData['meta']) || $authData['meta']['rc'] !== 'ok') {
die("Errore: Autorizzazione fallita. Risposta: " . $authResponse);
}
echo "Client $mac autorizzato con successo!";
}
```
У кого-нибудь есть опыт работы с этим или кто знает, как это решить?
Вот php-функция, которую я написал, которая работает при аутентификации, но я не нашел способа авторизовать клиентов:
```php
function authorizeClient($mac) {
require '../../../config.php';
$controllerSite = "6787ae8ddc071232775e03b0"; // ID del sito corrispondente
$unifiApiUrl = "https://api.ui.com/api/v2/sites/$controllerSite/clients/authorize";
$apiKey = $controllerToken;
$ch = curl_init($unifiApiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'mac' => $mac,
'minutes' => $allowedTime
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'Content-Type: application/json',
"X-API-KEY: $apiKey"
]);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$authResponse = curl_exec($ch);
$httpCodeAuth = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "Authorization Response: $authResponse\n";
echo "HTTP Status: $httpCodeAuth\n";
if (curl_errno($ch)) {
die("Errore cURL (autorizzazione): " . curl_error($ch));
}
curl_close($ch);
$authData = json_decode($authResponse, true);
if (!isset($authData['meta']) || $authData['meta']['rc'] !== 'ok') {
die("Errore: Autorizzazione fallita. Risposta: " . $authResponse);
}
echo "Client $mac autorizzato con successo!";
}
```
У кого-нибудь есть опыт работы с этим или кто знает, как это решить?
