Archive of obsolete content

MCD, Mission Control Desktop, AKA AutoConfig

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

Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

Абстрактные

Этот документ является конкретным примером централизованной автоматической настройки приложений Mozilla; Firefox, Thunderbird, Mozilla Suite 1.xx, Seamonkey и для записи, старый Netscape 4.x. Его оригинальное вдохновение исходит от  http://www.alain.knaff.lu/howto/MozillaCustomization/ и http://mit.edu/~firefox/www/maintain...utoconfig.html . Для истории я сохранил главы Mozilla и Netscape, так как некоторые точки дополняют веб-файл AutoConfig.

Этот MCD (также известен как autoconfig) не следует путать с https://wiki.mozilla.org/Thunderbird...oconfiguration . Миссия состоит в том, чтобы полностью автоматизировать настройку предпочтений приложений Mozilla на основе свойств пользователей, полученных из переменных системы или в каталоге ldap организации.

Cитуация

INT-Evry управляет около 3000 пользователей (в основном студентов), которые обмениваются компьютерами в лабораториях и компьютерными комнатами «самообслуживания». Следовательно, один компьютер может подключать много разных пользователей в течение всего дня. Компьютеры с двойной загрузкой (Windows 7 и Linux Fedora 19 к 2013 году). Все пользователи имеют личную учетную запись на сервере Windows (AD) и учетную запись LDAP для аутентификации Linux.

Задача

Целью является предоставление пользователям агента почтовой программы, веб-браузера и считывателя новостей, которые автоматически настраиваются (предпочтения) при запуске для текущего пользователя, подключенного к компьютеру. Выбор продуктов Mozilla позволяет нам использовать одни и те же приложения во время работы в системах Windows или Linux (я подозреваю, что MAC OSX тоже будет в порядке).

Вместо того, чтобы настраивать индивидуальные файлы конечных пользователей ( ~/.mozilla/default/randomdir/prefs.js), мы теперь используем централизованный набор настроек по умолчанию. Этот централизованный файл настроек может блокировать настройки ( lockPref) или инициализировать их ( defaultPref) на основе переменных среды ( USER, HOME...) и / или запросов LDAP (выбор адреса электронной почты, общего имени, языка, домашней страницы и т. Д.) Из каталога предприятия.

Центральный файл конфигурации

Эта функция предоставляется через файл JavaScript.

Местоположение файла (не тестировалось с 2012 года ...)

В Thunderbird, FireFox, файл предпочтений javascript, который вызывает централизованный файл предпочтений, находится в $ INSTALL_DIR_MOZ_APP / defaults / pref, например, в thunderbird это было бы соответственно для windows / linux:

C:\Program Files\Mozilla Thunderbird\defaults\pref

/usr/lib/thunderbird/default/pref

(раньше он находился в /usr/lib/thunderbird-version#/default/prefсостоянии /usr/lib/thunderbird-5/default/pref)

Для цели записи / истории ... старый Netscape 4.x файл закодирован (byte-shift / rotary is 7), и наличие файла ( netscape.cfg) в MOZILLA_HOMEкаталоге достаточно для его чтения и выполнения. Для Mozilla 1.xx, Firefox, Thunderbird или Netscape 7 он по-прежнему является файлом JavaScript, по умолчанию байтовый сдвиг равен 13, но его можно удалить с помощью pref("general.config.obscure_value", 0);предпочтения в любом подходящем .jsфайле, посвященном autoconfig (здесь autoconf.js).

Имя файла может быть все что угодно , потому что он назван по general.configпредпочтению , которое должно быть добавлено в конце файла MOZILLA_HOME/default/pref/autoconf.jsили MOZILLA_HOME/greprefs/autoconf.js: pref("general.config.filename", "mozilla.cfg");.

Файловый API

В этом централизованном файле предпочтений используется JavaScript API, который позволяет нам делать то, что нам нужно.

Это prefcalls.jsтеперь архив в файле omni.jar, расположенный в корне установки приложений mozilla, пример TB5:

# jar -tvf /usr/lib/thunderbird/omni.jar | grep prefcalls.js
  7499 Сб Ноя 05 09:21:34 CET 2011 defaults / autoconfig / prefcalls.js

Традиционно (предыдущие версии приложений) есть MOZILLA_HOME/default/autoconfig/prefcalls.js. Наличие pref("general.config.filename", "mozilla.cfg"); в любом подходящем .js файле (здесь мы используем autoconf.js выделенный файл) позволяет читать и выполнять prefcalls.js.
Не используйте имя, all.js потому что оно зарезервировано. Ссылка: Баг 690370

Доступные функции (см. prefcalls.jsФайл для подробностей):

функция getPrefBranch () 
функция pref (prefName, value) 
function defaultPref (prefName, value)
function lockPref (prefName, value) 
функция unlockPref (prefName) 
function getPref (prefName) 
функция getLDAPAttributes (хост, база, фильтр, атрибуты) 
функция getLDAPValue (str, key) 
функция displayError (funcname, message)
функция getenv (имя) 

 

Настройка AutoConfig

Две директивы просят Thunderbird использовать AutoConfig при запуске:

# cat /usr/lib/thunderbird/defaults/pref/tb-autoconf.js 
// 20100526 - Модификация autoconfig Jehan.
//

pref ("general.config.obscure_value", 0); // для файлов MCD .cfg
pref ('general.config.filename', 'thunderbird.cfg'); // для файлов MCD .cfg
Раньше он использовался в предыдущих выпусках (до 7.0) в /usr/lib/thunderbird-X.0/default/pref/autoconf.js

Первый prefраз говорят нам , что мы не будем кодировать файл (не более 13 роторных или 7 Cf ниже), то второе prefэто имя файла для чтения: /usr/lib/thunderbird/thunderbird.cfg. (или firefox.cfg, если для firefox ...)

Кодирование файлов

При необходимости кодирование может быть выполнено с помощью скрипта Perl: moz-byteshift.plдоступно по адресу http://www.alain.knaff.lu/howto/Mozi...z-byteshift.pl .

Для Netscape 4.x также может быть реализована функция преобразования из набора клиентской настройки (CCK) (и другие вещи, такие как персонализация автоматической установки ...): http://developer.netscape.com/docs/manuals/deploymt/ config.htm .

Директивы AutoConfig

Здесь мы хотим установить предпочтения пользователей электронной почты для пользователей: Создайте одну учетную запись из своего имени входа, получите свой адрес электронной почты из запроса LDAP и установите корпоративные IMAP-серверы и SMTP-серверы. Следовательно, при работе на многопользовательских рабочих станциях каждый пользователь автоматически настраивает Thunderbird для своего профиля.

thunderbird.cfg (версия 1)

Вот полный файл, сначала мы получаем имя пользователя из переменных среды, затем настраиваем адресную книгу LDAP, создаем учетную запись электронной почты и настраиваем IMAP и SMTP:

[root @ calaz / usr / lib / thunderbird]
$ cat thunderbird.cfg
// помещаем все в try / catch
пытаться {

// 1) переменные env
if (getenv ("USER")! = "") {
  // * Настройки NIX
  var env_user = getenv ("ПОЛЬЗОВАТЕЛЬ");
  var env_home = getenv ("HOME");
} else {
  // Настройки Windows
  var env_user = getenv ("USERNAME");
  var env_home = getenv ("HOMEPATH");
}
var env_mozdebug = getenv ("MOZILLA_DEBUG");
// var env_user = prompt ("indiquez votre login", toto);

// 2) заблокировать общие настройки
// Адресная книга LDAP
lockPref ("ldap_2.prefs_migrated", true);
lockPref ("ldap_2.servers.LDAPINT.auth.savePassword", true);
lockPref ("ldap_2.servers.LDAPINT.description", "LDAP INT");
lockPref ("ldap_2.servers.LDAPINT.filename", "abook-1.mab");
lockPref ("ldap_2.servers.LDAPINT.uri", "ldap: //ldap1.int-evry.Fr: 389 / ou = people, dc = int-evry, dc = fr ?? 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 ("mail.account.account1.server", "server1");
lockPref ("mail.account.account2.identities", "id1");
lockPref ("mail.account.account2.server", "server2");
lockPref ("mail.accountmanager.accounts", "account1, account2");
lockPref ("mail.accountmanager.defaultaccount", "account2");
lockPref ("mail.accountmanager.localfoldersserver", "server1");
lockPref ("mail.identity.id1.directoryServer", "ldap_2.servers.LDAPINT");
lockPref ("mail.identity.id1.draft_folder", "imap: //" + env_user + "@ imap-int.int-evry.fr / Drafts");
lockPref ("mail.identity.id1.drafts_folder_picker_mode", "0");
lockPref ("mail.identity.id1.fcc_folder", "imap: //" + env_user + "@ imap-int.int-evry.fr / Sent");
lockPref ("mail.identity.id1.fcc_folder_picker_mode", "0");
lockPref ("mail.identity.id1.organization", "INT Evry France");
lockPref ("mail.identity.id1.overrideGlobal_Pref", true);
lockPref ("mail.identity.id1.reply_to", "");

// IMAP
lockPref ("mail.server.server2.hostname", "imap-int.int-evry.fr");
lockPref ("mail.server.server2.isSecure", true);
lockPref ("mail.server.server2.login_at_startup", true);
lockPref ("mail.server.server2.max_cached_connections", 5);
//lockPref("mail.server.server2.name "," jehan.procaccia@int-evry.fr ");
lockPref ("mail.server.server2.type", "imap");
lockPref ("mail.server.server2.userName", env_user);

// SMTP
lockPref ("mail.identity.id1.smtpServer", "smtp1");
lockPref ("mail.identity.id1.stationery_folder", "imap: //" + env_user + "@ imap-int.int-evry.fr / Шаблоны");
lockPref ("mail.identity.id1.tmpl_folder_picker_mode", "0");
lockPref ("mail.identity.id1.valid", true);

// Общий SMTP
lockPref ("mail.smtp.defaultserver", "smtp1");
lockPref ("mail.smtpserver.smtp1.auth_method", 0);
lockPref ("mail.smtpserver.smtp1.hostname", "smtp-int.int-evry.fr");
lockPref ("mail.smtpserver.smtp1.port", 25);
lockPref ("mail.smtpserver.smtp1.try_ssl", 0);
lockPref ("mail.smtpserver.smtp1.username", "");
lockPref ("mail.smtpservers", "smtp1");
lockPref ("mail.startup.enabledMailCheckOnce", true);
lockPref ("mailnews.quotingPrefs.version", 1);
lockPref ("mailnews.ui.threadpane.version", 5);

/ * 3) определить здесь (потому что если установлено после «4»), ниже он не работает!) ProcessLDAPValues, который в конечном итоге вызывается getLDAPAttributes () чуть ниже,
 проверьте код getLDAPAttributes () из $ MOZILLA_HOME / defaults / autoconfig / prefcalls.js, чтобы увидеть внутренний вызов на «user defined» processLDAPValues
* /
function processLDAPValues ​​(значения) {
  если (значения) {
    // устанавливаем глобальный var со значениями, возвращаемыми из запроса LDAP
    ldap_values ​​= значения;
    var uid = getLDAPValue (значения, "uid");
    var cn = getLDAPValue (значения, "cn");
    var mail = getLDAPValue (значения, «почта»);
    var URL = getLDAPValue (значения, "labeledURI");

// Эти переменные LDAP доступны только в этом контексте processLDAPValues!
// поэтому мы задаем им настройки, которые здесь нужны.
lockPref ("mail.identity.id1.useremail", mail);
lockPref ("mail.server.server2.name", почта);
lockPref ("mail.identity.id1.fullName", cn);
// Отладка с всплывающими сообщениями об ошибках больше не работает :-( !!
var env_mozdebug = getenv ("MOZILLA_DEBUG");
if (env_mozdebug) {displayError ("NO ERROR, только отладка, cn =" + cn + "и mail =" + mail); }
    }
  }
// 4) Вызовите LDAP-серверы для получения атрибутов LDAP (mail & cn), это, наконец, вызовет processLDAPValues, «3» «чуть выше».
  getLDAPAttributes ("ldap2.int-evry.fr", "ou = people, dc = int-evry, dc = fr", "uid =" + env_user, "uid, cn, mail, labeledURI");

// Закройте попытку и вызовите catch ()
} catch (e) {
  displayError ("lockedPref", e);
}
thunderbird.cfg (версия 2 с AD)

