Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Мелочи —> mozilla autoconfig

Mozilla autoconfig

Автор: f0s.


Решил я совсем оптимизировать свою работу. Задумка состоит в следующем. Создаем нового пользователя в домене (я создаю через ldapadmin), далее заходим этим пользователем на компьютер. И.. каждый раз приходится запускать обозреватель, прописывать там прокси-сервер, прописывать ограничения на размер кеша, добавлять еще какие-то опции.. затем запускать почтового клиента, в нем прописывать электронный адрес, имя пользователя т.п. В общем не айс. Хотелось бы, чтобы ничего на стороне клиентского компьютера делать не надо было.

Для автоматизации нам потребуется samba, openldap-server (+ssl), apache, perl. В качестве браузера и почты на клиентских машинах будем использовать Mozilla Seamonkey.

Поднимаем домен: http://www.lissyara.su/?id=1487
Устанавливаем Apache по статье Лиса: http://www.lissyara.su/?id=1360

После этого устанавливаем модуль NTLM для Apache2:

[f0s@mail] //> cd /usr/ports/www/mod_ntlm2
[f0s@mail] /usr/ports/www/mod_ntlm2/> make install clean

Далее добавляем виртуальный хост. Я назвал его mozilla.artpaint:

[f0s@mail] //> cd /usr/local/etc/openldap/ldif/
[f0s@mail] /usr/local/etc/openldap/ldif/> cat tmp.ldif
dn: relativeDomainName=mozilla,zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru
dNSClass: IN
objectClass: dNSZone
objectClass: top
relativeDomainName: mozilla
zoneName: artpaint
cNAMERecord: mail

Добавляем временный файл в ldap:

[f0s@mail] /usr/local/etc/openldap/ldif/> ldapadd -x -D \
? "cn=root,dc=artpaint,dc=spb,dc=ru" -W -H ldaps://192.168.10.8 -f tmp.ldif
Enter LDAP Password:
adding new entry
"relativeDomainName=mozilla,zoneName=artpaint,ou=dns,dc=artpaint,dc=spb,dc=ru"

Готово. Проверяем:

[f0s@mail] /usr/local/etc/openldap/ldif/> nslookup mozilla.artpaint
Server:         192.168.10.8
Address:        192.168.10.8#53

mozilla.artpaint        canonical name = mail.artpaint.
Name:   mail.artpaint
Address: 192.168.10.8

С этим ОК. добавляем в Apache:


[f0s@mail] //> cd /usr/local/etc/apache2/Includes/
[f0s@mail] /usr/local/etc/apache2/Includes/> cat mozilla.artpaint
<VirtualHost *:80>
ServerAdmin admin@artpaint.spb.ru
DocumentRoot /usr/home/artpaint/www/data/mozilla.artpaint/
ServerName mozilla.artpaint
SuexecUserGroup artpaint artpaint
Alias       /php-fcgi/      /usr/home/artpaint/www/cgi-bin/
ErrorLog /var/log/httpd/mozilla.artpaint-error.log
CustomLog /var/log/httpd/mozilla.artpaint-access.log combined
ScriptAlias     /moz/   /usr/home/artpaint/www/data/mozilla.artpaint/moz/
AddHandler cgi-script mozilla.config printenv test

<Directory "/usr/home/artpaint/www/data/mozilla.artpaint/moz/">
AllowOverride None
Options ExecCGI
AuthType ntlm
AuthName "ARTPAINT Server"
NTLMAuth on
NTLMAuthoritative on
NTLMDomain ARTPAINT
NTLMServer mail.artpaint
require valid-user
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
[f0s@mail] /usr/local/etc/apache2/Includes/>

Создаем подкаталог:


[f0s@mail] //> cd /home/artpaint/www/data/mozilla.artpaint/
[f0s@mail] /home/artpaint/www/data/mozilla.artpaint/> mkdir moz
[f0s@mail] /home/artpaint/www/data/mozilla.artpaint/> cd moz

Создаем скрипт:


[f0s@mail] /home/artpaint/www/data/mozilla.artpaint/moz/> cat mozilla.pl
#!/usr/bin/perl

# Byteshifting program for mozilla's netscape.cfg files

# Old netscape 4.x uses a bytechift of 7
#   To decode: moz-byteshift.pl -s -7 <netscape.cfg >netscape.cfg.txt
#   To encode: moz-byteshift.pl -s  7 <netscape.cfg.txt >netscape.cfg

# Mozilla uses a byteshift of 13
#   To decode: moz-byteshift.pl -s -13 <netscape.cfg >netscape.cfg.txt
#   To encode: moz-byteshift.pl -s  13 <netscape.cfg.txt >netscape.cfg

use strict;
use Getopt::Std;
use vars qw/$opt_s/;

getopts("s:");
die "Missing shift\n" if (!defined $opt_s);

