Проверять доступ на внешнем сервере

Система видеонаблюдения
Ответить
Reanimator
Сообщения: 12
Зарегистрирован: 11 авг 2020, 10:44

Проверять доступ на внешнем сервере

Сообщение Reanimator »

Здравствуйте!

Тестируем IPVideoRecord на распознавание номеров. Хотим интегрировать с БД 1С.

Из документации не совсем понятно в каком виде вписывать адрес внешнего сервера в соответствующее поле. В виде просто IP или FQDN или же в виде запроса http://IP_сервера:порт/some-path/ ?

В нашем случае БД 1С на вебсервере отвечает на запросы по URL http://IP_сервера:порт/some-path/

Спасибо!
SpSupport
Администратор
Сообщения: 683
Зарегистрирован: 08 окт 2014, 13:46

Re: Проверять доступ на внешнем сервере

Сообщение SpSupport »

Добрый день!

Можно указать просто адрес без протокола, будет добавлено http://. То есть так: IP_сервера:порт/some-path
По поводу пути после адреса, можно указать любой путь, к нему просто добавится строка вида ?plate=H877TA18&camid=Nzli...NDU3&direction=1. И будет отправлен GET запрос.
Reanimator
Сообщения: 12
Зарегистрирован: 11 авг 2020, 10:44

Re: Проверять доступ на внешнем сервере

Сообщение Reanimator »

Спасибо!
Не смог найти в логах (сервер на Debian 10) никаких записей по запросам/ответам от внешнего сервера 1С.
Подобные логи ведутся на сервере?
Как понять, что после распознавания номера запрос на разрешение проезда производится на внешнем сервере?
Нужно для отладки
SpSupport
Администратор
Сообщения: 683
Зарегистрирован: 08 окт 2014, 13:46

Re: Проверять доступ на внешнем сервере

Сообщение SpSupport »

Посмотрите в логе медиасервера. Сделайте поиск по названию функции: "NumberPlate::HttpCheckPlaneNumber"
Reanimator
Сообщения: 12
Зарегистрирован: 11 авг 2020, 10:44

Re: Проверять доступ на внешнем сервере

Сообщение Reanimator »

К сожалению, в логе нет ни единой записи, содержащей такой набор символов

Как же понять (не имея на этапе тестирования ни одного исполняющего устройства), что программа принимает ответ от нашей 1С корректно?
SpSupport
Администратор
Сообщения: 683
Зарегистрирован: 08 окт 2014, 13:46

Re: Проверять доступ на внешнем сервере

Сообщение SpSupport »

Да, Вы правы - нашли ошибку, из-за которой запрос не передаётся в лог. Если хотите его посмотреть - то либо сделайте это при помощи сетевого снифера (wireshark, например), либо посмотрите логи веб-сервера 1С - если на него приходят запросы, то он их зафиксирует. Ошибку исправим в следующем релизе, и можно будет смотреть в логах.

Если хотите, можем удалённо подключиться и попробовать отследить запрос.
Reanimator
Сообщения: 12
Зарегистрирован: 11 авг 2020, 10:44

Re: Проверять доступ на внешнем сервере

Сообщение Reanimator »

То, что запрос от ПО приходит, видим в логах веб-сервера. Ответы логируем средствами 1С. Все, как будто, корректно.
Однако, в самом ПО, в "Текущие номера" и "Общий отчет" по-прежнему распознанные номера (все подряд) идут как "Не в списке". Даже те из них, на которые был получен ответ от внешнего сервера:
listtype=2
isallowaccess=1

Смотрите вложенный скриншот.

Поэтому и возникает вопрос - как понять, что ПО верно идентифицирует ответ внешнего сервера и, условно, поднимает шлагбаум?
Вложения
123.png
SpSupport
Администратор
Сообщения: 683
Зарегистрирован: 08 окт 2014, 13:46

Re: Проверять доступ на внешнем сервере

Сообщение SpSupport »

Проверьте следующие моменты:
1. Возможно, ответы приходят в несколько неверном формате? Попробуйте в браузере выполнить запрос и покажите, какой выводится ответ от сервера.
2. Покажите, созданы ли у вас какие-то списки доступа и типы доступа (типы есть только в 3-й версии ПО)?
Reanimator
Сообщения: 12
Зарегистрирован: 11 авг 2020, 10:44

Re: Проверять доступ на внешнем сервере

Сообщение Reanimator »

1. Ответ в IE от 1С на скрине.
2. Списки в самом ПО не формировал
Вложения
1233.png
SpSupport
Администратор
Сообщения: 683
Зарегистрирован: 08 окт 2014, 13:46

Re: Проверять доступ на внешнем сервере

Сообщение SpSupport »

Какая у Вас версия ПО?
Reanimator
Сообщения: 12
Зарегистрирован: 11 авг 2020, 10:44

Re: Проверять доступ на внешнем сервере

Сообщение Reanimator »

Версия сервера 3.3.4.491 (на Debian 10)
Клиент на Windows 10 - версия 2.3.17.467

