This is an old revision of the document!
Скрипт загрузки подписей CGP
Задачу установки подписи в формате HTML встроенным функционалом CGP не решить.
Вендор предоставляет скрипт загрузки подписи по запросу. Вопросам использования данного скрипта посвящен этот материал.
Зависимости
Прежде, чем успешно использовать Python-скрипт - потребуется установить необходимые зависимости, которые описаны в файле requirements.txt.
CGPCLI et_xmlfile numpy openpyxl pandas python-dateutil pytz six tzdata
Пример установки:
pip3.11 install openpyxl
Подготовка к запуску скрипта
Все основные настройки задаются в файле: signature.conf. Вот его примерное содержимое:
# файл конфигурации для утилиты signature.py
[info]
# адрес сервера (по умолчанию server = 127.0.0.1)
server = cgp.domain.ru
# логин администратора
user = admin@postmaster.local
# Пароль администратора
pass = Passw0rd
# имя домена (по умолчанию @testdomain. если домен основной, вводить не обязательно)
domain_name = @domain.ru
# название файла с изображением в кодировке base64
img = img.txt
# название файла со списком пользователей, которым необходимо добавить подпись
xlsx = userlist.xlsx
# название файла с простой подписью
signature = simple_signature.txt
# название файла с html подписью
signature_html = html_signature.html
[attr]
# словарь соответствия атрибутов (слева - используемое название для вставки в файлы-подписи; справа - название атрибутов в CGP)
attrs_dict = {
"__name__":"RealName",
"__company__":"o",
"__department__":"ou",
"__l__":"l",
"__mail__":"mail",
"__st__":"st",
"__telnum__":"telephoneNumber",
"__title__":"title",
"__web__":"defaultWebPage"
}
Примечание 1: логин для пользователя postmaster необходимо задавать именно так: ЧТО-НИБУДЬ@postmaster.local. Во время сеанса по протоколу PWD данное имя будет транслировано в postmaster.
Примечание 2: не забыть @ перед именем домена.
Примечание 3: userlist.xlsx - это именно полноценный Excel-файл, содержащий соответствующую разметку (не просто CSV).
Содержимое подписи
Изображение (логотип)
Изображение или логотип задается в файле img.txt в base64. Пример содержимого:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABQCAYAAABcbTqwAAAACXBIWXM ... NMMJVKAAAAAElFTkSuQmCC
В Linux мы можем создать такое изображение следующим образом:
PNG
echo -n 'data:image/png;base64,' > img.txt base64 -w 0 logo.png >> img.txt
JPG
echo -n 'data:image/jpeg;base64,' > img.txt base64 -w 0 logo.jpg >> img.txt
Текстовая подпись
Текстовая подпись содержится в файле simple_signature.txt. Пример:
Test signature
Примечание: для загрузки русского текста из этого файла нужно найти решение, т.к., если просто указать русский текст - получим ошибку:
CGP set account prefs for the user ivanov Failed
HTML-подпись
В качестве HTML-подписи скрипт установит ровно тот код, который существует в файле: html_signature.html. Пример условного шаблона HTML-подписи и файла html_signature.html.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<table cellpadding="0" cellspacing="0" border="0" style="font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.4; color: #222222;">
<tr>
<td style="padding: 0 18px 0 0; vertical-align: top;">
<img src="__image__" alt="Рога и копыта" style="display: block; border: 0; max-width: 200px; height: auto;">
</td>
<td style="padding: 0; vertical-align: top;">
<div style="font-size: 16px; font-weight: bold;">Иванов П.И.</div>
<div>Системный администратор</div>
<div>ИТ</div>
<div style="margin-top: 6px; font-weight: bold;">Рога и копыта</div>
<div>Москва</div>
<div style="margin-top: 8px;">
Тел.: 89026556656<br>
Вн. номер: 3322<br>
E-mail: <a href="mailto:ivanov@domain.ru" style="color: #222222; text-decoration: none;">ivanov@domain.ru</a><br>
Web: <a href="http://test.domain.ru" style="color: #222222; text-decoration: none;">http://test.domain.ru</a>
</div>
</td>
</tr>
</table>
</body>
</html>
Файл списка пользователей
Вот так выглядит содержимое Excel-файла с единственным пользователем, подпись которому требуется загрузить.
К имени данного пользователя при обработке будет добавлена доменная часть, указанная в файле конфигурации и содержащаяся в domain_name.
Атрибуты из конфигурации
Если нам требуется заполнить данные в автоматическом режиме, то в шаблон (как текстовый, так и HTML) можно подставить описанные в конфигурации названия, к примеру:
__name__, __title__
и т.д., которые будут замменены данными пользователя из CGP (соответствующими заданным атрибутам).
Запуск скрипта и отладка
python3.11 signature.py
Скрипт логгирует свои действия в папке: log_files.