my $buffer;
while(1) {
my $n=sysread STDIN, $buffer, 1;
last if ($n eq 0);
my $byte = unpack("c", $buffer);
$byte += 512 + $opt_s;
$buffer = pack("c", $byte);
syswrite STDOUT, $buffer, 1;
}

Далее создаем файл mozweb32.js первоначальных параметров для Mozilla:

[f0s@mail] /home/artpaint/www/data/mozilla.artpaint/moz/> cat mozweb32.js
lockPref("general.config.vendor", "mozweb32");
lockPref("autoadmin.global_config_url", "http://mozilla.artpaint/moz/mozilla.config");
[f0s@mail] /home/artpaint/www/data/mozilla.artpaint/moz/>

Конвертируем файл с Java скриптом mozweb32.js в файл mozweb32.cfg:

[f0s@mail] /home/artpaint/www/data/mozilla.artpaint/moz/> ./mozilla.pl -s 13 \
? < mozweb32.js > mozweb32.cfg

Копируем файл mozweb32.cfg в папку, где стоит Mozilla (на клиентский комп).

Создаем файл all.js в папке C:\Program Files\mozilla.org\Mozilla\defaults\pref следующим содержанием:

pref("network.automatic-ntlm-auth.trusted-uris","mozilla.artpaint");
pref("general.config.filename", "mozweb32.cfg");
pref("general.config.vendor", "mozweb32"); 

После чего создаем конфигурационный файл с настройками:


[f0s@mail] /home/artpaint/www/data/mozilla.artpaint/moz/> cat mozilla.config
#!/usr/local/bin/perl

use CGI qw/:standard :cgi/;
use Net::LDAPS;
$user = $ENV{"REMOTE_USER"};
print header(
-type=>'application/x-javascript-config',
-expires=>'0'
);
$ldaphost="mail.artpaint";
$basedn="dc=artpaint,dc=spb,dc=ru";
$id=0;
$ldap=Net::LDAPS->new($ldaphost) or die $@;
$bind=$ldap->bind();
build_body($user,"uid");
if ($id>0)
{
$podval = <<"EOF";
lockPref("mail.accountmanager.accounts", "$accounts");
} catch(e) {
displayError("lockedPref", e);
}
EOF
print $podval;
};

$ldap->unbind;