Использование Thunderbird 9.0.1 и попытка использовать Active Directory (Windows Server 2008), поскольку LDAP-Source не работает с версией 1. Вот моя собственная версия.

// Примечание: для доступа к Active Directory Windows Server позднее 2000
// необходимо разрешить анонимный доступ для чтения. Пожалуйста, посмотри
// (немецкий) http://interop.blog.de/2010/02/13/kapitel-1-ldap-anfragen-linux-ad-8001564/ 
// или искать в сети, как это сделать. Если невозможно предоставить доступ к анонимным,
// вы должны сначала включить эту функцию, см.
//http://technet.microsoft.com/de-de/library/cc816788(WS.10).aspx
//
//
// помещаем все в try / catch
пытаться {
 
var userInfo = new Object (); // Это приведет к результатам LDAP
 
userInfo.envUser = getenv ("USERNAME"); // USERNAME
userInfo.envHome = getenv ("HOME"); // Домашний каталог пользователя
 
var ldapHost = "example.com";
var ldapBase = "dc = company, dc = local";
 
if (userInfo.envUser)
{var ldapFilter = "sAMAccountName =" + userInfo.envUser; }
еще
{throw («Не удалось получить UID из среды»); }
 
// Атрибуты LDAP для извлечения с сервера
var ldapAttrs = new Array ("cn", "mail", "sAMAccountName"); // добавьте сюда дополнительные атрибуты)
 
// Определите, как обрабатывать результаты LDAP, прежде чем мы сделаем вызов
function processLDAPValues ​​(queryResults)
{if (queryResults)
   {// Создаем объект userInfo для последующего использования
      для (var attr в ldapAttrs)
      {userInfo [ldapAttrs [attr]] = getLDAPValue (queryResults, ldapAttrs [attr]); }
   } else
   {throw («Нет результатов LDAP»); }
}
 
// Вызов LDAP для значений в массиве ldapAttrs, 
// Использует предыдущие processLDAPValues ​​()
getLDAPAttributes (ldapHost, ldapBase, ldapFilter, ldapAttrs.join (","));
 
// Регистрация
// см. также http://blog.deanandadie.net/2010/06/easy-thunderbird-account-management-using-mcd/
// Идентификация
defaultPref ("mail.identity.id1.fullName", userInfo.cn);
defaultPref ("mail.identity.id1.smtpServer", "smtp1");
defaultPref ("mail.identity.id1.useremail", userInfo.mail);
 
// Настройки сервера IMAP
defaultPref ("mail.server.server1.hostname", "myImap.server.com");
defaultPref ("mail.server.server1.name", userInfo.mail);
defaultPref ("mail.server.server1.port", 993);
defaultPref ("mail.server.server1.socketType", 3);
defaultPref ("mail.server.server1.type", "imap");
defaultPref ("mail.server.server1.userName", userInfo.mail);
 
// Параметры SMTP-сервера
defaultPref ("mail.smtpserver.smtp1.authMethod", 3);
defaultPref ("mail.smtpserver.smtp1.description", "my Company Name");
defaultPref ("mail.smtpserver.smtp1.hostname", "mySmtp.server.com");
defaultPref ("mail.smtpserver.smtp1.port", 465);
defaultPref ("mail.smtpserver.smtp1.try_ssl", 3);
defaultPref ("mail.smtpserver.smtp1.username", userInfo.mail);
 
// Склеить все это вместе
defaultPref ("mail.account.account1.identities", "id1");
defaultPref ("mail.account.account1.server", "server1");
defaultPref ("mail.accountmanager.accounts", "account1");
defaultPref ("mail.accountmanager.defaultaccount", "account1");
defaultPref ("mail.smtp.defaultserver", "smtp1");
defaultPref ("mail.smtpservers", "smtp1");
 
// Закройте попытку и вызовите catch ()
} catch (e) {
  displayError ("lockedPref", e);
}

Тест AutoConfig
Отлаживать

Чтобы проверить, что наш AutoConfig работает нормально, мы просто устанавливаем переменную env для проверки чтения thunderbird.cfgфайла:

$ export NSPR_LOG_MODULES = MCD: 5
$ export NSPR_LOG_FILE = / tmp / thunderbird-log.txt

Когда Thunderbird запустится, вы должны прочитать:

 $ cat /tmp/thunderbird-log.txt
-1209403040 [808a788]: general.config.filename = thunderbird.cfg
-1209403040 [808a788]: оценка файла .cfg thunderbird.cfg с obscureValue 0
чистый

Затем, чтобы начать с новой учетной записи Thunderbird,

не делайте этого, если у вас уже есть и вы хотите сохранить свои электронные письма и настройки!
$ rm -rf ~ / .thunderbird
Начни это
$ thunderbird

Если Thunderbird попросит вас импортировать свой профиль из Netscape / Mozilla / TB в зависимости от вашей истории почтового клиента, не импортируйте ничего, здесь мы хотим проверить работу AutoConfig самостоятельно!

Это должно сработать, просто перезапустите процесс, установив другую USERпеременную ( USER=procacciи USER=testт. Д.) Любого в вашем каталоге LDAP ...), чтобы проверить многопользовательский AutoConfig.

Thunderbird (предыдущий выпуск)

Поддержка вызовов AutoConfig и LDAP

Ниже приведена «попытка и уловка», которую мы имели в предыдущем выпуске Thunderbird, где эта функция не была скомпилирована по умолчанию, она может помочь при необходимости ...

К сожалению, опция AutoConfig и поддержка LDAP для autoconfig (getLDAPAttributes) не были скомпилированы в пакете Thunderbird по умолчанию в пакете Fedora11 (thunderbird-3.0-2.3.beta2.fc11.src.rpm).

Поэтому нам нужно было запланировать и перекомпилировать этот RPM исходного кода (проверьте баг 295329 ); патч:

[root @ b008-02 ИСТОЧНИКИ] # cat thunderbird-autoconfigAndLdap.patch
diff -ur thunderbird-3.0 / настроить thunderbird-3.0.autoldap / configure
--- thunderbird-3.0 / configure 2009-06-29 11: 37: 21.677372297 +0200
+++ thunderbird-3.0.autoldap / configure 2009-06-29 14: 41: 11.547435040 +0200
@@ -12855,7 +12855,7 @@
 MOZ_FEEDS = 1
 MOZ_JSDEBUGGER = 1
 MOZ_JSLOADER = 1
-MOZ_LDAP_XPCOM =
+ MOZ_LDAP_XPCOM = 1
 MOZ_MAIL_NEWS =
 MOZ_MORK = 1
 MOZ_MORKREADER =
И set --enable-extensions = pref в файле mozconfig, в исходном RPM в fedora:
[root @ b008-02 ИСТОЧНИКИ] # grep enable-extensions / root / rpmbuild / SOURCES / thunderbird-mozconfig
ac_add_options --enable-extensions = pref
На этот раз кажется хуже, так как даже после применения указанных выше параметров компиляции я получаю следующее сообщение об ошибке при указании thunderbird с autoconfig (autoconf.js с pref ('general.config.filename', 'thunderbird.cfg'); )

и thunderbird.cfg, вызывающие функции getLDAP * для извлечения cn и почтового адреса текущего пользователя.

Ошибка Netscape.cfg / AutoConfig. Пожалуйста, обратитесь к системному администратору.
 Ошибка: getLDAPAttibutes не удалось: [Исключение ... "Результат отказа компонента
код: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsILDAPURL.spec] "nsresult:
"0xc1f30001 (NS_ERROR_NOT_INITIALIZED)" местоположение: "JS frame ::
file: ////usr/lib/thunderbird-3.0b2/defaults/autoconfig/prefcalls.js ::
getLDAPAttributes :: строка 174 "данные: нет]
баг 295329 был вновь открыт.

 

Опция AutoConfig и поддержка LDAP в Thunderbird 1.5.x

К счастью, AutoConfig теперь является частью пакетов по умолчанию Thunderbird. MOZ_LDAP_XPCOM=1и MOZ_EXTENSIONS_DEFAULT="wallet spellcheck xmlextras pref webservices universalcharset auth"теперь присутствуют в configureскрипте по умолчанию . Подробнее см. баг 295329.

Добавьте параметр AutoConfig для Old Thunderbird 1.0.x

По умолчанию AutoConfig не входит в дистрибутив файлов Thunderbird (1.0.x). По-видимому, предполагалось увеличить нагрузку на двоичный объект для функции, не используемой множеством индивидуумов. Однако для развертывания предприятия это жизненно важно! Таким образом , нам необходимо перекомпилировать Thunderbird с поддержкой автонастройки, это просто вопрос добавления --enable-extensions=prefв mozconfigфайл.

На моей 3 системы Fedora Core, я взял исходный пакет Thunderbird thunderbird-1.0.2-1.3.3.src.rpmустановил его ( rpm -i) модифицируется /usr/src/redhat/SOURCES/thunderbird-mozconfigпутем добавления:

ac_add_options --enable-extensions = pref

Скомпилируйте и установите:

$ rpmbuild -ba /usr/src/redhat/SPECS/thunderbird.spec
$ rpm -Uvh /usr/src/redhat/RPMS/i386/thunderbird-1.0.2-1.3.3.i386.rpm

После инстилляции AutoConfig наконец возвращается:

