The Magician

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.

скрипт_загрузки_подписей_cgp.1789398517.txt.gz · Last modified: by jp