sub build_body()
{
$userb=$_[0];
$attrb=$_[1];
$search=ldap_search($userb,"users",$attrb);
foreach $entry ($search->entries)
{
$mail=$entry->get_value('mail');
$mailhost='mail.artpaint';
$accstat=$entry->get_value('accountStatus');
$cn=$entry->get_value('displayName');
$o=$entry->get_value('o');
$uid=$entry->get_value('uid');
$gecos=$entry->get_value('gecos');
$mail_mod=$mail;
$mail_mod=~s/@/\%40/g;
if ($accstat eq "active")
{
$id=$id+1;
if ($id==1)
{
$header =<<"EOF";
try {
//displayError("$username");
lockPref("browser.bookmarks.added_static_root", true);
lockPref("browser.cache.disk.capacity", 10240);
lockPref("browser.download.dir", "H:");
lockPref("browser.download.save_converter_index", 0);
lockPref("browser.fixup.alternate.enabled", false);
lockPref("browser.link.open_external", 3);
lockPref("browser.link.open_newwindow", 3);
lockPref("browser.startup.homepage", "http://www.ya.ru/");
lockPref("browser.tabs.autoHide", false);
lockPref("browser.tabs.loadGroup", 1);
lockPref("browser.tabs.loadInBackground", true);
lockPref("browser.tabs.opentabfor.middleclick", true);
lockPref("browser.tabs.opentabfor.urlbar", false);
lockPref("browser.turbo.showDialog", false);
lockPref("general.smoothScroll", false);
lockPref("browser.enable_automatic_image_resizing", false);
lockPref("browser.chrome.site_icons", true);
lockPref("browser.chrome.toolbar_tips", true);
lockPref("browser.chrome.toolbar_style", 2);
lockPref("browser.history_expire_days", 5);
lockPref("browser.search.opensidebarsearchpanel", true);
lockPref("browser.search.opentabforcontextsearch", false);
lockPref("general.startup.chat", false);
lockPref("general.startup.editor", false);
lockPref("general.startup.addressbook", false);
lockPref("general.startup.browser", true);
lockPref("general.startup.mail", false);
lockPref("mail.accountmanager.defaultaccount", "account1");
lockPref("mail.smtp.defaultserver", "smtp1");
lockPref("mail.smtpserver.smtp1.auth_method", 1);
lockPref("mail.smtpserver.smtp1.hostname", "$mailhost");
lockPref("mail.smtpserver.smtp1.port", 465);
lockPref("mail.smtpserver.smtp1.try_ssl", 3);
lockPref("mail.smtpserver.smtp1.username", "$uid");
lockPref("mail.smtpservers", "smtp1");
lockPref("mail.spam.logging.enabled", false);
lockPref("mail.spam.manualMarkMode", 0);
lockPref("mail.spam.markAsReadOnSpam", true);
lockPref("mail.spam.manualMark", true);
lockPref("mail.spam.version", 1);

lockPref("ldap_2.autoComplete.directoryServer",
"ldap_2.servers.artpaint");
lockPref("ldap_2.autoComplete.useDirectory", true);
lockPref("ldap_2.prefs_migrated", true);
lockPref("ldap_2.servers.artpaint.auth.savePassword", true);
lockPref("ldap_2.servers.artpaint.description", "mail.artpaint");
lockPref("ldap_2.servers.artpaint.filename", "abook-1.mab");
lockPref("ldap_2.servers.artpaint.maxHits", 500);
lockPref("ldap_2.servers.artpaint.position", 3);
lockPref("ldap_2.servers.artpaint.uri",
"ldaps://$ldaphost:636/ou=users,$basedn??sub");
lockPref("ldap_2.servers.history.filename", "history.mab");
lockPref("ldap_2.servers.history.replication.lastChangeNumber", 0);
lockPref("ldap_2.servers.pab.filename", "abook.mab");
lockPref("ldap_2.servers.pab.replication.lastChangeNumber", 0);
lockPref("network.cookie.prefsMigrated", true);
lockPref("network.proxy.ftp", "router.artpaint");
lockPref("network.proxy.ftp_port", 8787);
lockPref("network.proxy.gopher", "router.artpaint");
lockPref("network.proxy.gopher_port", 8787);
lockPref("network.proxy.http", "router.artpaint");
lockPref("network.proxy.http_port", 8787);
lockPref("network.proxy.no_proxies_on", "localhost, 127.0.0.1,
192.168.10.0/24, *.artpaint");
lockPref("network.proxy.share_proxy_settings", true);
lockPref("network.proxy.ssl", "router.artpaint");
lockPref("network.proxy.ssl_port", 8787);
lockPref("network.proxy.type", 1);
lockPref("update_notifications.enabled", false);
lockPref("mail.toolbars.showbutton.print", true);
EOF
print $header;
};
$account="account".$id;
$zp="";
$zp="," if ($id>1);
$accounts="$accounts".$zp.$account;
$identi="id".$id;
$serv="server".$id;
$body_account =<<"EOF";
lockPref("mail.account.$account.identities", "$identi");
lockPref("mail.account.$account.server", "$serv");
lockPref("mail.forward_message_mode", 2);
lockPref("mail.identity.$identi.doBcc", false);
lockPref("mail.identity.$identi.doBccList", "");
lockPref("mail.identity.$identi.draft_folder",
"imap://$mail_mod\@$mailhost/Drafts");
lockPref("mail.identity.$identi.drafts_folder_picker_mode", "1");
lockPref("mail.identity.$identi.encryption_cert_name", "");
lockPref("mail.identity.$identi.encryptionpolicy", 0);
lockPref("mail.identity.$identi.fcc_folder",
"imap://$mail_mod\@$mailhost/Sent");
lockPref("mail.identity.$identi.fcc_folder_picker_mode", "1");
lockPref("mail.identity.$identi.fullName", "$cn");
lockPref("mail.identity.$identi.organization","ARTPAINT" );
lockPref("mail.identity.$identi.reply_to", "$mail");
lockPref("mail.identity.$identi.sign_mail", false);
lockPref("mail.identity.$identi.signing_cert_name", "");
lockPref("mail.identity.$identi.smtpServer", "smtp1");
lockPref("mail.identity.$identi.stationery_folder",
"imap://$mail_mod\@$mailhost/Templates");
lockPref("mail.identity.$identi.tmpl_folder_picker_mode", "1");
lockPref("mail.identity.$identi.useremail", "$mail");
lockPref("mail.identity.$identi.valid", true);
lockPref("mail.server.$serv.ageLimit", 30);
lockPref("mail.server.$serv.capability", 418609);
lockPref("mail.server.$serv.daysToKeepBodies", 30);
lockPref("mail.server.$serv.daysToKeepHdrs", 30);
lockPref("mail.server.$serv.download_on_biff", true);
lockPref("mail.server.$serv.check_new_mail", true);
lockPref("mail.server.$serv.check_time", 10);
lockPref("mail.server.$serv.cleanup_inbox_on_exit", true);
lockPref("mail.server.$serv.empty_trash_on_exit", true);
lockPref("mail.server.$serv.moveOnSpam", true);
lockPref("mail.server.$serv.hostname", "$mailhost");
lockPref("mail.server.$serv.login_at_startup", true);
lockPref("mail.server.$serv.max_cached_connections", 5);
lockPref("mail.server.$serv.name", "$gecos");
lockPref("mail.server.$serv.numHdrsToKeep", 30);
lockPref("mail.server.$serv.port", 10993);
lockPref("mail.server.$serv.socketType", 3);
lockPref("mail.server.$serv.realhostname", "$mailhost");
lockPref("mail.server.$serv.realuserName", "$mail");
lockPref("mail.server.$serv.type", "imap");
lockPref("mail.server.$serv.useSecAuth", false);
lockPref("mail.server.$serv.userName", "$mail");
lockPref("mail.server.$serv.purgeSpam", true);
lockPref("mail.server.$serv.purgeSpamInterval", 10);
lockPref("mail.server.$serv.spamActionTargetAccount",
"imap://$mail_mod\@$mailhost");
lockPref("mail.server.$serv.spamActionTargetFolder",
"imap://$mail_mod\@$mailhost/Junk");
EOF
print $body_account;
$searchg=ldap_search($userb,"Group","memberUid");
foreach $entryg ($searchg->entries)
{
$cng=$entryg->get_value('cn');
build_body($cng,"cn");
};
};
};
};

sub ldap_search ()
{
$attr=$_[2];
$val=$_[0];
$ou=$_[1];
$filter="($attr=$val)";
$searchs=$ldap->search(
scope =>'sub',
base =>"ou=$ou,".$basedn,
filter =>$filter,
attrs =>['mail','mailHost','accountStatus',
'displayName','o','uid','gecos']
);

return $searchs
};

Также немаловажный для меня момент, это сделать, чтобы для всех пользователей был доступен оджин и тот же скин. Мне нравится очень Mostly crystal. Скачиваем его с инета, затем скачиваем вот этот файл:

mytheme.xpi
файл скачан размер размещён примечание
mytheme.xpi
686 11.3kb 2008-11-19 Глобальная установка скинов для Мозиллы.

Запаковываем JAR с темой внутрь XPI. В install.js в 41 строчке (var prettyName = "mytheme"; ) меняем mytheme на название файла нашей темы (без .jar). Затем кидаем XPI в окно Мозиллы и выбираем глобальную установку.

Теперь можете запускать на клиентах mozilla seamonkey. Настройки автоматически применятся.

Литература:
1) www.it-sudparis.eu
2) Артем Za.