$ rpm -ql thunderbird | grep autoconfig
/usr/lib/thunderbird-1.0.2/chrome/en-US/locale/autoconfig
/usr/lib/thunderbird-1.0.2/components/autoconfig.xpt
/usr/lib/thunderbird-1.0.2/components/libautoconfig.so
/usr/lib/thunderbird-1.0.2/defaults/autoconfig
/usr/lib/thunderbird-1.0.2/defaults/autoconfig/platform.js
/usr/lib/thunderbird-1.0.2/defaults/autoconfig/prefcalls.js

Для записи, для старых версий 1.0.x ...

Нежелательное белое пространство снова появилось

К сожалению, «пустая ошибка пространства» появилась в Thunderbird 1.0.2. См. баг 229271. Хотя это было исправлено в Mozilla mainstream: mozilla/extensions/pref/autoconfig/src/nsLDAPSyncQuery.cpp 1.7.2.1к концу 2004 года он по-прежнему присутствует в Thunderbird 1.0.2 по крайней мере :-(, поэтому я применил обходное решение, которое я предложил в этом отчете об ошибке ( start_pos += 1;).

Thunderbird 2.x beta 2

Недавно (2007/03/21) я протестировал с помощью thunderbird 2 beta 2 (2007/01/16), чтобы проверить, поддерживается ли autoconfig + ldap. Кажется, все в порядке. API-интерфейс Autonfig есть, ldap-вызов работает отлично, хорошо!.

Мои тесты были в Windows Vista, и я заметил, по крайней мере, одно различие, это то, что Paths изменились; теперь профиль находится в (для моего образца пользователя procacci): C: \ Users \ procacci \ AppData \ Roaming \ Thunderbird \ Profiles \ v6we4uku.default

Местоположение профиля Vista

Начало в режиме отладки в интерфейсе Comand Line:

Запуск в режиме отладки Comand Line Interface

 

Отладка с displayError ()

 

Вот результат: я использовал метод displayError () (не лучший способ :-( см. баг 206294), чтобы показать переменные среды и ldap, чтобы проверить, что она работает нормально. Просто установите MOZILLA_DEBUG = 1 (см. Код js в thunderbird.cfg), чтобы это сообщение появилось, оно очень полезно в контексте отладки ...

TB-перспектива-MCD-отладка msg.jpg

Функция displayError () не работает должным образом в Thunderbird 3.1: см. Https://bugzilla.mozilla.org/show_bu...?id=502597#c34

Используемое обходное решение помещает следующий код в начало вашего сценария autoconfig:

// Enable logging.
pref("MCD.logging.console", "All");
pref("MCD.logging.dump", "All");
Components.utils.import("resource:///modules/gloda/log4moz.js");
var log = Log4Moz.getConfiguredLogger("MCD");

// Enable alerts.
var alerts = Components.classes["@mozilla.org/alerts-service;1"]
             .getService(Components.interfaces.nsIAlertsService);

// displayError() is broken. Let's override it.
function displayError(title, msg) {
    log.debug(title + ": " + msg);
    alerts.showAlertNotification("chrome://branding/content/icon48.png", title, msg);
}

Fire Fox

Это те же принципы, что и для firefox, как описано выше для thunderbir. Бинарные дистрибутивы теперь должны включать поддержку AutoConfig (pref extension!), Но, к сожалению, не для вызовов LDAP :-( (cf. MOZ_LDAP_XPCOM=1). Это не важно в Firefox, как для нас в Thunderbird (нужно получить cn и адрес электронной почты для установите учетную запись электронной почты, которые по умолчанию недоступны в переменных среды). Однако мне было бы полезно получить значения LDAP для дополнительной настройки Firefox, например, чтобы установить главную страницу по умолчанию на labeledURIатрибут LDAP пользователя.

Firefox 22

omni.jar архивный файл стал omni.ja с   http://blog.ffextensionguru.com/2011/11/16/omni-jar-to-become-omni-ja/

[root @ localhost firefox] # unzip -l /usr/lib/firefox/browser/omni.ja | grep defaults / pr
warning [/usr/lib/firefox/browser/omni.ja]: 3598815 дополнительных байтов в начале или в zip-файле
  (пытаясь все равно обработать)
error [/usr/lib/firefox/browser/omni.ja]: указана длина центрального каталога
  -3598815 байтов слишком долго (Atari STZip zipfile? JHHolm ZIPSPLIT 1.1
  ZipFile?). Компенсационный ...
     3850 01-01-2010 00:00 defaults / profile / bookmarks.html
      869 01-01-2010 00:00 defaults / profile / chrome / userContent-example.css
     1165 01-01-2010 00:00 defaults / profile / chrome / userChrome-example.css
      366 01-01-2010 00:00 defaults / profile / localstore.rdf
      569 01-01-2010 00:00 defaults / profile / mimeTypes.rdf
       76 01-01-2010 00:00 defaults / preferences / firefox-l10n.js
    91656 01-01-2010 00:00 defaults / preferences / firefox.js
     1593 01-01-2010 00:00 по умолчанию / предпочтения / firefox-branding.js
      473 01-01-2010 00:00 defaults / profile / prefs.js

В отличие от старого Thunderbird 8 Firefox 8 не включал prefcalls.js  в себя omni.jar, но и другие файлы .js , хотя:

[root @ arvouin firefox] # jar tvf omni.jar | grep defaults / pref
     0 Пт ноя 04 21:34:18 CET 2011 defaults / предпочтения /
   604 Пт ноя 04 21:34:18 CET 2011 defaults / preferences / all-redhat.js
  1389 Пт ноя 04 21:34:18 CET 2011 defaults / preferences / firefox-branding.js
    76 Пт ноя 04 21:34:18 CET 2011 defaults / preferences / firefox-l10n.js
 50295 Пт ноя 04 21:34:18 CET 2011 defaults / preferences / firefox.js
  2470 Пт ноя 04 21:34:18 CET 2011 defaults / preferences / services-sync.js

Таким образом, нет defaults/autoconfig/prefcalls.jsи defaults/prefкаталог теперь называется defaults/preferences/!

Помните, что в Thunderbird 5 мы

# jar tvf ../thunderbird-5.0/omni.jar | grep pref

7499 Fri Jun 24 20:23:08 CEST 2011 defaults/autoconfig/prefcalls.js
     0 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/
   277 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/all-l10n.js
 27221 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/all-thunderbird.js
  5865 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/composer.js
 42591 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/mailnews.js
   806 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/mdn.js
   267 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/smime.js
   921 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/thunderbird-branding.js
   347 Fri Jun 24 20:23:08 CEST 2011 defaults/profile/prefs.js
 84859 Fri Jun 24 20:23:08 CEST 2011 greprefs.js

Тем не менее, «autoconfig» все еще может работать в Firefox 22, если его не существует, вам придется вручную создать ветвь каталога, чтобы установить ff-autoconfig.js в defaults/preferences/:

[root@calaz firefox]# mkdir -p defaults/preferences/ 

[root@calaz firefox]# cat defaults/preferences/ff-autoconf.js
// autoconfig jehan
pref('general.config.obscure_value', 0);
pref('general.config.filename', 'firefox.cfg');

затем укажите наш набор предпочтений для Firefox в firefox.cfg, как указано выше в ff-autoconf.js.

[root@calaz firefox]# cat firefox.cfg
//put everything in a try/catch
try {
//Privacy & Security
defaultPref("signon.rememberSignons", false);

//Proxy and cache, as it is on NFS volume, we don't want cache
lockPref("browser.cache.disk.capacity", 0);
lockPref("network.cookie.cookieBehavior", 0);
defaultPref("network.proxy.autoconfig_url", "http://wpad.int-evry.fr/wpad.dat");
defaultPref("network.proxy.type", 2);
lockPref("network.protocol-handler.app.mailto", "/usr/bin/thunderbird");

//Firefox3 urlclassifier3.sqlite IOwait/CPU pb
//http://forums.mozillazine.org/viewtopic.php?p=3381133#3381133
defaultPref("browser.safebrowsing.enabled", false);
defaultPref("browser.safebrowsing.malware.enabled", false);

// 1) env variables
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");
 }
  var env_mozdebug= getenv("MOZILLA_DEBUG");

// 2) define here (because if set after "3)" below it doesn't work !) processLDAPValues which is eventually called by getLDAPAttributes() just below,
// check getLDAPAttributes() code from $MOZILLA_HOME/defaults/autoconfig/prefcalls.js to see the inside call to "user defined" processLDAPValues


/* Commented all this section about ldap calls, not supported in FF5 packages :-(


function processLDAPValues (values) {
 if(values) {
      // set the global var with the values returned from the LDAP query
      ldap_values = values;
    var uid = getLDAPValue ( values ,"uid" );
    var cn = getLDAPValue ( values ,"cn" );
    var mail = getLDAPValue ( values ,"mail" );
    var URL =  getLDAPValue ( values ,"labeledURI" );
//Debug with popup error messages doesn't work anymore :-( !!
var env_mozdebug= getenv("MOZILLA_DEBUG");
if (env_mozdebug) {displayError("NO ERROR , just a debug, cn =" + cn + " and mail = " + mail + " ,labeledURI=" + URL ); }
//if (env_mozdebug) {displayError("NO ERROR , just a test, cn =" + cn + " and mail = " + mail); }
//lockPref("browser.startup.homepage", URL );
lockPref("browser.startup.homepage", http://gaspar.it-sudparis.eu );
    }
  }
*/
if (env_mozdebug) {displayError("NO ERROR ,s2ia debug v1.1 just a test, user =" + env_user); }
lockPref("browser.startup.homepage", "http://gaspar.it-sudparis.eu" );
// 3) Call Ldap servers to get Ldap Attributes (mail & cn) , this will finally call processLDAPValues , "2)" just above.
// getLDAPAttributes("ldap2.int-evry.fr","ou=people,dc=int-evry,dc=fr","uid=" + env_user,"uid,cn,mail,labeledURI");

// Close the try, and call the catch()
} catch(e) {displayError("lockedPref", e);}

если вызов Ldap раскомментирован в файле настроек выше, тогда я получаю всплывающее окно с:

Ошибка Netscape.cfg / AutoConfig. Пожалуйста, обратитесь к системному администратору.
 Ошибка: getLDAPAttibutes не удалось: [Исключение ... "Не удалось преобразовать аргумент JavaScript arg 0 [nsISupports.QueryInterface]" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: prefcalls.js :: getLDAPAttributes :: line 177" данные: нет]

Поддержка AutoConfig (pref) и LDAP в пакетах

Добавить поддержку LDAP в Firefox 1.5

По меньшей мере, от Firefox 1.5, AutoConfig скомпилирован по умолчанию (cf. browser MOZ_EXTENSIONS_DEFAULT="pref..."), но не LDAP ( MOZ_LDAP_XPCOM=1). Вам нужно перекомпилировать пакет, чтобы получить его, ср. {{ Ошибка }}.

Добавьте поддержку AutoConfig и LDAP в Firefox 1.0.x

Добавьте pref extension ( --enable-extensions=pref) и удалите --disable-ldapиз mozconfigфайла. Можно проверить, как Firefox был скомпилирован, открыв about:buildconfig(не знаете эквивалент для Thunderbird! Как он был скомпилирован?)

о: buildconfig

Построение платформы
цель
i686-ПК-Linux-гну

Инструменты сборки
Флаговые компиляторы версии компилятора
gcc gcc версия 3.4.3 20050227 (Red Hat 3.4.3-22.fc3) -Wall -W -Wno-unused -Wpointer-arith -Wcast-align -Wno-long-long -pedantic -pthread -pipe
c ++ gcc версия 3.4.3 20050227 (Red Hat 3.4.3-22.fc3) -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor -privacy -Wno-non-virtual-dtor -Wno-long-long -pedantic -fshort-wchar -pthread -pipe -I / usr / X11R6 / include

Настроить аргументы
--disable-mailnews --enable-extensions = cookie, xml-rpc, xmlextras, pref, transformiix, universalchardet, webservices, инспектор, gnomevfs, negotiateauth --enable-crypto --disable-composer --enable-single-profile - -disable-profilesharing --with-system-jpeg --with-system-zlib --with-system-png --with-pthreads --disable-tests --disable-jsd --disable-installer '--enable- optimize = -Os -g -pipe -m32 -march = i386 -mtune = pentium4 '--enable-xft --enable-xinerama --enable-default-toolkit = gtk2 --enable-official-branding --disable-xprint --disable-strip -enable-pango 

autoconf.js

[root @ b008-02 /usr/lib/firefox-1.5.0.2]
$ tail -4 greprefs / autoconf.js
// AutoConfig jehan
pref ('general.config.obscure_value', 0);
pref ('general.config.filename', 'firefox.cfg');

firefox.cfg

This file will set the browser home page to the labeledURI page defined in the user's LDAP entry, hence it checks that both AutoConfig + LDAP work fine.

[root@b008-02 /usr/lib/firefox-1.5.0.2]
$cat firefox.cfg
//put everything in a try/catch
try {

//Privacy & Security
defaultPref("signon.rememberSignons", false);

// 1) env variables
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");
}
var env_mozdebug = getenv("MOZILLA_DEBUG");

/* 2) define here (because if set after "3)" below it doesn't work!) processLDAPValues which is eventually called by getLDAPAttributes() just below,
 check getLDAPAttributes() code from $MOZILLA_HOME/defaults/autoconfig/prefcalls.js to see the inside call to "user defined" processLDAPValues
*/
function processLDAPValues(values) {
  if(values) {
    // set the global var with the values returned from the LDAP query
    ldap_values = values;
    var uid = getLDAPValue(values, "uid");
    var cn = getLDAPValue(values, "cn");
    var mail = getLDAPValue(values, "mail");
    var URL = getLDAPValue(values, "labeledURI");
//Debug with popup error messages doesn't work anymore :-( !!
var env_mozdebug= getenv("MOZILLA_DEBUG");
if (env_mozdebug) {displayError("NO ERROR, just a debug, cn =" + cn + " and mail = " + mail + ", labeledURI= " + URL); }
lockPref("browser.startup.homepage", URL);
    }
  }

//lockPref("browser.startup.homepage", "http://www.renater.fr/");
// 3) Call LDAP servers to get LDAP Attributes (mail & cn), this will finally call processLDAPValues, "2)" just above.
  getLDAPAttributes("ldap2.int-evry.fr","ou=people,dc=int-evry,dc=fr","uid=" + env_user,"uid,cn,mail,labeledURI");

// Close the try, and call the catch()
} catch(e) {displayError("lockedPref", e);}

Debug

If you set a username and the MOZILLA_DEBUG variable ($export MOZILLA_DEBUG=1; export USER=procacci), then the displayError() will show you this popup:

Изображение: Mozilla-автонастройки-en001.png

That's a popup titled as "error", but it's just a debug tool for me as I didn't find any other way to popup information. cf. баг 206294:

 ------- Comment #14 From Daniel Wang 2003-11-06 09:06 PDT [reply] -------

Jehan Procaccia, you need to change 5.8 to reflect what I said in comment 21.

Preference files and config files are special JavaScript files with limited scopes. They
can only call the get/set pref/env methods and have no access to other objects
(need to investigate what exactly are allowed). alert() is a method of the
Window object.

cf. also related post in Newsgroups: mozilla.dev.tech.js-engine

Date: Wed, 17 May 2006 19:06:28 +0200
From: jehan procaccia <jehan.procaccia@int-evry.fr>

Newsgroups: mozilla.dev.tech.js-engine
Subject: scope of js file functions in Frefox/Thunderbird AutoConfig context

Firefox 2.x

Recently (2007/03/20), I've tested autoconfig support in Firefox 2.0.0.2 on a Linux fedora. Autoconfig works fine, but ldap calls are still unavailable in Firefox (as it was the case in Firefox 1.x, but fortunatly not the case for Thunderbird !). That "bug" report is then still up to date!: баг 295329

$ cat /etc/redhat-release 
Fedora Core release 6 (Zod)

$ rpm -qi firefox
Name        : firefox                      Relocations: (not relocatable)
Version     : 2.0.0.2                           Vendor: Remi Collet
Release     : 1.fc6.remi                    Build Date: Sat 24 Feb 2007 01:45:37 PM CET
Install Date: Tue 20 Mar 2007 02:47:27 PM CET      Build Host: remi.famillecollet.com
Packager    : http://remi.collet.free.fr/

References

Other Documents About AutoConfig

http://mit.edu/~firefox/www/maintain...utoconfig.html

http://www.alain.knaff.lu/howto/Mozi...ion/index.html
http://thegoldenear.org/toolbox/wind...re-config.html
http://ilias.ca/blog/2005/03/locking...efox-settings/

Compile on Windows:
http://forums.mozillazine.org/viewtopic.php?t=276014

http://www.mozilla.org/community/dev...er-forums.html
http://forums.mozillazine.org/viewto...config#2090731
http://forums.mozillazine.org/viewto...config#1354355
http://forums.mozillazine.org/viewto...toconfig#32783

баг 295329
баг 222973
{{ Ошибка }}
{{ Ошибка }}
{{ Ошибка }}
{{ Ошибка }}
{{ Ошибка }}

{{ Ошибка }}

{{ Ошибка }}

 

 

Thunderbird Comm-central_source_code_ (Mercurial)

 Ниже приведен метод построения из источников в случае отсутствия какой-либо функции в публичных пакетах

на основе баг 295329, поскольку TB 3.0.X autoconfig больше не работает.

согласно обсуждению в  mozilla.dev.apps.thunderbird , изменение от CVS до Mercurial и недавние изменения кода nsLDAPURL могут иметь borken autoconfig. ниже мы начинаем отлаживать это, перестраивая thunderbird из Comm-central-source-code (mercurial) .

строить

установить меркуриальные инструменты
[root @ b008-02 ~] # yum install mercurial

Установлен:
  mercurial.i586 0: 1.2.1-1.fc11
проверить инструменты слияния в
[root @ b008-02 ~] # vim /etc/mercurial/hgrc.d/mergetools.rc
 получить источник comm-central
[root @ b008-02 Moz] # время hg clone http://hg.mozilla.org/comm-central/ commsrc
запрос всех изменений
добавление наборов изменений
добавление манифеста
добавление изменений файла
добавлено 2975 наборов изменений с 16793 изменением на 7117 файлов (+3 голов)
обновление рабочего каталога
Обновлено 5644 файлов, 0 файлов объединены, удалено 0 файлов, 0 файлов не разрешены

реальный 0m40.771s
пользователь 0m9.284s
sys 0m1.304s
 
[root @ b008-02 commsrc] # python client.py checkout
Выполнение команды: ['hg', 'pull', '-R', './.', '-r', 'tip']
вытягивание из http://hg.mozilla.org/comm-central/
поиск изменений
изменений не найдено
Выполнение команды: ['hg', 'update', '-r', 'default', '-R', './.']
0 файлов обновлено, 0 файлов объединены, удалено 0 файлов, 0 файлов не разрешены
Обновлено до версии c10119db13cad9797b05750bfe18a57261a88922.
Выполнение команды: ['hg', 'clone', 'http://hg.mozilla.org/releases/mozilla-1.9.1/', './mozilla']
запрос всех изменений
добавление наборов изменений
...
Исполняющая команда: ['hg', 'update', '-r', 'default', '-R', './mozilla/extensions/inspector']
0 файлов обновлено, 0 файлов объединены, удалено 0 файлов, 0 файлов не разрешены
Updated to revision 51c6d483a4c15a657df18540219bd0201896c6f2.
CVS checkout begin: 2009-06-30 10:28:31 UTC
Executing command: ['cvs', '-d', ':pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot', '-q', 'checkout', '-P', '-r', 'LDAPCSDK_6_0_6B_MOZILLA_RTM', '-d', 'c-sdk', 'mozilla/directory/c-sdk']
U c-sdk/.cvsignore
U c-sdk/Makefile.in
...
updating working directory
163 files updated, 0 files merged, 0 files removed, 0 files unresolved
Executing command: ['hg', 'update', '-r', 'default', '-R', './mozilla/extensions/venkman']
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
Updated to revision 06ea5135b7f3c9a639c483183ceb9802abee621b.

 Build Thunderbird

prepare compile options
[root @ b008-02 commsrc] # cp ./mozilla/browser/config/mozconfig .mozconfig
[root @ b008-02 commsrc] # cat .mozconfig 
mk_add_options AUTOCONF = autoconf-2.13
ac_add_options --enable-application = mail
ac_add_options --prefix = "/ usr / local / thunderbirdDebug"
ac_add_options --libdir = "/ usr / local / thunderbirdDebugLibs"
ac_add_options --enable-extensions = pref
ac_add_options --enable-static
ac_add_options --disable-shared
ac_add_options --disable-crashreporter

опция --disable-crashreporter необходима, если вы получаете ошибку компиляции на этом этапе сборки

gmake [7]: вход в каталог
`/ USR / местные / Moz2 / commsrc / Mozilla / инструментарий / CrashReporter / Google-breakpad / SRC / общий / Linux»
dump_symbols.cc
строить

затем начните строительство

[root @ b008-02 commsrc] # время make -f client.mk build
rm -f ../../mozilla/dist/bin/TestCookie
если test -f ../../mozilla/dist/bin/TestTArray; 
затем cp ../../mozilla/dist/bin/TestTArray ../../mozilla/dist/bin/TestCookie; Fi;
gmake [5]: quittant le rà © pertoire «/ usr / local / Moz / commsrc / mail / app»
gmake [4]: ​​quittant le rà © pertoire «/ usr / local / Moz / commsrc / mail»
gmake [3]: quittant le rà © pertoire «/ usr / local / Moz / commsrc»
gmake [2]: quittant le rà © pertoire «/ usr / local / Moz / commsrc»
make [1]: quittant le rà © pertoire «/ usr / local / Moz / commsrc»

реальный 23m33.845s
пользователь 20m34.356s
sys 1m49.752s

устанавливать

Затем установите (--enable-static и -disable-shared, необходимые в .mozconfig!)

[root @ b008-02 commsrc] # make install -n
/ usr / bin / gmake -C mail / installer install
gmake [1]: абитуриент dans le répertoire «/ usr / local / Moz / commsrc / mail / installer»
rm -rf ../../mozilla/dist/thunderbird ../../mozilla/dist/thunderbird-3.0b3pre.en-US.linux-i686.tar ../../mozilla/dist/thunderbird- 3.0b3pre.en-US.linux-i686.dmg stage-package 
echo "Создание каталога пакетов ..."
...
/ usr / local / Moz / commsrc / mozilla / config / nsinstall -D / usr / local / thunderbirdDebug / bin
rm -f -f / usr / local / thunderbirdDebug / bin / thunderbird
ln -s /usr/local/thunderbirdDebugLibs/thunderbird-3.0b3pre/thunderbird / usr / local / thunderbirdDebug / bin
gmake [1]: quittant le répertoire «/ usr / local / Moz / commsrc / mail / installer»

[root @ b008-02 commsrc] # ls -l /usr/local/thunderbirdDebugLibs/thunderbird-3.0b3pre/ | grep ^ d
drwxr-xr-x 3 корень root 4096 juil. 2 10:45 хром
drwxr-xr-x 2 корень корня 12288 juil. 2 10:45 компоненты
drwxr-xr-x 6 корень корня 4096 juil. 1 10:24 defaults
drwxr-xr-x 2 корень root 4096 juil. 2 10:45 словари
drwxr-xr-x 3 корень root 4096 juil. 1 10:24 расширения
drwxr-xr-x 2 корень root 4096 juil. 2 10:27 greprefs
drwxr-xr-x 2 корень root 4096 juil. 1 10:18 иконки
drwxr-xr-x 3 корень root 4096 juil. 2 10:45 isp
drwxr-xr-x 4 корень root 4096 juil. 2 10:45 модулей
drwxr-xr-x 2 корень root 4096 juil. 2 10:45 OutTestData
drwxr-xr-x 6 корень корня 4096 juil. 2 10:45 res
[root @ b008-02 commsrc] # ls -l / usr / local / thunderbirdDebug / bin /
всего 4
lrwxrwxrwx 1 корень root 64 juil. 2 10:45 thunderbird -> /usr/local/thunderbirdDebugLibs/thunderbird-3.0b3pre/thunderbird

[root @ b008-02 thunderbirdDebugLibs] # найти / usr / local / thunderbirdDebugLibs / -name prefcalls.js
/usr/local/thunderbirdDebugLibs/thunderbird-3.0b3pre/defaults/autoconfig/prefcalls.js

Старый Mozilla 1.x, возможно, Netscape 6/7

Ниже для записи ... он также содержит интересную функцию, которую я больше не использовал -> AutoConfig с веб-сервера!

изменения

В период с 2002 по 2003 год нам нужно было обновить старую версию Netscape 4.x (4.79) до Mozilla 1.x (1.4), а теперь (2004-2005) Mozilla 1.7. Подсистема AutoConfiguration совершенно такая же, как описано в разделе «старый» Netscape 4.x, но также немного отличается.

Новые возможности Mozilla для Netscape

In Mozilla, we don't use the convert function from Netscape 4.5 CCK anymore, but moz-byteshift.pl Perl script, to encode mozilla.cfg file.

The use of the getLDAPAttributes() function by calling inside itself the processLDAPValues() as a user defined function (see prefcalls.js) forces us to slightly change these calls in our original web CGI JavaScript (here mci-mozilla-glob-prefs-tux.cgi). The variables generated (mail, cn, uid) are defined only inside the processLDAPValues() function, that explains why lockPref related to these variables are located inside that function. I also couldn't use the alert() function anymore, so I changed to displayerror() function!

Locating The File on a Web Server

That was the case in the Netscape 4.x description below, however, at first it was a hard thing to do in Mozilla, cf. баг 206294. So now you only need to create a small encoded cfg file making a call to a web located CGI script which will actually generate the JavaScript configuration directives to the Mozilla client. Hence you can change all of your Mozilla clients preferences by simply modifying a single file on a web server, great!

Call File

This file calls a CGI on a web server, the CGI generating the JavaScript code that will set preferences. Here the vendor name (mci-mozilla-web-tux) must match the name of the cfg file (mci-mozilla-web-tux.cfg).

$ cat mci-mozilla-web-tux.js
lockPref("general.config.vendor", "mci-mozilla-web-tux");
lockPref ( "autoadmin.global_config_url", "http://corbeau.int-evry.fr/cgi-bin/mci-mozilla-glob-prefs-tux.cgi");

Кодирование файла mozilla.js для файла mozilla.cfg

Просто используйте moz-byteshift.plPerl-скрипт, который для Mozilla 1.x и Netscape 6/7 использует сдвиг 13, в Netscape 4.x это было 7.

$ more moz-byteshift.pl
#! / USR / бен / Perl
 
# Байт-сменная программа для файлов netscape.cfg Mozilla
 
# Старый Netscape 4.x использует байтовый сдвиг 7
# Для декодирования: moz-byteshift.pl -s -7 <netscape.cfg> netscape.cfg.txt
# Для кодирования: moz-byteshift.pl -s 7 <netscape.cfg.txt> netscape.cfg
 
# Mozilla использует байтовый сдвиг 13
# Для декодирования: moz-byteshift.pl -s -13 <netscape.cfg> netscape.cfg.txt
# Для кодирования: moz-byteshift.pl -s 13 <netscape.cfg.txt> netscape.cfg
 
# Чтобы активировать файл netscape.cfg, поместите закодированный файл netscape.cfg
# в каталог C: \ Program Files \ mozilla.org \ Mozilla.
# Затем добавьте следующую строку в свою
# C: \ Program Files \ mozilla.org \ Mozilla \ defaults \ pref \ autoconf.js файл:
# pref ("general.config.filename", "mozilla.cfg");
...

$ ./moz-byteshift.pl -s 13 <mci-mozilla-web-tux.js> mci-mozilla-web-tux.cfg

Местоположение mci-mozilla-web-tux.cfg

Расположение netscape.cfg(здесь переименовано mci-mozilla-web-tux.cfg) и способ его вызова отличается от старого Netscape 4.x. Это местоположение находится в MOZILLA_HOME ; c:\program files\mozilla.org\mozillaWindows или /usr/lib/mozilla-1.7-3/Linux Fedora.

Вызовите mci-mozilla-web-tux.cfg

Способ вызвать это через autoconf.jsфайл, добавив в конце:

$ tail -2 /usr/lib/mozilla-1.7-3/defaults/pref/autoconf.js
pref ("general.config.filename", "mci-mozilla-web-tux.cfg");
pref ("general.config.vendor", "mci-mozilla-web-tux");

Веб-база CGI JavaScript-файл генератора настроек

[root @ corbeau / var / www / cgi-bin]
$ cat mci-mozilla-glob-prefs-tux.cgi
#! / usr / bin / perl -w

print («Content-type: application / javascript-config \ n \ n»);
$ page = << "EOP";
 
пытаться {
  var env_user = getenv ("ПОЛЬЗОВАТЕЛЬ");
  var env_home = getenv ("HOME");
  var env_mozdebug = getenv ("MOZILLA_DEBUG");
  function processLDAPValues ​​(значения) {
    var uid = getLDAPValue (значения, "uid");
    var cn = getLDAPValue (значения, "cn");
    var mail = getLDAPValue (значения, «почта»);
    lockPref ("mail.server.server1.name", mail);
    lockPref ("mail.identity.id1.fullName", cn);
    lockPref ("mail.identity.id1.useremail", mail);

  if (env_mozdebug) {
    displayError("debug mozilla.cfg v2.8", "mail:" + mail + "uid:" + uid + "cn" + cn + "user:" + env_user);
  } 
}
//BROWSER
/*defaultPref("startup.homepage_override_url", "http://www.int-evry.fr/mci/user/");
lockPref("browser.startup.homepage_override", true);
lockPref("browser.startup.page", 1);
defaultPref("browser.startup.homepage", "http://www.int-evry.fr/mci/user/");
*/
lockPref("browser.startup.homepage", "http://www.int-evry.fr/mci/user/");
lockPref("browser.startup.homepage_override", true);
lockPref("general.config.vendor", "mci-mozilla-web-tux");
lockPref("startup.homepage_override_url", "http://www.int-evry.fr/mci/user/");
lockPref("browser.cache.disk.capacity", 0);
lockPref("network.cookie.cookieBehavior", 0);
lockPref("network.proxy.autoconfig_url", "http://www.int-evry.fr/local/config.proxy");
lockPref("network.proxy.type", 2);
 
//Account
lockPref("mail.account.account1.identities", "id1");
lockPref("mail.account.account1.server", "server1");
lockPref("mail.account.account2.server", "server2");
lockPref("mail.account.account3.server", "server3");
lockPref("mail.accountmanager.accounts", "account1,account2,account3");
lockPref("mail.accountmanager.defaultaccount", "account1");
 
//IMAP
lockPref("mail.server.server1.hostname", "imap-int.int-evry.fr");
lockPref("mail.server.server1.type", "imap");
lockPref("mail.server.server1.login_at_startup", true);
lockPref("mail.identity.id1.draft_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Drafts");
lockPref("mail.identity.id1.drafts_folder_picker_mode", "0");
lockPref("mail.identity.id1.fcc_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Sent");
lockPref("mail.identity.id1.fcc_folder_picker_mode", "0");
lockPref("mail.identity.id1.stationery_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Templates");
lockPref("mail.identity.id1.tmpl_folder_picker_mode", "0");
lockPref("mail.identity.id1.valid", true);
lockPref("mail.identity.id1.overrideGlobal_Pref", true);
lockPref("mail.server.server1.download_on_biff", true);
lockPref("mail.server.server1.login_at_startup", true);
lockPref("mail.server.server1.userName", env_user);
lockPref("mail.server.server1.delete_model", 0);
 
//SMTP
lockPref("mail.identity.id1.smtpServer", "smtp1");
defaultPref("mail.smtpserver.smtp1.auth_method", 0);
lockPref("mail.smtpservers", "smtp1");
lockPref("mail.smtpservers", "smtp1");
lockPref("mail.smtp.defaultserver", "smtp1");
lockPref("mail.smtpserver.smtp1.hostname", "smtp-int.int-evry.fr");
lockPref("mail.identity.id1.organization", "INT Evry France");
lockPref("mail.startup.enabledMailCheckOnce", true);
lockPref("mail.ui.folderpane.version", 3);
lockPref("mailnews.ui.threadpane.version", 2);
 
//LDAP config
lockPref("mail.identity.id1.directoryServer", "ldap_2.servers.ldapint");
lockPref("ldap_2.prefs_migrated", true);
lockPref("ldap_2.servers.history.filename", "history.mab");
lockPref("ldap_2.servers.history.replication.lastChangeNumber", 0);
lockPref("ldap_2.servers.ldapint.auth.savePassword", true);
lockPref("ldap_2.servers.ldapint.description", "ldap-int");
lockPref("ldap_2.servers.ldapint.filename", "abook-1.mab");
lockPref("ldap_2.servers.ldapint.position", 3);
lockPref("ldap_2.servers.ldapint.uri", "ldap://ldap1.int-evry.fr:389/ou=people,dc=int-evry,dc=fr??sub");
lockPref("ldap_2.servers.pab.filename", "abook.mab");
lockPref("ldap_2.servers.pab.replication.lastChangeNumber", 0);
 
//News config
lockPref("mail.server.server3.hostname", "news.int-evry.fr");
lockPref("mail.server.server3.max_cached_connections", 2);
lockPref("mail.server.server3.name", "news.int-evry.fr");
lockPref("mail.server.server3.type", "nntp");
lockPref("mail.server.server3.userName", env_user);
 
//Call to ldap to get user's attribute.
getLDAPAttributes("ldap2.int-evry.fr", "ou=people,dc=int-evry,dc=fr", "uid=" +env_user, "uid,cn,mail");
 
} catch(e) {
  displayError("lockedPref", e);
}
 
EOP
print $page;

Windows Peculiarities

Without web base CGI file, beware that in Windows, the original (before encoding) mozilla.js file must start with: //BEGIN CE prefs , if not you'll get "failed to read configuration file..." message, and Mozilla won't start :-(

In Windows environment variables like USER or HOME, are USERNAME and HOMEPATH, that's why we must create a different pair of configuration files (cfg and cgi) for both systems (Linux/Windows). Perhaps there's a way in JavaScript to detect operating system and hence use either USER or USERNAME, but I'm not that fluent in JavaScript, let me know if you know how...//

Windows Call File
$ cat mci-mozilla-web-win.js
lockPref("general.config.vendor", "mci-mozilla-web-win");
lockPref("autoadmin.global_config_url","http://corbeau.int-evry.fr/cgi-bin/mci-mozilla-glob-prefs-win.cgi");
Windows autoconf.js File

To be encoded by moz-byteshift.pl as stated above...

c:\type c:\program files\mozilla.org\mozilla\defaults\pref\autoconf.js
pref("general.config.filename", "mci-mozilla-web-win.cfg");
pref("general.config.vendor", "mci-mozilla-web-win");
Windows CGI file
$ cat mci-mozilla-glob-prefs-win.cgi
#!/usr/bin/perl -w

print("Content-type: application/javascript-config\n\n");
$page = <<"EOP";
 
try {
  var env_user = getenv("USERNAME");
  var env_home = getenv("HOMEPATH");
  var env_mozdebug= getenv("MOZILLA_DEBUG");
...

Остальная часть файла идентична версии Linux, только переменные среды (var env_ *) отличаются друг от друга!

Проверенные версии

Эта конфигурация была проверена на Linux с помощью Mozilla 1.4, 1.6 и 1.7 и Windows с Mozilla 1.4, 1.5, 1.7.

Отладка - Bugzilla

Сообщения о времени выполнения

Примечание. Присутствие var env_mozdebug=getenv("MOZILLA_DEBUG")позволяет пользователю печатать отладочные сообщения, если они MOZILLA_DEBUGопределены в оболочке для Unix ( export MOZILLA_DEBUG=1) или в command.comсреде Windows ( set MOZILLA_DEBUG=1).

Ошибка пробела

Я заметил проблему, которая должна быть исправлена ​​в Mozilla 1.8. Я думаю ... Вот отчет и обходной путь: баг 229271. Чтобы исправить ошибку, добавьте следующее:

        start_pos + = search_key.length;
//Начало 
        start_pos + = 1;
//конец

функционировать getLDAPValue()в autoconfig/preffcalls.js.

Документация

Я также открыл отчет о недостатке документации баг 178685, который привел к замечательному документу: http://wangrepublic.org/daniel/mozilla/prefs/

defeultPref для домашней страницы

Я не могу установить домашнюю страницу с помощью defaultPrefфункции, поэтому она устанавливается по умолчанию, но позволяет пользователю изменять ее! Обнаружена ошибка, см. баг 272970

Правильный доступ greprefs

Остерегайтесь также в Linux, что MOZILLA_HOME/greprefsкаталог по умолчанию закрыт для пользователей, а затем AutoConfig работает некорректно, я открыл ошибку: баг 270623. Обходной путь chmod 755 greprefs!

Файл конфигурации базы данных CGI

Возникла проблема с использованием autoadmin.global_config_url, см. баг 206294.

Почтовые папки

Implementing that solution, we encounter difficulties with mail folder. Our first idea was to use local mail folders from home directory of the current user. In Unix that would have been $HOME/nsmail/..., in Windows it would have been a Samba mount of that same Unix path (ex: U:\nsmail ; with U: = Samba mount: \\samba-server\%USERNAME). Unfortunately file system writes and/or mail format differs between Windows and Unix, and folders soon become unreadable or even corrupted when read/written from one system to the other.

That's why we finally decided to use IMAP, and hence IMAP folders. By migrating from University of Washington IMAP server to Cyrus IMAP we also inherited some interesting features like quotas, share folders, ACL, mail only account (no need for /etc/passwd entry!) much better performances, etc...

Reliability

Fail-over and Uniqueness

A contribution from Roberto Aguilar gives the Mozilla AutoConfig JavaScript a way to search through different LDAP replicas in case one LDAP server is down.

It also allows users to use a single JavaScript for both systems (Linux and Windows) with a subtle if... else test on environment variables.

LDAP fail-over

Creating an array of possible running LDAP servers permits an LDAP fail-over, then a shuffle function allows us to randomly pick up a running LDAP server.

The shuffle function comes from here: http://www.mickweb.com/javascript/ar...reshuffle.html

Before publishing the code changes, please add this right before the shuffle function:

 /**
  * setup the shuffle method for an array, from Mickweb Script
  * Factory at:
  * http://www.mickweb.com/javascript/arrays/pureshuffle.html
  */

Вот как работает отказ LDAP:

// 2) установить несколько серверов LDAP для отказа
  var ldap_values;
  var ldap_servers = new Array ('ldap2.int-evry.fr',
                      'Ldap1.int-evry.fr',
                      'Openldap.int-evry.fr'
                      );
  // Shuffle функция для рандомизации массива сервера
  // настройка метода shuffle для массива
  Array.prototype.shuffle = function (times) {
    var i, j, t, l = this.length;
    while (times--) {
      с (Math) {
    i = пол (random () * l);
    j = пол (random () * l);
      }
      t = это [i];
      это [i] = this [j];
      это [j] = t;
    }
    верните это;
  }
 // смешиваем серверы LDAP, чтобы мы не попадали в один и тот же каждый раз
  ldap_servers.shuffle (10);
....
// 4) Вызовите LDAP-серверы для получения атрибутов LDAP (mail & cn), это, наконец, вызовет processLDAPValues, «3» «чуть выше».
// Перейдите в список реплик LDAP
для (i = 0; i <ldap_servers.length; i ++) {
// Поиск почты атрибута и cn через LDAP-серверы, где uid = $ USER | $ USERNAME
  getLDAPAttributes (ldap_servers [I],
       "НУ = люди, DC = INT-Эври, DC = пт",
       "uid =" + env_user,
       "UID, сп, почта");
    // Если мы поймаем запущенный сервер LDAP, выйдите из цикла,
    if (ldap_values) {
      run_ldap_server = ldap_servers [i];
        // Если $ MOZILLA_DEBUG = 1 отображается во всплывающем окне работающий сервер
      if (env_mozdebug) {
        displayError ("getLDAPAttributes: debug 2 running_ldap_server:" + running_ldap_server);
       }
      ломать;
    }
  }

Уникальный скрипт для Windows и Linux

if... elseТест позволяет проверить ли мы используем переменные среды Linux или Windows , для USER/ USERNAME.

// 1) переменные env
if (getenv ("USER")! = "") {
   // * Настройки NIX
   var env_user = getenv ("ПОЛЬЗОВАТЕЛЬ");
   var env_home = getenv ("HOME");
 } else {
   // Настройки Windows
   var env_user = getenv ("USERNAME");
   var env_home = getenv ("HOMEPATH");
 }
  var env_mozdebug = getenv ("MOZILLA_DEBUG");

Окончательный сценарий производства

Вот полный окончательный и прокомментированный производственный сценарий:

// Mozilla AutoConfiguration, Jehan Procaccia & Roberto Aguilar
 
// помещаем все в try / catch
пытаться {
/ *
1) определить переменные среды,
2) список и рандомизировать реплики LDAP,
3) определить processLDAPValues ​​(),
4) Вызовите LDAP-сервер, чтобы получить атрибуты LDAP (mail & cn) getLDAPAttributes ()
5) установить пользовательские настройки
* /
 
// 1) переменные env
if (getenv ("USER")! = "") {
   // * Настройки NIX
   var env_user = getenv ("ПОЛЬЗОВАТЕЛЬ");
   var env_home = getenv ("HOME");
 } else {
   // Настройки Windows
   var env_user = getenv ("USERNAME");
   var env_home = getenv ("HOMEPATH");
 }
  var env_mozdebug = getenv ("MOZILLA_DEBUG");
 
// 2) установить несколько серверов LDAP для отказа
  var ldap_values;
  var ldap_servers = new Array ('ldap2.int-evry.fr',
                      'Ldap1.int-evry.fr',
                      'Openldap.int-evry.fr'
                      );
  // Shuffle функция для рандомизации массива сервера
/ **
  * настроить метод shuffle для массива, начиная с "mickweb script
  * завод "по адресу:
  * http://www.mickweb.com/javascript/arrays/pureshuffle.html
  * / 
  // настройка метода shuffle для массива
  Array.prototype.shuffle = function (times) {
    var i, j, t, l = this.length;
    while (times--) {
      с (Math) {
    i = пол (random () * l);
    j = пол (random () * l);
      }
      t = это [i];
      это [i] = this [j];
      это [j] = t;
    }
    верните это;
  }
 // смешиваем серверы LDAP, чтобы мы не попадали в один и тот же каждый раз
  ldap_servers.shuffle (10);
 
/ * 3) определить здесь (потому что если установлено после «4»), ниже он не работает!) ProcessLDAPValues, который в конечном итоге вызывается getLDAPAttributes () чуть ниже,
 проверьте код getLDAPAttributes () из $ MOZILLA_HOME / defaults / autoconfig / prefcalls.js, чтобы увидеть внутренний вызов на «user defined» processLDAPValues
* /
function processLDAPValues ​​(значения) {
 если (значения) {
      // устанавливаем глобальный var со значениями, возвращаемыми из запроса LDAP
      ldap_values ​​= значения;
    var uid = getLDAPValue (значения, "uid");
    var cn = getLDAPValue (значения, "cn");
    var mail = getLDAPValue (значения, «почта»);
     // заблокируйте зависимые предпочтения переменной LDAP (mail & cn), когда у нас есть доступ к ним
    lockPref ("mail.server.server1.name", mail);
    lockPref ("mail.identity.id1.fullName", cn);
    lockPref ("mail.identity.id1.useremail", mail);
    defaultPref ("network.ftp.anonymous_password", mail);
 
    // если $ MOZILLA_DEBUG = 1, вывести отладочное сообщение
    if (env_mozdebug) {
        displayError ("NO ERROR -> MCI (jehan.procaccia@int-evry.fr)" + "\ nthis сообщение отображается с displayError ()! \ ndebug 1 mozilla.cfg v3.2, NO FAILED, S2IA снова!", "\ nmail:" + mail + "\ nuid:" + uid + "\ ncn:" + cn + "\ nuser:" + env_user);
        }
    }
  }
 
// 4) Вызовите LDAP-серверы для получения атрибутов LDAP (mail & cn), это, наконец, вызовет processLDAPValues, «3» «чуть выше».
// Перейдите в список реплик LDAP
для (i = 0; i <ldap_servers.length; i ++) {
// Поиск почты атрибута и cn через LDAP-серверы, где uid = $ USER | $ USERNAME
  getLDAPAttributes (ldap_servers [I],
       "НУ = люди, DC = INT-Эври, DC = пт",
       "uid =" + env_user,
       "UID, сп, почта");
    // Если мы поймаем запущенный сервер LDAP, выйдите из цикла,
    if (ldap_values) {
      run_ldap_server = ldap_servers [i];
        // Если $ MOZILLA_DEBUG = 1 отображается во всплывающем окне работающий сервер
      if (env_mozdebug) {
        displayError ("getLDAPAttributes: debug 2 running_ldap_server:" + running_ldap_server);
       }
      ломать;
    }
  }
 
// 5) Настройка пользовательских настроек
 
// БРАУЗЕР
lockPref ("browser.startup.homepage", "http://www.int-evry.fr/s2ia/portail/");
//unlockPref("browser.startup.homepage ");
lockPref ("browser.startup.homepage_override", true);
lockPref ("startup.homepage_override_url", "http://www.int-evry.fr/s2ia/portail/");
//unlockPref("startup.homepage_override_url ");
lockPref ("browser.cache.disk.capacity", 100);
lockPref ("network.cookie.cookieBehavior", 0);
 
// Сетевые настройки
lockPref ("network.proxy.autoconfig_url", "http://www.int-evry.fr/local/config.proxy");
lockPref ("network.proxy.type", 2);
 
// Конфиденциальность и безопасность
defaultPref ("signon.rememberSignons", false);
 
//Счет
lockPref ("mail.account.account1.identities", "id1");
lockPref ("mail.account.account1.server", "server1");
lockPref ("mail.account.account2.server", "server2");
lockPref ("mail.account.account3.server", "server3");
lockPref ("mail.accountmanager.accounts", "account1, account2, account3");
lockPref ("mail.accountmanager.defaultaccount", "account1");
 
// IMAP
lockPref ("mail.server.server1.hostname", "imap-int.int-evry.fr");
lockPref ("mail.server.server1.type", "imap");
lockPref ("mail.server.server1.login_at_startup", true);
lockPref ("mail.identity.id1.draft_folder", "imap: //" + env_user + "@ imap-int.int-evry.fr / Drafts");
lockPref ("mail.identity.id1.drafts_folder_picker_mode", "0");
lockPref ("mail.identity.id1.fcc_folder", "imap: //" + env_user + "@ imap-int.int-evry.fr / Sent");
lockPref ("mail.identity.id1.fcc_folder_picker_mode", "0");
lockPref ("mail.identity.id1.stationery_folder", "imap: //" + env_user + "@ imap-int.int-evry.fr / Шаблоны");
lockPref ("mail.identity.id1.tmpl_folder_picker_mode", "0");
lockPref ("mail.identity.id1.valid", true);
lockPref ("mail.identity.id1.overrideGlobal_Pref", true);
lockPref ("mail.server.server1.download_on_biff", true);
lockPref ("mail.server.server1.login_at_startup", true);
lockPref ("mail.server.server1.userName", env_user);
lockPref ("mail.server.server1.delete_model", 0);
 
// SMTP
defaultPref ("mail.identity.id1.smtpServer", "smtp1");
defaultPref ("mail.smtpserver.smtp1.auth_method", 0);
defaultPref ("mail.smtpservers", "smtp1");
defaultPref ("mail.smtpservers", "smtp1");
defaultPref ("mail.smtp.defaultserver", "smtp1");
defaultPref ("mail.smtpserver.smtp1.hostname", "smtp-int.int-evry.fr");
lockPref ("mail.identity.id1.organization", "INT Evry France");
lockPref ("mail.startup.enabledMailCheckOnce", true);
lockPref ("mail.ui.folderpane.version", 3);
lockPref ("mailnews.ui.threadpane.version", 2);
 
// Конфигурация LDAP
lockPref ("mail.identity.id1.directoryServer", "ldap_2.servers.ldapint");
lockPref ("ldap_2.prefs_migrated", true);
lockPref ("ldap_2.servers.history.filename", "history.mab");
lockPref ("ldap_2.servers.history.replication.lastChangeNumber", 0);
lockPref ("ldap_2.servers.ldapint.auth.savePassword", true);
lockPref ("ldap_2.servers.ldapint.description", "ldap-int");
lockPref ("ldap_2.servers.ldapint.filename", "abook-1.mab");
lockPref ("ldap_2.servers.ldapint.position", 3);
lockPref ("ldap_2.servers.ldapint.uri", "ldap: //ldap1.int-evry.fr: 389 / ou = people, dc = int-evry, dc = fr ?? sub");
lockPref ("ldap_2.servers.pab.filename", "abook.mab");
lockPref ("ldap_2.servers.pab.replication.lastChangeNumber", 0);
 
// Конфигурация новостей
lockPref ("mail.server.server3.hostname", "news.int-evry.fr");
lockPref ("mail.server.server3.max_cached_connections", 2);
lockPref ("mail.server.server3.name", "news.int-evry.fr");
lockPref ("mail.server.server3.type", "nntp");
lockPref ("mail.server.server3.userName", env_user);
 
// Закройте попытку и вызовите catch ()
} catch (e) {
  displayError ("lockedPref", e);
}

Для записи, старые надежные скрипты ...

По крайней мере, протестирован на Netscape 4.x.

В исходных файлах ниже (в разделе Netscape 4.x) мы жестко закодировали один веб-сервер для извлечения файла предпочтений JavaScript и одного жестко запрограммированного LDAP-сервера для получения mailи cnатрибутов. Было бы безопаснее получать вторичные серверы в случае сбоя. Для имени веб-сервера мы можем использовать запрос LDAP для получения списка возможных. Следовательно, нам не придется повторно кодировать netscape.cfgфайл при каждом изменении. Мы устанавливаем netscape.cfgфайл только один раз при работе с компьютерами с операционной системой, тогда любые изменения происходят в LDAP или в файле настроек JavaScript веб-сервера (центральная конфигурация).

Улучшить netscape.cfg

Список возможных веб-серверов для запроса определяется в netscape.cfg. Здесь также определяются имена файлов предпочтений JavaScript, поэтому netscape.cfgих не нужно менять после визуализации компьютеров при каждом изменении, которое нам нужно сделать.

Подтип списка веб-сервера LDAP
$ ldapsearch -x * -b "ou = браузер, ou = информация, dc = int-evry, dc = fr" cn -LLL
dn: ou = браузер, ou = информация, dc = int-evry, dc = fr

dn: sn = http_server, ou = браузер, ou = информация, dc = int-evry, dc = fr
cn: web1.int-evry.fr
cn: web2.int-evry.fr

dn: sn = http_unix_file, ou = браузер, ou = информация, dc = int-evry, dc = fr
cn: /browser/config_file_unix.jsc

dn: sn = http_win_file, ou = браузер, ou = информация, dc = int-evry, dc = fr
cn: /browser/config_file_win.jsc
netscape.cfg

Здесь мы выбираем операционный сервер LDAP просто путем тестирования LDAP-запроса, чтобы убедиться, что на наши запросы LDAP для настройки предпочтений будет дан ответ. {Опять же, я не говорю о JavaScript. Должен быть лучший способ убедиться, что сервер LDAP запущен и работает. Что касается проверки веб-сервера, не стесняйтесь оптимизировать этот код и дайте мне знать ...)

if (getLDAPAttributes ("ldap1.int-evry.fr", \
 "ou = браузер, ou = информация, dc = int-evry, dc = fr", \
 "sn = http_server", "cn"))
 var running_ldap_server = "ldap1.int-evry.fr";
 else if (getLDAPAttributes ("ldap2.int-evry.fr", \
 "ou = браузер, ou = информация, dc = int-evry, dc = fr", \
 "sn = http_server", "cn"))
  var running_ldap_server = "ldap2.int-evry.fr";
  else if (getLDAPAttributes ("ldap0.int-evry.fr", \
  "ou = браузер, ou = информация, dc = int-evry, dc = fr", \
  "sn = http_server", "cn"))
   var running_ldap_server = "ldap0.int-evry.fr";
  else alert («Нет сервера LDAP!»);

Вот полный пример файла Unix netscape.cfg.

с (PrefConfig) {// Должен быть выполнен внутри модуля PrefConfig

// создаем некоторые переменные, которые мы, возможно, захотим использовать позже ...
var env_user = getenv ("ПОЛЬЗОВАТЕЛЬ"); // Имя пользователя Windows
var env_home = getenv ("HOME"); // Пользователь HomeDir
var env_mozilla_home = getenv ("MOZILLA_HOME");
var env_mozdebug = getenv ("MOZILLA_DEBUG");

// проверяем, какой сервер LDAP работает (требуется более совершенная процедура!)

if (getLDAPAttributes ("ldap1.int-evry.fr", \
 "ou = браузер, ou = информация, dc = int-evry, dc = fr", \
 "sn = http_server", "cn"))
 var running_ldap_server = "ldap1.int-evry.fr";
 else if (getLDAPAttributes ("ldap2.int-evry.fr", \
  "ou = браузер, ou = информация, dc = int-evry, dc = fr", \
  "sn = http_server", "cn"))
  var running_ldap_server = "ldap2.int-evry.fr";
  else if (getLDAPAttributes ("ldap0.int-evry.fr", \
  "ou = браузер, ou = информация, dc = int-evry, dc = fr", \
  "sn = http_server", "cn"))
   var running_ldap_server = "ldap0.int-evry.fr";
  else alert («Нет сервера LDAP!»);

if (running_ldap_server) { 
var ldap_http_server_values ​​= getLDAPAttributes (running_ldap_server, \
«ou = браузер, ou = информация, dc = int-evry, dc = fr», «sn = http_server», «cn»);
var ldap_http_server = getLDAPValue (ldap_http_server_values, "cn");
var ldap_http_unix_uri_values ​​= getLDAPAttributes (running_ldap_server, \
«ou = браузер, ou = информация, dc = int-evry, dc = fr», «sn = http_unix_file», «cn»);
var ldap_http_unix_uri = getLDAPValue (ldap_http_unix_uri_values, "cn");
var values ​​= getLDAPAttributes (run_ldap_server, \
«ou = people, dc = int-evry, dc = fr», «uid =» + env_user, «cn, mail»);
var ldap_email = getLDAPValue (значения, «почта»);
var ldap_gecos = getLDAPValue (значения, "cn");
env_user = env_user.toLowerCase ();
}
еще
 alert («Нет сервера LDAP, AutoConfig невозможно!»);

// всплывающее отладочное сообщение, если экспортировано MOZILLA_DEBUG = 1 
if (env_mozdebug) {
 alert ("MOZILLA_DEBUG \ nrunning LDAP server:" + run_ldap_server);
 alert ("MOZILLA_DEBUG \ nExecuting" + ldap_http_server + \
 ldap_http_unix_uri);
 alert ("MOZILLA_DEBUG \ nfetching http: //" + ldap_http_server \
 + ldap_http_unix_uri + "");
}

// отправляем файл предпочтений на HTTP-сервере 
// нужен способ проверить, работает ли HTTP-сервер!

конфигурации (
"autoadmin.global_config_url", "http: //" + ldap_http_server + \
ldap_http_unix_uri + ""
);

// Поскольку мы используем файл, если он недоступен,
// ужасно неправильно в любом случае
конфигурации (
"autoadmin.failover_to_cached", false
);

// не использовать? useremail = email-addr для запроса URL-адреса CGI
конфигурации (
"autoadmin.append_emailaddr", false
);

} // с (PrefConfig)

Для версии Windows этого netscape.cfgфайла мы заменяем "sn=http_unix_file"его "sn=http_win_file"в запросе LDAP.

OLD Netscape 4.x

Файл вызова, netscape.cfg

В следующем примере этот файл является файлом «вызова», поскольку он фактически будет использоваться для перенаправления вызова на еще более централизованный файл, который будет расположен на веб-сервере. Это позволяет нам сначала кодировать (байтовый сдвиг) этот файл ( netscape.cfg) - только один раз, потому что он вызовет некодированный файл JavaScript config_file_system.jsc(или другое имя) на веб-сервере.

Во-вторых, поскольку этот последний файл JavaScript находится на веб-сервере, нет необходимости переписывать его на каждой станции при каждом изменении! Эта функция доступна через autoadmin.global_config_urlдирективу, например, например. К сожалению, я не могу запустить эту действительно полезную директиву с Netscape 6/7 или Mozilla 1.x :-( (если кто знает, как, пожалуйста, дайте мне знать!)config("autoadmin.global_config_url","http://www/browser/config-file-system.jsc"),

В Windows, в котором закодированный netscape.cfgфайл находится в NETSCAPE_HOME\Communicator\Program( C:\Program Files\netscape\Communicator\Programs), в Red Hat 7.3 он находится /usr/lib/X11/app-defaults. Помните, что в Windows этот файл уже существует, поэтому он должен быть сохранен перед заменой нашим, чтобы вернуться в нормальное состояние в случае возникновения проблемы. Если нет ни оригинального, ни персонализированного netscape.cfg, Netscape не запустится!

// Этот файл не используется в его нынешнем виде. он должен быть закодирован
// с функцией «convert» меню CCK «файл»
// Конфигурация предпочтений Netscape:
// настраивать значения по умолчанию из внутреннего файла JavaScript в исполняемом файле ns
// глобальные prefs из netscape.cfg (этот файл)
// выполняет файл ~ / .netscape / preferences.js
// выполняет ~ / .netscape / user.js
// (где-то здесь работает liprefs.js, но я еще не понял
// то, что для губ.)
// ================================================ =========================

с (PrefConfig) {// Должен быть выполнен внутри модуля PrefConfig

// создаем некоторые переменные, которые мы, возможно, захотим использовать позже ...
var platform = getPlatform (); // EG SunOS4.1.3_U1
var env_user = getenv ("ПОЛЬЗОВАТЕЛЬ"); // Unix имя пользователя
var env_home = getenv ("HOME"); // Пользователь HomeDir
var env_display = getenv ("DISPLAY"); // X11 Дисплей
var env_editor = getenv ("РЕДАКЦИЯ"); // использовать в редактировании почты?
var env_visual = getenv ("VISUAL"); // использовать в редактировании почты?
var env_mozilla_home = getenv ("MOZILLA_HOME")
var env_mozdebug = getenv ("MOZILLA_DEBUG")
// Для удобства обновления ... Мы используем операцию AutoAdmin для перенаправления
// netscape.cfg, чтобы прочитать файл «config-file-unix.jsc» с открытым текстом.
// Любые изменения
// теперь можно сделать здесь без повторного кодирования файла netscape.jsc для
// netscape.cfg.
конфигурации (
"autoadmin.global_config_url", \
"Http://lugdunum.int-evry.fr/browser/config-file-unix.jsc"
);
// Как часто (в минутах) обновлять
// Каждые 6 часов кажется хорошим интервалом, чтобы держать хозяев, которые никогда не
// выходим из Netscape, обновляем текущие изменения.
конфигурации (
"autoadmin.refresh_interval", 360
);
// Поскольку мы используем файл, если он недоступен,
// ужасно неправильно в любом случае
конфигурации (
"autoadmin.failover_to_cached", false
);
// не использовать? useremail = email-addr для запроса URL-адреса cgi
конфигурации (
"autoadmin.append_emailaddr", false
);

Файл конфигурации LockPref

Этот файл (на веб-сервере:) http://www/browser/config-file-system.jsc- это место, где мы устанавливаем и блокируем Preferences. Поскольку компьютеры являются общими, нам нужно персонализировать настройки на основе входа пользователя. Логин берется из переменной среды: USERв Unix,USERNAMEв Windows. Различные имена среды и разные пути между Windows и Unix объясняют, почему нам нужны два разных файла конфигурации. Возможно, есть способ управлять этими различиями внутри одного и того же файла, но я не очень свободно говорю с JavaScript :-(

Ниже приведен пример lockPrefфайла конфигурации предпочтений для Unix ( config_file_unix.jsc). Мы блокируем ( lockPref) некоторые настройки (имя сервера IMAP, название компании, расположение и размер кэша ...), другие могут быть просто установлены как default ( defaultPref); startup.homepage... Мы также используем функции LDAP (from prefcalls.js), чтобы получить текущий ( USERили USERNAME) адрес электронной почты и общее имя, соответственно, mailи cnв LDAP.

[root @ lugdunum / var / www / html / browser]
$ more config_file_unix.jsc
// Функции, которые вы можете использовать:
// lockPref (имя, значение) пользователь не разрешается изменять
// (aka lock_pref ())
// defaultPref (имя, значение), если пользователь не переопределяет, это значение
// (aka default_pref ())
// unlockPref (name) разблокирует ранее имя «lockPref»
// config (имя, значение) обычно для меню ...
// value = getPref (name) получает текущую настройку
// getLDAPAttributes (хост, база, фильтр, атрибуты)
// getLDAPValue (значения, атрибут)
// .mime.type, .begin_mime_def, .end_mime_def ..
// .plat
// alert (сообщение);
// var = prompt (message);
// var = getPlatform () возвращает Win32, ...
// getPlatform () содержит ("UNIX") ...
// var = getenv (envvar)
// var = putenv (envvar)
//
// Объекты / функции, которые вы * не можете использовать, потому что они не определены
// навигатор. * (argh, это * ДЕЙСТВИТЕЛЬНО * укусы)
// ================================================ =========================
// Конфигурация настроек
// ================================================ =========================
с (PrefConfig) {
var values ​​= getLDAPAttributes ("ldap2.int-evry.fr", \
«ou = people, dc = int-evry, dc = fr», «uid =» + env_user, «cn, mail»);
var ldap_email = getLDAPValue (значения, «почта»);
var ldap_gecos = getLDAPValue (значения, "cn");
// var toto = prompt ("email");
// alert ("ldap_mail =" + ldap_email + "toto =" + toto);
if (env_mozdebug) {
 alert ("env_user:" + env_user + "\ nenv_home:" + env_home + \
"\ nldap_email:" + ldap_email + "\ nldap_gecos:" + ldap_gecos + "\ n");
}
// ------------------------------------------------ -----------------------
// [Общая настройка браузера]
// ------------------------------------------------ -----------------------
config ("autoadmin.refresh_interval", 1440); // автоматическое обновление каждые 24 часа
defaultPref ( "browser.startup.page", 1); 
// 0 = пустая страница, 1 = домашняя страница, 2 = последний посетитель
defaultPref ("browser.startup.homepage", "http: //www/mci/mode-d-emploi.shtml");
lockPref ("browser.cache.directory", "/ tmp");
lockPref ("browser.cache.memory_cache_size", 0);

lockPref ( "mail.server_type", 1); // POP = 0 IMAP = 1
lockPref ("network.hosts.imap_servers", "pop-int");
lockPref ( "mail.imap.server.pop-int.using_subscription", правда);
lockPref ("mail.imap.server.pop-int.userName", env_user);
lockPref ("mail.identity.useremail", ldap_email);
lockPref ("mail.identity.username", ldap_gecos);
lockPref ("mail.check_new_mail", false);
lockPref ("mail.directory", env_home + "/ nsmail");
lockPref ("mail.identity.defaultdomain", "int-evry.fr");
lockPref ("mail.identity.organization", "INT Evry Essonne");

// LDAP
lockPref ("ldap_2.autoComplete.useDirectory", true);
lockPref ("ldap_2.servers.LDAPINT.autoComplete.enabled", true);
lockPref ("ldap_2.servers.LDAPINT.csid", "UTF-8");
lockPref ("ldap_2.servers.LDAPINT.description", "LDAP INT");
lockPref ("ldap_2.servers.LDAPINT.filename", "LDAPINT.na2");
lockPref ("ldap_2.servers.LDAPINT.position", 2);
lockPref ("ldap_2.servers.LDAPINT.searchBase", "ou = people, dc = int-evry, dc = fr");
lockPref ("ldap_2.servers.LDAPINT.serverName", "ldap1.int-evry.fr");

//Новости
lockPref ("news.directory", "/ tmp");
// прокси
lockPref ("network.proxy.autoconfig_url", \
"Http://www.int-evry.fr/local/config.proxy");

} // с (PrefConfig)

Этот документ был первоначально переведен из LaTeX с помощью HEVEA .

«автор»: «Jehan Procaccia MCI INT-EVRY- jehan.procaccia AT int-evry.fr»

«дата создания»: «02 сентября 2006 года» 

Метки документа и участники

Внесли вклад в эту страницу: warsan, WebDiez1989
Обновлялась последний раз: warsan,