Я пытаюсь отправить список пользователей в Xerox для целей сетевого учета.
Я успешно делаю это с двумя моделями Xerox (XEROX WorkCentre 7556 и XEROX WorkCentre 7830), следуя sudo-коду в PHP:
function SendUsersToXerox($ip,$users)
{
$url="{$ip}/acct/set_auth";
$auth='account:jbaserve';
$post="+aaav1.0\n+purge\n";
foreach ($users as $u)
{
$post.="+u\"{$u->login}\"\"{$u->code}\"\n";
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'EQ Device Control Engine');
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_USERPWD, "$auth");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/xrx-acct-data']);
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// echo "HTTP CODE: {$httpcode}<br/>";
// echo $data;
}
Этот код прекрасно работает на вышеназванных ксероксах, но не работает на C70 с ошибкой 401 и следующим сообщением:
Invalid accounting authentication version
На устройстве включен сетевой учет, и я могу собирать все задания с принтера по URL-адресу acct / get_acct.
Если я передаю неверные данные, я получаю другое сообщение об ошибке:
HTTP Return 400
The Request had invalid syntax
Я нигде не могу найти никаких ссылок на JBA или Network Accounting, и не уверен, как узнать, изменился ли формат на set_auth или нужно установить разницу в версии.
Я знаю, что есть различия в выходных данных get_acct, которые указывают на другую версию учета.
Ответ очень простой.
Все правильно, кроме следующего:
$post="+aaav1.0+\n+purge\n";
Плюс (+) после v1.0 позволяет пользователям загружать для учета.
Других решений пока нет …