powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Рефакторинг генератора конфигов
9 сообщений из 9, страница 1 из 1
Рефакторинг генератора конфигов
    #38738657
olexande
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста провести рефакторинг генератора конфигов (по всем докам\примерам - на веб сервис умеет ходить за своим конфигом используемая программа).
Со временем думал выложить готовое решение в паблик, но на сейчас его стыдно показывать. Хоть уже и пытаемся внедрять в реальную работу и есть положительные сдвиги.

Сама задача вкратце:
На работе (что-то типа магазина) очень плотно используется Mozilla Thunderbird. По специфике работы "простые операторы" часто переводятся с места на место. "точек много". Получается очень много рутины. Для избавления от рутины и необходима автонастройка почтовой программы. А автонастройка выполняется через необходимые конфиги.
То, что нашел в публичном доступе или не подходит, или не удалось развернуть у себя.
Потому и строю свой велосипед. Ну и обучение :)


Для куска конфига:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
   lockPref("mail.accountmanager.defaultaccount", "account1");
   lockPref("mail.accountmanager.accounts", "account1");
   lockPref("mail.account.account1.server", "server1");
   lockPref("mail.accountmanager.defaultaccount", "account1");
   lockPref("mail.account.lastKey", 2); 
   lockPref("mail.attachment.store.version", 1);
   lockPref("mail.folder.views.version", 1);

   lockPref("mail.rights.version", 1);
   lockPref("app.update.enabled", false);
   lockPref("extensions.update.enabled", false);

   lockPref("mail.server.server1.type", "pop3");


На сейчас потребовалось сделать уже 2-варианта (похожие по действию и результату, но на разные под задачи), сходу получилось не совсем хорошо...

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
                 out.println("   lockPref(\"mail.accountmanager.defaultaccount\", \"account1\");"); 
                 out.println("   lockPref(\"mail.accountmanager.accounts\", \"account1\");"); 
                 out.println("   lockPref(\"mail.account.account1.server\", \"server1\");"); 
                 out.println("   lockPref(\"mail.accountmanager.defaultaccount\", \"account1\");"); 
                 out.println("   lockPref(\"mail.account.lastKey\", 2); "); 
                 out.println("   lockPref(\"mail.attachment.store.version\", 1);"); 
                 out.println("   lockPref(\"mail.folder.views.version\", 1);"); 
                 out.println(""); 
                 out.println("   lockPref(\"mail.rights.version\", 1);"); 
                 out.println("   lockPref(\"app.update.enabled\", false);"); 
                 out.println("   lockPref(\"extensions.update.enabled\", false);"); 
                 out.println(""); 
                 out.println("   lockPref(\"mail.server.server1.type\", \"pop3\");"); 



Второй получившийся вариант:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
                 out.println("   lockPref(\"mail.accountmanager.defaultaccount\", \"account1\");"); 
                 out.println("   lockPref(\"mail.accountmanager.accounts\", \"account1\");"); 
                 out.println("   lockPref(\"mail.account.account1.server\", \"server1\");"); 
                 out.println("   lockPref(\"mail.accountmanager.defaultaccount\", \"account1\");"); 
                 out.println("   lockPref(\"mail.account.lastKey\", 2); "); 
                 out.println("   lockPref(\"mail.attachment.store.version\", 1);"); 
                 out.println("   lockPref(\"mail.folder.views.version\", 1);"); 
                 out.println(""); 
                 out.println("   lockPref(\"mail.rights.version\", 1);"); 
                 out.println("   lockPref(\"app.update.enabled\", false);"); 
                 out.println("   lockPref(\"extensions.update.enabled\", false);"); 
                 out.println(""); 
                 out.println("   lockPref(\"mail.server.server1.type\", \"pop3\");"); 



Как подобное правильно\правильнее делать?
1-й вариант генерит на лету в ответ на запрос по HTTP "как браузеру", а второй в ответ на запрос сохраняет в файлик на серваке, который потом используется в дальнейшем.
...
Рейтинг: 0 / 0
Рефакторинг генератора конфигов
    #38738667
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Velocity, FreeMarker, SpringTemplate
...
Рейтинг: 0 / 0
Рефакторинг генератора конфигов
    #38738713
olexande
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про первые 2-ва вообще не слышал.
Spring как раз начинаю изучать.

А можно пример использования SpringTemplate в моём случае?
...
Рейтинг: 0 / 0
Рефакторинг генератора конфигов
    #38738735
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olexande,
Опечатался. StringTemplate.
...
Рейтинг: 0 / 0
Рефакторинг генератора конфигов
    #38738737
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olexande,