размещено: 2008-07-08,
последнее обновление: 2008-11-19,
автор: f0s


opt1k, 2008-07-08 в 12:02:23

Спасибо, актуально

DmA, 2008-07-08 в 20:36:43

ну и причём тут FreeBSD?когда научитесь отделять зёрна от плевел?99 % процентов материала этого сайта относится к опенсурс приложениям,а не конкретной ОС!

lissyara, 2008-07-08 в 23:08:02

а чё тя так корчит? =))
хочешь видеть эту статью на ЛОРе? =)))

DALDON, 2008-07-10 в 8:57:07

А, что FreeBSD надо поставить ради FreeBSD чтоль..? Круто, надо её поставить и бегать и плясать вокруг ПК и говорить тут FreeBSD, FreeBSD..! Всё правильно! FreeBSD в первую очередь платформа для всего, а значит и надо смотреть шире!

lissyara, 2008-07-10 в 9:19:31

2 DALDON
Ясней выражайте вашу мысль =)
Я уже накатал гневный ответ про ЛОР который начинает пееркочёвывать сюда, и тока перечитав ещё раз понял на чьей вы стороне =)))

йцукен, 2008-07-10 в 12:41:01

2 DmA
Тоже мне критик.
В твои 99% сколько прочитаного материала из данного сайта входит? А если не нравиться, то зачем тогда ты здесь?

Fastman, 2008-07-10 в 13:40:46

DmA - ты не прав. Если применить на практике твои слова... то почему статьи о настройке софта в Linux существуют ?? GNU Linux это же только ядро :) Вот и пишите про патчи к нему и ядерные модули....
Тут обсуждаются решения которые применимы к OS FreeBSD, на конкретных примерах.

DALDON, 2008-07-10 в 21:56:26

lissyara, эм, ну я в том, отношении, что всё ОЧЕНЬ хорошо пишите. Всё выше написанное я имел ввиду в отношении второго поста, что надо писать чисто о FreeBSD... - Не правильно это, надо писать про всё. В самом деле у нас ВСЕ сервера которые только возможно на этой Системе работают даже контролер домена, хоть Вы и говорили в своё время, что это изврат :-) И данная статья очень даже актуальна! Писать надо про всё, что пишеться Интернет всё стерпит, а народу ОЧЕНЬ пргождаеться, спасибо!



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0437 секунд
Из них PHP: 29%; SQL: 71%; Число SQL-запросов: 78 шт.
Исходный размер: 40034; Сжатая: 10306