\\Честно говоря, не знаю, почему клиент устаревший. Наверное, поставил по невнимательности. Это может влиять?
SpSupport
Администратор
Сообщения: 683
Зарегистрирован: 08 окт 2014, 13:46

Re: Проверять доступ на внешнем сервере

Сообщение SpSupport »

Создайте в программе тип доступа с ID=2 (у вас такой возвращается в ответе listtype). Но для этого сперва обновите клиент, во второй версии не было типов доступа.
Вложения
Screenshot_2.png
Reanimator
Сообщения: 12
Зарегистрирован: 11 авг 2020, 10:44

Re: Проверять доступ на внешнем сервере

Сообщение Reanimator »

Обновился.
Сделал три типа доступа.
Теперь колонка "Список" просто пустая. Хотя машины проезжали из, как минимум, двух типов
Вложения
321.png
322.png
SpSupport
Администратор
Сообщения: 683
Зарегистрирован: 08 окт 2014, 13:46

Re: Проверять доступ на внешнем сервере

Сообщение SpSupport »

Собрали отладочную версию. Прошу Вас сделать так:
1. Скачать и обновить IPVR: https://sprecord.ru/files/downloads/vid ... .2.495.exe
2. Включить отладочные логи в настройках (см. скрин).
3. Прогнать несколько машин, чтобы зафиксировать запросы и ответы сервера.
4. Выгрузить логи и прислать нам (см. скрин) - support@sprecord.ru
Вложения
Screenshot_1.png
Reanimator
Сообщения: 12
Зарегистрирован: 11 авг 2020, 10:44

Re: Проверять доступ на внешнем сервере

Сообщение Reanimator »

Сделал. Логи отправил. Спасибо
SpSupport
Администратор
Сообщения: 683
Зарегистрирован: 08 окт 2014, 13:46

Re: Проверять доступ на внешнем сервере

Сообщение SpSupport »

Из-за того, что в ответе ожидается простой текст, разделенный переносом строки, неверно парсится ответ. И в поле type_id=<br>listtype=0<br>isallowaccess=0 записывается вся строка.

Нужно отправить в ответе просто текст с переводом строки: listtype=0\nisallowaccess=0
Reanimator
Сообщения: 12
Зарегистрирован: 11 авг 2020, 10:44

Re: Проверять доступ на внешнем сервере

Сообщение Reanimator »

Внесли изменения в конфигурацию 1С. Сделал новые логи и выслал почтой. Посмотрите пожалуйста.
SpSupport
Администратор
Сообщения: 683
Зарегистрирован: 08 окт 2014, 13:46

Re: Проверять доступ на внешнем сервере

Сообщение SpSupport »

Вы передаёте символ \n между параметрами, и он не преобразуется в перевод строки, а передаётся как есть. Смысл в том, что нужно передать 2 строки, разделённые переводом. Не знаю, как это сделать на языке Вашего сервера, который посылает ответ, но в других языках программирования есть спецсимволы, которые его формируют. Если мы на языке С создадим строку "listtype=0\nisallowaccess=0", то компилятор её преобразует в
"listtype=0
isallowaccess=0"
То есть заменит \n на перевод строки. Вам надо найти что-то подобное, чтобы в ответ нашему серверу уходили строки, разделённые переводом.
Reanimator
Сообщения: 12
Зарегистрирован: 11 авг 2020, 10:44

Re: Проверять доступ на внешнем сервере

Сообщение Reanimator »

Спасибо за помощь - наконец-то получилось. Теперь ПО корректно проверяет ГРЗ в БД 1С.

Однако, есть еще вопрос по этой теме.
По логам 1С обнаружил, что с момента распознавания номера в ПО до запроса к 1С проходит 4-5 секунд. Оба сервера синхронизируют время в одном и том же источнике и расхождение в локальном времени исключены.
Ранее, когда на сервере было 2 камеры, грешил на загрузку ЦПУ. Сейчас для ВМ, в которой крутится сервер, выделено очень много ресурса по ЦПУ и ОЗУ, для теста заведена только одна камера.
load average: 1,16, 1,22, 1,29

Это так и задумано? Или же есть смысл искать причину такой задержки в запросе?
SpSupport
Администратор
Сообщения: 683
Зарегистрирован: 08 окт 2014, 13:46

Re: Проверять доступ на внешнем сервере

Сообщение SpSupport »

Для более надёжного распознавания программа ждёт получения нескольких кадров с одним номером, затем производит слияние (т.к. на разных кадрах некоторые символы в номере могут отличаться из-за ошибок). После слияния получается некий наиболее вероятный результат, который и отправляется в запросе на Ваш сервер 1С. А в базу данных программы IPVR при этом фиксируется время прихода самого первого кадра с данным номером. Думаю, что задержка связана именно с этим, то есть можно сказать, что так задумано. Чем меньше частота кадров на камере и чем больше настроено кадров для фиксации (см. скриншот), тем больше может быть время задержки. Соответственно, чтобы его уменьшить, можно попробовать увеличить FPS камеры или уменьшить кол-во кадров в условии занесения номера в БД в настройках.
Вложения
Screenshot_4.png
Ответить