Можно и без фреймверков. MessageFormat либо String.format в цикл завернуть.
Не понтяно что там в конфиге есть ещё кроме приведенного куска.
Не понятно откуда берутся значения, что ваш "генератор" фактически делает. Потому что приведенный выше код ниделает ничего полезного вообще.
...
Рейтинг: 0 / 0
Рефакторинг генератора конфигов
    #38738753
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olexande,
тут ведь не программирование надо, а поддержка по продукту?
http://habrahabr.ru/post/101905/
http://forum.mozilla-russia.org/viewtopic.php?pid=581296
...
Рейтинг: 0 / 0
Рефакторинг генератора конфигов
    #38738981
olexande
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С генерацией скрипта я разобрался.
Информацию по логину я дергаю из LDAP.

Часть инфо заполняю "шаблонно и одинаково у всех". А это уже по нашей специфике "не идеально".

"Заточенный" под "нас" полный конфиг:
// Небольшой тюнинг Thunderbird с помощью Mozilla AutoConfig
try {
// Получаем имя пользователя, Thunderbird запустившего (и домашнюю папку, хоть она нам и не нужна)
if(getenv("USER") != "") {
// *NIX параметры
var env_user = getenv("USER");
var env_home = getenv("HOME");
} else {
// Windows параметры
var env_user = getenv("USERNAME");
var env_home = getenv("HOMEPATH");
}

var server_addr = "192.168.1.246";
var point_name = "Point KV_Point";
var full_email = "kv_point@Firma.com.ua";
var organization = "Firma Ukraine";
var prefix_email = "kv_point";

// Ставим аккаунтом по умолчанию account1
lockPref("mail.accountmanager.defaultaccount", "account1");
// Добавляем по умолчанию в список аккаунтов только account1
lockPref("mail.accountmanager.accounts", "account1");
// Жёстко закрепляем за account1 сервер server1 (IMAP)
lockPref("mail.account.account1.server", "server1");
// Ставим в качестве сервера локальных папок основной IMAP сервер пользователя,
// тем самым полностью отключая локальные папки в клиенте
//lockPref("mail.accountmanager.localfoldersserver", "server1"); //Отключает "локальные папки"
lockPref("mail.accountmanager.defaultaccount", "account1");
lockPref("mail.account.lastKey", 2); //{P
lockPref("mail.attachment.store.version", 1);
lockPref("mail.folder.views.version", 1);

// Отключаем полосочку "Узнайте о своих правах" при первом запуске
lockPref("mail.rights.version", 1);
// Отключаем автообновление клиента. Если не отключить, то при обновлении может измениться файл
// all.js и тогда весь механизм Mozilla AutoConfig сломается.
lockPref("app.update.enabled", false);
lockPref("extensions.update.enabled", false);

// Настройки POP3 сервера
lockPref("mail.server.server1.type", "pop3");

defaultPref("mail.server.server1.hostname", server_addr); // Неизвестно, зачем два параметра, но нужны оба,
defaultPref("mail.server.server1.realhostname", server_addr); // иначе можно будет менять пользователю
defaultPref("mail.server.server1.port", 110); // Порт сервера 110
defaultPref("mail.server.server1.socketType", 0); // Использовать STARTLS
defaultPref("mail.server.server1.name", point_name);
defaultPref("mail.server.server1.userName", full_email); // Логин пользователя,
defaultPref("mail.server.server1.realuserName", full_email); // комментарий аналогично hostname
lockPref("mail.server.server1.login_at_startup", true); // Очень важный параметр! Без него вообще не заработает ничерта;)
lockPref("mail.server.server1.isSecure", true); // Защищённый сервер

// Частота проверки ящика
lockPref("mail.server.server1.check_time", 5); // Частота проверки ящика
lockPref("mail.server.server1.leave_on_server", true);
// Время хранения в ящике
lockPref("mail.server.server1.delete_by_age_from_server", true);
lockPref("mail.server.server1.num_days_to_leave_on_server", 30);

//Составление и адресация - подпись при ответах (расположение)
lockPref("mail.identity.id1.reply_on_top", 1);
lockPref("mail.identity.id1.sig_bottom", false);
lockPref("mail.identity.id1.sig_on_fwd", true);

//Где хранить письма?.. 1 раз столкнулся, что начинало хранить в локальных папках, а не в папках ящика
defaultPref("mail.identity.id1.archive_folder", "mailbox://"+ prefix_email + "%40firma.com.ua@192.168.1.246/Archives");
defaultPref("mail.identity.id1.draft_folder", "mailbox://"+ prefix_email + "%40firma.com.ua@192.168.1.246/Drafts");
defaultPref("mail.identity.id1.fcc_folder", "mailbox://"+ prefix_email + "%40firma.com.ua@192.168.1.246/Sent");
defaultPref("mail.identity.id1.stationery_folder", "mailbox://"+ prefix_email + "%40firma.com.ua@192.168.1.246/Templates");

//отключить антиспам
defaultPref("mail.server.server1.spamLevel", 0);

// Настройки SMTP сервера
defaultPref("mail.smtp.defaultserver", "smtp1");
defaultPref("mail.smtpserver.smtp1.hostname", server_addr);
defaultPref("mail.smtpserver.realhostname", server_addr);
defaultPref("mail.smtpserver.smtp1.port", 25);
defaultPref("mail.smtpserver.smtp1.description", organization);
defaultPref("mail.smtpserver.smtp1.try_ssl", 0);
defaultPref("mail.smtpserver.smtp1.auth_method", 0);
defaultPref("mail.smtpserver.smtp1.username", full_email);

// Настройки аккаунта - адреса почты и т.д.
defaultPref("mail.identity.id1.fullName", point_name); //Это поле пользователь сможет поменять сам, но по умолчанию там будет его логин
defaultPref("mail.identity.id1.useremail", full_email);
//lockPref("mail.identity.id1.useremail", full_email);
defaultPref("mail.identity.id1.reply_to", full_email);
defaultPref("mail.identity.id1.valid", true);
defaultPref("mail.identity.id1.smtpServer", "smtp1");
defaultPref("mail.identity.id1.organization", organization);
defaultPref("mail.identity.id1.tmpl_folder_picker_mode", "0");

//user_pref("mailnews.reply_in_default_charset", true);
lockPref("intl.charsetmenu.mailview.cache", "KOI8-R, KOI8-U, UTF-8, windows-1251, ISO-8859-1, ISO-8859-5");
lockPref("mailnews.send_default_charset", "KOI8-R");
lockPref("mailnews.view_default_charset", "KOI8-R");
lockPref("mailnews.reply_in_default_charset", true);

defaultPref("mailnews.start_page.enabled", false); //"Не запускать стартовую страницу. Без И-нета ругается ... "


// Привязываем ID к аккаунту
lockPref("mail.account.account1.identities", "id1");

// Адресные книги LDAP
defaultPref("ldap_2.servers.domain.uri", "ldap://firma.ua/DC=firma,DC=ua??sub?(mail=*)");
defaultPref("ldap_2.servers.domain.auth.dn", "firma\\ldapaccess");
defaultPref("ldap_2.servers.domain.auth.saslmech", "");
defaultPref("ldap_2.servers.domain.description", "firma");
lockPref("ldap_2.servers.domain.filename", "empl.mab");
lockPref("ldap_2.servers.domain.maxHits", 300);

// Автодополнение адресов из книги сотрудников
lockPref("ldap_2.autoComplete.directoryServer", "ldap_2.servers.domain");
lockPref("ldap_2.autoComplete.useDirectory", true);

lockPref("mail.identity.id1.sig_file", "D:\\Podpisi\\"+ env_user + ".html");

//Глобальные настройки уведомлений о прочтении
defaultPref("mail.mdn.report.not_in_to_cc", 1);
defaultPref("mail.mdn.report.other", 1);
defaultPref("mail.mdn.report.outside_domain", 0);
defaultPref("mail.receipt.request_return_receipt_on", true);

lockPref("mail.identity.id1.attach_signature", true);
lockPref("mail.server.server1.download_on_biff", true);

} catch(e) {
displayError("lockedPref", e);
}
"Точек" у нас много...

