Централизованное обновление Firefox


Недавно я кратко пересказал руководство по использованию SCCM для развертывания приложений, применительно к наиболее часто используемым и наименее специфичным.
Вот только совершенно не стоило спешить с принудительным разворачиванием FireFox. По меньшей мере, не стоит его устанавливать в конфигурации по умолчанию. Потому как что в процессе развертывания мы узнали о себе много нового, интересного и необычного.
И хотя в принципе, нет никаких проблем собрать дистрибутив, заодно сразу же включив в него необходимые дополнения и расширения, стоит еще раз задуматься о том, что мнение большинства может кардинально расходиться с нашим. И посему не стоит увлекаться.

Итак, что над будет необходимо для создания минимально удобного дистрибутива, действительно пригодного для разворачивания посредством SCCM:

  1. Сам дистрибутив последней версии.
  2. Архиватор с удобным и функциональным интерфейсом. Лично я рекомендую пользоваться 7zip.

При помощи архиватора открываем файл Firefox Setup.exe и следуем по следующему пути внутри: nonlocalized\defaults\pref
Находим файл firefox.js и копируем его за пределы архива. Теперь открываем сохраненную копию firefox.js и углубляемся в его редактирование. Часть настроек в файле уже будет включено с иными параметрами, а часть настроек необходимо дописать самостоятельно.

Поскольку мы лучше знаем, что и когда обновлять, отключаем встроенную функцию обновления.
pref(«app.update.enabled», false);
pref(«app.update.auto», false);
pref(«app.update.silent», false);
pref(«app.update.url», «»);

Отключаем стартовую проверку на то, что FireFox является браузером по умолчанию. Если кому-то удобен другой браузер, пусть им продолжает пользоваться, не нужно излишнего насилия.
pref(«browser.shell.checkDefaultBrowser», false);

Следующей комбинацией мы заставляем FF всегда восстанавливать предыдущую сессию. Должен, правда, предупредить, что эта конфигурация может породить достаточно неприятные последствия. Но если мы хорошо понимаем, что мы делаем, то это достаточно удобный вариант.
pref(«browser.startup.page», 3);
pref(«browser.startup.homepage», » «);

Выделяем кэш на жестком диске в размере 150Mb. По умолчанию, напомню, стоит значение 50.
pref(«browser.cache.disk.capacity», 150000);
pref(«browser.cache.disk.enable», true);

Задаем для FireFox ограничение выделения оперативной памяти под нужды кэша картинок и элементов управления.
pref(«browser.cache.memory.enable», true);
pref(«browser.cache.memory.capacity», 14336);

Задаем максимальную глубину кэша истории просмотра (количество страниц истории каждой вкладки, которые остаются загруженными в памяти) и глубину истории хранения полностью распарсенных страниц. В силу того, что подавляющее большинство окон открывается в новых вкладках, не вижу смысла в том, чтобы держать в памяти историю более 8 страниц, а кэшировать для максимально быстрого возврата более одной.
pref(«browser.sessionhistory.max_entries», 8);
pref(«browser.sessionhistory.max_total_viewers», 1);

Задаем открытие результатов поиска всегда в новой вкладке.
pref(«browser.search.openintab», true);

