LINUX.ORG.RU
ФорумAdmin

Автоматическое конфигурирование Thunderbird

 ,


0

1

Всем доброго времени суток.

Есть скрипт, который делает небольшие начальные настройки для thunderbird. Решили унифицировать подпись сотрудникам. Написал небольшой скрипт и дошло дело до подключения новой подписи пользователям.

Сейчас скрипт выглядит так:

#!/usr/bin/perl

use 5.010;
use CGI qw/:standard/;

$smtp_server = "mail.lan";
$imap_server = "mail.lan";
#$organization = "";

print header(
    -type=>'application/javascript',
    -charset=>'utf-8'
);

$user = param('user');
unless ($user) { die "We need a user, please!\n" }

$user = lc $user;

print <<HEAD;

try {
HEAD

print <<MISC;

    lockPref("mail.rights.version", 1);
    lockPref("mail.shell.checkDefaultClient", true);
    lockPref("mail.cloud_files.enabled", false);
    lockPref("mail.phishing.detection.enabled", true);
    lockPref("mail.chat.enabled", false);
    lockPref("mailnews.start_page.enabled", false);
    pref("mail.biff.alert.show_preview", true);
    pref("mail.biff.alert.show_sender", true);
    pref("mail.biff.alert.show_subject", true);
    pref("mail.biff.show_alert", true);
    pref("mail.biff.show_tray_icon", true);
    pref("mail.biff.show_balloon", true);
    pref("mail.biff.play_sound", true);

MISC

print <<BOOKS;

    lockPref("ldap_2.servers.Office.auth.saslmech", "GSSAPI");
    lockPref("ldap_2.servers.Office.description", "Office");
    lockPref("ldap_2.servers.Office.filename", "ldap.mab");
    lockPref("ldap_2.servers.Office.maxHits", 100);
    lockPref("ldap_2.servers.Office.uri", "");
    lockPref("ldap_2.autoComplete.directoryServer", "ldap_2.servers.Office");
    lockPref("ldap_2.autoComplete.useDirectory", true);

BOOKS

print <<TAIL;
} catch(e) {
    displayError("lockedPref", e);
}
TAIL

У некоторых пользователей больше одной почты, подпись в почте нужно сделать всем и на все учетные записи в клиенте. По идее нужно перебрать их по id. Наткнулся на реализацию описанную ниже, подскажите, а как можно реализовать сами функции getEmails/getName

@mails = getEmails($user);
$name = getName($user);

$i = 0;
@ids = ();
foreach $mail (@mails) {	
	$i++;
	$id = <<ID;
	defaultPref("mail.identity.id$i.fullName", "$name");
    lockPref("mail.identity.id$i.attach_signature", true)
    lockPref("mail.identity.id$i.attach_signature;true", true);
    lockPref("mail.identity.id$i.htmlSigText", "");
    lockPref("mail.identity.id$i.sig_bottom", true);
    lockPref("mail.identity.id$i.sig_file", "/home/name/.thunderbird/t1lek3gz.default/attach.html");
    lockPref("mail.identity.id$i.sig_file-rel", "[ProfD]attach.html");
    lockPref("mail.identity.id$i.sign_mail", false);

ID
	print $id;
	push @ids, "id$i";		
}

$ids = join ',', @ids;
print <<IDS;

	lockPref("mail.account.account1.identities", "$ids");

IDS

Ответ на: комментарий от pru-mike

thunderbird.cfg

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");
}

lockPref("autoadmin.global_config_url", "http://172.0.0.1/tb/user/"+env_user);
lockPref("autoadmin.append_emailaddr", false);

htaccess на сервере где лежит скрипт

Options -Indexes +ExecCGI
AddHandler cgi-script .pl

RewriteEngine on
RewriteBase /tb
RewriteRule ^user/(.*) conf.pl?user=$1 [L]

Я хочу раскидать на все машины одинаковую (ну, плюс минус) подпись для письма. Но, на некоторых машинах больше одной почты, поэтому mail.identity.id$i.sig_file id может быть 1, 2, 18. Подпись надо подставить для всех подключенных ящиков. Поэтому хочу получить id всех пользователей (ну, либо самое большое значение), чтобы в цикле пройтись и прописать параметры для всех id.

hanharr
() автор топика
Ответ на: комментарий от hanharr

Ты выше спрашиваешь

# подскажите, а как можно реализовать сами функции getEmails/getName
@mails = getEmails($user);
$name = getName($user);

Что ты кладешь в $user?

pru-mike ★★
()
Ответ на: комментарий от pru-mike
http://172.0.0.1/tb_win/user/conf.pl?user=Vasya

В принципе, меня даже устроит получить id почты только этого пользователя. Ибо почта у него vasya@domain.ru.

hanharr
() автор топика
Ответ на: комментарий от hanharr

Тогда

# $user eq 'vasya'
my $mail_domain = 'domain.ru';
@mails = getEmails($user);
$name = getName($user);

sub getEmails {
  my $user = shift;
  return "$user\@$mail_domain";
}

sub getName {
  my $user = shift;
  return $user;
}
}

anonymous
()
Ответ на: комментарий от anonymous

Не прокатывает. Нужно как-то вытащить эти данные из thunderbird. Думал, что может кто тут настраивал подобное.

hanharr
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.