[статья: beta] автонастройка браузера и почты

Обсуждаем сайт и форум.

Модератор: f0s

Аватара пользователя
f0s
ст. лейтенант
Сообщения: 1082
Зарегистрирован: 2007-03-13 18:43:31
Откуда: Санкт-Петербург
Контактная информация:

[статья: beta] автонастройка браузера и почты

Непрочитанное сообщение f0s » 2008-07-01 13:01:27

Небольшое отступление: подразумевается, что у вас домен работает под управлением samba+ldap (http://www.lissyara.su/?id=1487).

Решил я совсем оптимизировать свою работу. Задумка состоит в следующем. Создаем нового пользователя в домене (я создаю через 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.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
 };
 [f0s@mail] /home/artpaint/www/data/mozilla.artpaint/moz/>
Ссылки:
1) http://www.it-sudparis.eu/s2ia/user/pro ... ig-en.html
2) Артем Za.
named, named, what is my TTL value?..

[FidoNet 2:550/2 && 2:5030/4441]

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
f0s
ст. лейтенант
Сообщения: 1082
Зарегистрирован: 2007-03-13 18:43:31
Откуда: Санкт-Петербург
Контактная информация:

Re: [статья: beta] автонастройка браузера и почты

Непрочитанное сообщение f0s » 2008-07-01 13:02:30

интересует вопрос, нужна ли такая статья на сайте? а также велком по всем вопросам, буду допиливать, чтобы было яснее.
named, named, what is my TTL value?..

[FidoNet 2:550/2 && 2:5030/4441]

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [статья: beta] автонастройка браузера и почты

Непрочитанное сообщение Alex Keda » 2008-07-01 13:24:03

нужна.
лдап - популярная тема
Убей их всех! Бог потом рассортирует...