Устанавливаем режим работы с прокси сервером. Я настоятельно рекомендую использовать wpad.dat для этой цели. Потому как изменить один скрипт много проще, чем настройку всех браузеров на всех компьютерах сети. Не говоря уже о массе ПО, для которого попросту нет иных способов задания работы через прокси сервер. Последней особенностью обладает, например, Google Picasa — ни единой настройки работы через прокси сервер, но включив снифер можно понять, почему настройки в интерфейсе приложения были бы соврешенно излишни.
pref(«network.proxy.type», 2);
pref(«network.proxy.autoconfig_url», «http://proxy.libertine.su/wpad.dat»);

Учитывая разумное предположение того, что наши рабочие станции находятся внутри высокоскоростной сети, подключенной к стабильному интернет-каналу через прокси сервер, мы можем ускорить работу браузера с сетью. Для этого увеличим количество одновременных подключений и включим режим туннелирования, когда каждый последующий запрос отсылается не дожидаясь ответа не предыдущий. Впрочем, конфигурация ниже может некорректно работать с некоторыми прокси. А также вызывать срабатывание IDS шаблонов на сетевых устройствах. Хотя, в обоих случаях необходимо просто более адекватно настроить оборудование.
pref(«network.http.keep-alive.timeout 700
pref(«network.http.max-connections», 48);
pref(«network.http.max-connections-per-server», 16);
pref(«network.http.max-persistent-connections-per-proxy», 24);
pref(«network.http.max-persistent-connections-per-server», 8);
pref(«network.http.pipelining», true);
pref(«network.http.pipelining.maxrequests», 16);
pref(«network.http.pipelining.ssl», true);
pref(«network.http.proxy.pipelining», true);
pref(«network.http.request.max-start-delay», 4);

А теперь внимание, будет фокус. FireFox умеет работать с NTLM (она же integrated) аутентификацией. Причем умеет уже достаточно давно, просто отчего-то никто не пользуется данной возможностью.
Так давайте запишем, с какими хостами сети FireFox будет пытаться установить NTLMSSP сессию.
pref(«network.automatic-ntlm-auth.trusted-uris»,  «moss, moss.libertine.su, *.libertine.su, proxy, proxy.libertine.su, exchange, exchange.libertine.su»);

Кстати говоря, поддержка Kerberos у FireFox также имеется. И если рабочее окружение позволяет его использовать, разумеется, это наиболее предпочтительный вариант аунтентификации.
Все необходимые настройки задаются в следующей секции:
network.negotiate-auth.delegation-uris
Рекомендую открыть страницу about:config в установленной браузере и попробовать настройки для своего окружения. Если подавляющее большинство сервисов использует сервер IIS, есть реальный смысл потратить лишние полчаса времени.

Зададим запрет автоматической миграции настроек при первой установке.
pref(«profile.allow_automigration», false);
pref(«profile.confirm_automigration», false);

Теперь предлагаю чуть снизить безопасность, путем отключения google safebrowsing. Впрочем, на компьютерах внутри корпоративной сети он действительно совершенно не нужен, лишь только потребляет лишний трафик и замедляет работу. А тем, кто не верит в надежность антивирусов на прокси сервере и рабочих станциях, а также не считает пользователей разумными существами, можно посоветовать обучить работе с safebrowsing непосредственно прокси сервер и блокировать-блокировать-блокировать.
pref(«browser.safebrowsing.enabled», false);
pref(«browser.safebrowsing.malware.enabled», false);
pref(«browser.safebrowsing.provider.0.updateURL», » «);

pref(«browser.EULA.version», 3);
pref(«browser.rights.version», 3);
pref(«browser.rights.3.shown», true);

Данной настройкой мы можем задать интервал времени, через который браузер будет проверять обновления поисковых плагинов. С одной стороны, трафик данной проверкой создается минимальный, но с другой — имеет ли смысл проверять каждые 6 часов? Поэтому зададим интервал проверки равным двум суткам.
pref(«browser.search.updateinterval», 48);

Задаем количество закрытых вкладок, которые будет сохранены для повторного открытия.
pref(«browser.sessionstore.max_tabs_undo», 35);

Сокращаем затраты времени на скачивание при добавление исключения для самоподписанных сертификатов.
pref(«browser.ssl_override_behavior», 2);

В зависимости от настроения, добавляем решение различных проблем кириллических названий папок.  Проблемы обычно возникают с кириллическими названиями папок на FTP, с отображением пути в браузере и с передачей параметров для серверных скриптов. Тут сложно сказать, какая сторона права, но лично в моем окружении, гораздо меньше проблем встречается в такой конфигурации.
pref(«network.standard-url.encode-utf8», false);
pref(«network.standard-url.escape-utf8», false);
pref(«network.standard-url.encode-query-utf8», false);

Также мы можем задать политику блокировки всплывающих окон.
pref(«privacy.popups.policy», 2);
pref(«privacy.popups.firstTime», false);

Итак, мы отредактировали файл. Рекомендую сохранить его в очевидном месте, дабы в следующий раз не повторять всю настройку. Теперь мы попытаемся его обновить внутри архива с браузером. Скорее всего, у нас ничего не получится и придется сделать следующее:

  1. Переименовать оригинальный firefox.js внутри архива во что-нибудь наподобии 123321.777
  2. Добавить внутрь архива наш новый firefox.js

А вот теперь уже действительно все. Осталось только в SCCM создать новый пакет распространения и развернуть его на все необходимые рабочие станции.


Один отзыв на «Централизованное обновление Firefox»

  1. Автоматическое развертывание Firefox 3.5 | Microsoft Way пишет:

    […] На прошлой неделе вышел долгожданный релиз новой версии браузера. После всестороннего тестирования, должен признать: скорость работы повысилась просто феноменально. А значит, тем более, есть резон обновить версию FireFox на всех рабочих станциях сети. Я уже рассказывал, как максимально удобно можно провести централизованное обновление FireFox. […]

Ваш отзыв