Как "на развитие" - думаю еще и подписи к письмам автоматом генерировать.
Была "сложность" - Thunderbird "мусорные" подписи формируем. С колегой разобрались.

Цель дергая инфу из нескольких источников - подсовывать разную информацию в почти конфиги ("рыбу").

Например, если в должности "operatop", то 1-н протокол использовать, а если "senior ..." - то другой ...

Уж очень много "мусора" получается в коде от оформления.

С подписями, например - нужно будет откуда-то дергать инфо (пока сам не уверен еще) и заполнять ФИО, должность ...

С указанными ссылками знаком давно. Если поможет могу и "как есть" выложить ...
Из "наступленных граблей" - пропустил при "правке кавычек-экранирующих слешей оные" и потом по долгу сидел перед не рабочим конфигом, отличающимся 1-й лишней\недостающей кавычкой.
...
Рейтинг: 0 / 0
Рефакторинг генератора конфигов
    #38811197
olexande
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Появилась минутка, выложил: https://github.com/olexande/Thunderbird
...
Рейтинг: 0 / 0
Рефакторинг генератора конфигов
    #38862544
olexande
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На данный момент все "промежуточное" просто помещаю в List.
Постепенно перевожу код в проекте на использование оного. Вроде "та самая золотая пуля".
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Рефакторинг генератора конфигов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]