Собственно стоит задача - настроить автоконфигурацию Thnuderbird. Чтобы новому пользователю вообще никаких настроек не пришлось вводить. Ну это просто:
http://mit.edu/~thunderbird/www/maintainers/autoconfig.html
Делаем примерно как там написано, при установке Thunderbird добавляем пару строчек в all.js, потом делаем подгрузку конфига с сервера и всё работает. Но в JS не получается разрулить нормально различные дополнительные опции. Несмотря на какой-то мутный механизм коннекта к LDAP, приконнектиться к AD с указанием пользователя и пароля невозможно. И много чего ещё не разрулить только исходя и переменных среды.
В итоге рождается сама собой идея: каким-нибудь раком возложить процесс установки нужных параметров на perl скрипт. И вот вопрос: каким? Я по старой памяти пытался сделать в автоконфиге объект XMLHttpRequest - не сработало. Как ещё можно получить данные в JS из стороннего скрипта? Мне необходима именно автоконфигурация, т.е. чтобы новый пользователь запускает тандербирд - и у него автоматически тут же создаётся новый профиль и подтягиваются правильные настройки.
Нужно в общем-то только одно получить в автоконфиге данные из AD с авторизацией и на основе этих данных сделать lockPref кой для чего. Подойдёт любой вариант решения проблемы.
Добавлено 15-04-2010 13:26:19
Вопрос отпал сам собой, я дурак Мы же с сервера запрашиваем обычный текст, так этот текст можно спокойно генерить Perl скриптом. Весна, пора просыпаться
Отсутствует
Ан нет. Мне необходимо передать в perl скрипт текущее имя пользователя системы. Делают так:
lockPref("autoadmin.global_config_url", "http://websrv0.dncm.ru/thunderbird/conf.pl?user=test");
Но эта сволочь не передаёт имя пользователя на сервер через GET! Вопрос опять остаётся в силе: как сделать автоконфигурирование с помощью perl скрипта, а не только JS. Куда ни плюнь - ничего не работает как должно((
Отсутствует
Ну что ж, я опять дурак! Можно на сервере через правила разрулить перенаправление /conf/username в conf.pl?user=test. Но блин это называется гланды через задницу, и не удивлюсь, если на этом пути тоже окажутся проблемы.
Так что вопрос остаётся: как по нормальному сделать автоконфигурирование perl скриптом??
Отсутствует
Тоже интересует этот вопрос, получилось найти выход из ситуации?
Отсутствует
Ну да, я сделал так:
1. Конфиг тандербирда имеет такой вот вид:
all.js
// For AutoConfiguration pref("general.config.obscure_value", 0); pref('general.config.filename', 'thunderbird.cfg');
thunderbird.cfg
// Начальные параметры настройки Thunderbird грузим с сервера if(getenv("USER") != "") { // *NIX settings var env_user = getenv("USER"); var env_home = getenv("HOME"); } else { // Windows settings var env_user = getenv("USERNAME"); var env_home = getenv("HOMEPATH"); } lockPref("autoadmin.global_config_url", "http://mail.domain.com/tb/user/"+env_user); lockPref("autoadmin.append_emailaddr", false);
2. На сервере в .htaccess в папочке tb:
Options -Indexes +ExecCGI AddHandler cgi-script .pl ## make sure nobody gets the htaccess files <Files ~ "^[\._]ht"> Order allow,deny Deny from all Satisfy All </Files> RewriteEngine on RewriteBase /tb RewriteRule ^user/(.*) conf.pl?user=$1 [L]
3. Ну и соответственно conf.pl скрипт, который начинается примерно так:
#!/usr/bin/perl use 5.010; use CGI qw/:standard/; # Прикидываемся жаваскриптом print header( -type=>'application/javascript' ); # Username - из GET переменных $user = param('user'); unless ($user) { die "We need a user, please!\n" } # Всякая обработка $user ... ######################################################################### # Генерим конфиг print <<HEAD; //Параметры автонастройки Thunderbird для пользователя $user ($name) try { HEAD print <<SERVERS; // Основные параметры настройки defaultPref("mail.accountmanager.accounts","account1"); defaultPref("mail.accountmanager.defaultaccount", "account1"); defaultPref("mail.smtpservers", "smtp1"); // SMTP lockPref("mail.account.account1.server", "server1"); // IMAP lockPref("mail.accountmanager.localfoldersserver", "server1"); // Отключаем полосочку "Узнайте о своих правах" при первом запуске defaultPref("mail.rights.version", 1); ... SERVERS
Других способов я не нашёл, ибо TB не умеет напрямую через GET передавать что-то скрипту, да и вообще ничего не умеет. Так что апачевские алиасы снова спасли отца русской демократии.
Отсутствует