Pritunl Rest Api с использованием переполнения стека

Кому-нибудь удалось получить доступ к api pritunl с помощью php?
Руководство предоставлено из исходного кода https://github.com/pritunl/pritunl/blob/master/tools/test_pritunl.py есть только примеры Python.
Если я пытаюсь сделать чтение данных, это работает нормально. Но когда я пытаюсь обновить или создать новую сущность, я получаю HTTP-запрос неудачно! HTTP / 1.1 401 НЕ РАЗРЕШЕНО

Мой код:

public static function auth_request($method, $path, $data="")
$BASE_URL   = env('PRITUNL_BASE_URL');
$API_TOKEN  = env('PRITUNL_API_TOKEN');
$API_SECRET = env('PRITUNL_API_SECRET');
$auth_timestamp = strval(time());
$auth_nonce = uniqid();
$auth_array = array(
$API_TOKEN,
$auth_timestamp,
$auth_nonce,
strtoupper($method),
$path,
);
if ($data) {
array_push($auth_array, $data);
}
$auth_string = join("&", $auth_array);
$auth_signature = base64_encode(hash_hmac(
"sha256", $auth_string, $API_SECRET, true));
$options = array(
"http" => array(
"header"  => array(
'Content-Type: application/json',
'Auth-Token: '.$API_TOKEN,
'Auth-Timestamp: '.$auth_timestamp,
'Auth-Nonce: '.$auth_nonce,
'Auth-Signature: '.$auth_signature
),
"method"  => $method,
"content" => $data,
),
"ssl" => array(
"allow_self_signed" => true,
"verify_peer_name" => false,
),
);
$context = stream_context_create($options);
return file_get_contents($BASE_URL.$path, false, $context);

0

Решение

Решено удаление $ data из $ auth_array.
Это мой новый код:

public static function auth_request($method, $path, $data="") {
$BASE_URL   = env('PRITUNL_BASE_URL');
$API_TOKEN  = env('PRITUNL_API_TOKEN');
$API_SECRET = env('PRITUNL_API_SECRET');
$auth_timestamp = strval(time());
$auth_nonce = uniqid();
$auth_array = array(
$API_TOKEN,
$auth_timestamp,
$auth_nonce,
strtoupper($method),
$path,
);

$auth_string = join("&", $auth_array);
$auth_signature = base64_encode(hash_hmac(
"sha256", $auth_string, $API_SECRET, true));
$options = array(
"http" => array(
"header"  => array(
'Content-Type: application/json',
'Auth-Token: '.$API_TOKEN,
'Auth-Timestamp: '.$auth_timestamp,
'Auth-Nonce: '.$auth_nonce,
'Auth-Signature: '.$auth_signature
),
"method"  => $method,
"content" => $data,
),
"ssl" => array(
"allow_self_signed" => true,
"verify_peer_name" => false,
),
);
$context = stream_context_create($options);
return file_get_contents($BASE_URL.$path, false, $context);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]