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//.
Иванов П.И.
Системный администратор
ИТ
Рога и копыта
Москва
==== Файл списка пользователей ====
Вот так выглядит содержимое //Excel//-файла с единственным пользователем, подпись которому требуется загрузить.
;#;
{{:cgp:userlist_cgp_excel.jpg|}}
;#;
К имени данного пользователя при обработке будет добавлена доменная часть, указанная в файле конфигурации и содержащаяся в //domain_name//.
==== Атрибуты из конфигурации ====
Если нам требуется заполнить данные в автоматическом режиме, то в шаблон (как текстовый, так и //HTML//) можно подставить описанные в конфигурации названия, к примеру: __name__, __title__
и т.д., которые будут замменены данными пользователя из //CGP// (соответствующими заданным атрибутам в конфиге //signature.conf//).
==== Запуск скрипта и отладка ====
python3.11 signature.py
Скрипт логгирует свои действия в папке: //log_files//.
{{tag>CommuniGate Mail Python HTML}}