pult

Форк
0

README.md

pult - реализация на Python сервиса регистрации ошибок для 1С:Предприятие 8

Сервис осуществляет регистрацию отчетов об ошибках, отправляемых 1С:Предприятие. См. https://its.1c.ru/db/instrpoly3#content:1190:hdoc, https://its.1c.ru/db/v8320doc#bookmark:dev:TI000002262, https://wonderland.v8.1c.ru/blog/razvitie-mekhanizma-otobrazheniya-oshibok/. Сервис реализован как Python скрипт для mod_wsgi. Скрипт использует SQLite3 для хранения информации об ошибках. Полученные отчеты хранятся в zip файлах без изменений. При регистрации отчетов об ошибках в автоматическим режиме ведется учет уникальных ошибок (по тексту ошибки).

При регистрации новой ошибки есть возможность отправить email списку получателей. Через веб интерфейс можно просмотреть зарегистрированные ошибки и соответствующие им отчеты. Для ошибок можно устанавливать метки. Пример использования меток - если метка выставлена, значит ошибка обработана/зарегистрирована.

Если по ранее зарегистрированной пользователем ошибке будет повторно отправлен отчет с этого же компьютера, то изменится значение в поле "Число отчетов" в форме ошибки, пользовательское описание ошибки будет добавлено к предыдущему описанию. Сам отчет будет хранится в единственном экземпляре. Если в отчете не передана информации о компьютере или же в отчет был приложен файл, то отчет будет зарегистрирован и сохранен.

Описание структуры проекта

init.py - создание SQLite базы

База создается в папке, заданной в переменной

DATA_PATH
файла
prefs.py
. Для получения доступа из веб сервера к базе необходимо задать переменные
APACHE_USER
и
APACHE_GROUP
в файле
prefs.py
значениями, которые использует веб сервер. Папке, указанной в
DATA_PATH
необходимо установить владельца и группу теми же значениями, которые использует веб сервер.

prefs.py - настройки сервиса

В переменной

CONFIGS
задаются имена конфигурации и их версий, по которым принимаются отчеты об ошибках. Переменная имеет тип словарь (dict). Ключ - имя конфигурации, значение - список, состящий из 2-х списков.

  • 1-й список - список допустимых версий. Если список пустой, то отчеты не принимаются. Пустая строка - принимаются любые версии. Неполное задание версии допускается.
  • 2-й список - список email, которым будет отправлено сообщение о регистрации новой ошибки. Если список пустой, то почта для этой конфигурации не отправляется. После внесения изменений в файл может потребоваться перезапуск веб сервера, чтобы настройки применились.

Если переменная

ONLY_IN_CONF
равна
True
, то не регистрируются ошибки во внешних обработках и внешних отчетах.

В переменный

BLACKLIST
и
WHITELIST
задаются черные и белые списки доступа в виде IP адресов или их маски.

pult.wsgi - основной скрипт

В скрипте реализованы следующие страницы веб интерфейса

s/errorsList - просмотр списка зарегистрированных ошибок

Для того чтобы просмотреть список ошибок, по которым был отправлен отчет, необходимо перейти по ссылке http://your.domain/pult/s/errorsList (в соответствии с указанной ниже настройке сервиса). Список ошибок имеет вид таблицы, в которой:

  • N ошибки – порядковый номер ошибки.
  • Ошибки, errors – содержание ошибки.
  • Конфигурация – конфигурация, в которой возникла ошибка.
  • Расширения, extentions – установленные расширения.
  • Метка – текстовая информация об ошибке с дополнительной информацией о пользователе и времени последнего изменения метки.

Доступен фильтр на конфигурации.

При нажатии на номер ошибки в табличной части открывается страница reports/N со списком отчетов, на ошибку с номером N.

errorsList - просмотр списка зарегистрированных ошибок

Страница идентична предыдущей, но поле Метка доступно только для просмотра и отсутствует фильтр на конфигурацию.

s/delete/N - просмотр

Удаление ошибки с номером N.

s/reports/N - просмотр

Страница содержит информацию об ошибке и список отчетов по ошибке. Информация об ошибке отображается в таком же объеме как на странице s/errorsList.

Список отчетов содержит следующие колонки: дата, пользователь, IP адрес, с которого пришла ошибка, версия платформы и т.д. В поле "Число отчетов" показывается только отчетов было отправлено по ошибке с номером N с одного компьютера (дублирующиеся отчеты). Если в отчете есть вложенный файл, то в колонке с числом отчетов будет фраза – Файл/скриншот (отчеты с файлами, скриншотами и дополнительными данными, сериализованными в JSON не группируются).

При нажатии на гиперссылку в столбце «Число отчетов» откроется zip архив, в котором будет отчет об ошибке, полученный из 1С:Предприятие.

reports/N - просмотр

Страница идентична предыдущей, но поле Метка у ошибки доступно только для просмотра.

s/settings - текущие настройки сервиса

В настройках указаны содержимое переменной CONFIGS файла с настройками сервиса prefs.py, в которой задаются имена конфигурации и их версий, по которым принимаются отчеты об ошибках.

s/clear - удаление отчетов неподдерживаемых версий и конфигураций

Производится удаление ошибок и отчетов, которые не соответствуют критериям регистрации отчетов, приведенных в переменной

CONFIGS
файла
prefs.py
. Данная страница может быть использована для очистки базы при снятии конфигурации платформы 1С:Предприятия или версии конфигурации с поддержки.

Также выполняется удаление отчетов и ошибок, полученных с IP адреса, внесенного в черный список. При этом не удаляются ошибки, на которые добавлена метка.

Установка

  1. Подключить модуль mod_wsgi из пакета libapache2-mod-wsgi-py3
  2. Скопировать файлы pult.wsgi, prefs.py, init.py в папку /var/www/wsgi/pult.
  3. Внести настройки экземпляра сервиса в prefs.py
  4. Запустить init.py
  5. Зарегистрировать приложение WSGI в apache2.conf
WSGIScriptAlias /wsgi/pult /var/www/wsgi/pult/pult.wsgi

Ограничение доступа

Для некотрых разделов сервиса предусмотрена возможность ограничить доступ. Такие разделы начинаются с префикса

s/
. Чтобы ограничения доступа заработали нужно скопировать файл
auth.wsgi
в папку
/var/www/wsgi/
, перечислить в нём пользователей и их пароли, а в настройки apache добавить следующий раздел.

<Location "/wsgi/pult/s/"> AuthType Basic AuthName "Restricted area" AuthBasicProvider wsgi WSGIAuthUserScript /var/www/wsgi/auth.wsgi Require valid-user </Location>

Пример содержимого файла auth.wsgi

USERS = { "test" : "test" } def check_password(environ, user, password): if user in USERS: if password == USERS[user]: return True return False return None

Описание

реализация на Python сервиса регистрации ошибок для 1С:Предприятие 8

Языки

Python

Сообщить о нарушении

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.