Tamplate, firefox

Домен calculate.local
доменная машина client.local. (система Xfce).
Хотелось бы понять на уровне для самых маленьких, как устроен шаблон(tamplate).
на примере firefox (aurora):
-стартовой страницы. (меняется при каждой загрузке)
-поисковой страницы.
-ручная настройка проксисервера.
-установка сертификате в firefox

Краткий экскурс в шаблоны на примере настройки домашней страницы Firefox

Для начала надо понять где Firefox хранит настройки. Делается это множеством способов как используя Git, так и путем проверки какие файлы меняют время записи. В нашем случае Firefox почти все хранит в файле ~/.mozilla/firefox/calculate.default/prefs.js. В случае с профилем пользователя настройки как правило переписываются приложениями и увидеть каким шаблоном они были настроены не получится. Пример шаблона поможет нам создать похожий по образу и подобию. Поэтому придется поискать.

Начиная с третьей версии утилит все шаблоны (сборки системы, установки, настройки профиля, миграции, патчей и т.д.) хранятся в одной директории “templates” и могут быть выполнены по нескольким путям. Первым в списке идет оверлей “calculate”. Посмотреть все пути можно выполнив:

cl-core-variables-show --filter main.cl_template_path

Для поиска шаблона настраивающего Firefox выполните:

find /var/lib/layman/calculate/profiles/templates/3.6/ | grep firefox

Из путей “2_ac_install_merge”, “6_ac_desktop_profile”, “6_ac_update_sync” выбираем “6_ac_desktop_profile” потому что первый путь настраивает системные файлы, второй профиль пользователя, третий содержит шаблоны миграции. Почему так? Директории могут называться произвольно, но у директории в шаблонах как и у самих шаблонов так же есть свойства, они писаны в файле .calculate_directory. Об этом как раз будет описано далее.

Очевидно, что искомый шаблон настраивающий браузер вот этот:
/var/lib/layman/calculate/profiles/templates/3.6/6_ac_desktop_profile/2-user/www-client/firefox-52/calculate.default/prefs.js

На нем можно потренироваться, но при следующем обновлении системы он будет восстановлен. Кстати, для восстановления к начальному виду в том числе созданных новых шаблонов добавьте параметр -C или --check-repos в утилите cl-update.

Просматривая пути вы могли заметить что шаблоны так же ищутся в /var/calculate/templates. Чтобы перенести шаблон “prefs.js” нужно создать необходимые условия его выполнения, в противном случае он будет выполняться при всех возможных событиях и будет переписывать что угодно но не настройки Firefox, т.к. путь нужно тоже задать.

Дерево шаблонов оверлея “calculate” построено таким образом, чтобы максимально упростить включение новых настроек и поддержание существующих. Многоуровревая структура описывае часть условий при которых шаблон будет применяться. В шаблонах утилит Calculate директория - тоже шаблон, а ее свойства описываются в файле .calculate_directory. Восстановим по путям все условия для нашего шаблона:

cat /var/lib/layman/calculate/profiles/templates/3.6/.calculate_directory 
cat /var/lib/layman/calculate/profiles/templates/3.6/6_ac_desktop_profile/.calculate_directory 
cat /var/lib/layman/calculate/profiles/templates/3.6/6_ac_desktop_profile/2-user/.calculate_directory 
cat /var/lib/layman/calculate/profiles/templates/3.6/6_ac_desktop_profile/2-user/www-client/.calculate_directory 
cat /var/lib/layman/calculate/profiles/templates/3.6/6_ac_desktop_profile/2-user/www-client/firefox-52/.calculate_directory 

Вот содержимое файлов:

# Calculate append=skip cl_name==calculate-core&&cl_ver>=3.6.0_alpha1
# Calculate env=desktop path=~ name= chown=#-main.ur_login-#:#-main.ur_group-# ac_desktop_profile==on
# Calculate append=skip ur_login!=root&&ini(main.update)!=off
# Calculate append=skip
# Calculate path=~/.mozilla name=firefox mergepkg()>=#-cut(1)-#||mergepkg(www-client/firefox-bin)>=#-cut(1)-# ini(update.firefox)!=off&&ini(ver.firefox)==&&exists(~/.mozilla/firefox)==

Разберем все условия:

  • “append=skip” - директория не повлияет на путь куда будет записан шаблон
  • “cl_name==calculate-core” - для совместимости со старыми утилитами
  • “cl_ver>=3.6.0_alpha1” - проверка версии утилит (в вашем шаблоне не понадобится)
  • “env=desktop” - окружение переменных утилит которые могут быть использованы в шаблоне
  • “path=~”, “path=~/.mozilla” - путь конечного файла
  • “name=”, “name=firefox” - имя конечного файла. В данном случае мы меняем имя директории.
  • “chown=#-main.ur_login-#:#-main.ur_group-#” - права доступа
  • “ac_desktop_profile==on” - событие выполнения настройки профиля
  • “ur_login!=root” - проверка что не пользователь root.
  • “mergepkg()>=#-cut(1)-#||mergepkg(www-client/firefox-bin)>=#-cut(1)-#” проверка наличия или установленного пакета Firefox заданной версии. Это довольно хитрое условие помогающее определить момент настройки профиля и момент установки пакета когда вы находитесь в сеансе. Функция cut() получает версию пакета из имени директории.
  • Последующая логика нужна для того, чтобы шаблоны сами отписывали и отслеживали выполненные настройки:
ini(main.update)!=off
ini(update.firefox)!=off
ini(ver.firefox)==
exists(~/.mozilla/firefox)==

Выделим только то, что нам надо:

  1. Проверка на событие выполнения шаблона
  2. Путь куда должен быть записан шаблон и права доступа
  3. Проверка чтобы файл настроек не модифицировался всякий раз

Есть несколько путей, либо вы переносите структуру путей к шаблону “prefs.js”, либо создаете удобную вам стуктуру. Ниже приведу пример с минимальным количеством путей:

Создайте в директории /var/calculate/templates папку

mkdir -p /var/calculate/templates/firefox
Создайте шаблон /var/calculate/templates/firefox/.calculate_directory свойств директории со следующим содержимым:

# Calculate env=desktop path=~/.mozilla/firefox name=calculate.default cl_name==calculate-core&&ac_desktop_profile==on&&ur_login!=root&&mergepkg(www-client/firefox)!=

Поместите шаблон настроек в директорию /var/calculate/templates/firefox, пример:
cat prefs.js

# Calculate append=after
user_pref("browser.startup.homepage", "http://www.google.com");

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

Чтобы проверить работу шаблона выполните:
cl-desktop -v -T local USER

Где: USER - логин пользователя.

Приведенная команда выполнит шаблоны настройки профиля пользователя USER и отобразит изменяемые файлы.

Если вы перезайдете в сеанс и запустите Firefox, то откроется такая страница:

Сразу замечу, что этот шаблон будет выполняться всякий раз при установке Firefox или входе в сеанс доменным пользователем. Чтобы добавить ограничение в использовании, вы можете либо добавить проверку на существование настроек, либо воспользоваться функцией ini(). Пишите если будут вопросы. По аналогии с этим примером можно менять любые другие настройки.

Описание шаблонов доступно здесь: https://old.calculate-linux.org/main/ru/calculate_utilities_templates

Отлично, все заработало, а не подскажите как портироваться сертификат, я пришел к заключению, что сертификат портированный в firefox храниться в файле

 /var/calculate/home/lusy/.mozilla/firefox/calculate.default/cert9.db

мне нужно этот файл положить в папку для шаблонов, а что добавить в

/.calculate_directory

Содержимое директории /var/calculate/templates/firefox/ ведёт в ~/.mozilla/firefox/calculate.default/. Достаточно просто скопировать в неё сертификат.

~/.mozilla/firefox/calculate.default/

данная директора расположена на клиенте? если да, сертификат будет только на локальном компьютере, а мне нужно на все машины в домене.
Поместил сертификат на сервере сюда

find /var/ | grep /.mozilla/firefox/calculate.default/
/var/calculate/server-data/samba/profiles/unix/user/CLDXS/.mozilla/firefox/calculate.default/

конечно ничего не произошло)
а можно описать более детально, распространение сертификата в браузерах доменных машин

Вы скажите какой файл куда вы хотите поместить, тогда я скажу как сделать шаблон.

Если такая настройка работает, то перенесите шаблоны в /var/calculate/remote/templates, эта директория монтируется с сервера. При входе в сеанс настройка попадет в профиль всем пользователям всех десктопов.

Есть сертификат от провайдера Inside.der, это типа промежуточного сертификата между клиентом(chrome,firefox) и squid ом для ssl. Устанавливается настройки-безопасность-просмотр сертификатов-центры сертификатов-импортировать сертификат. Вот хотелось бы этот процесс осуществить через шаблон

Скажите мне какой файл и что в нем нунжо поменять и я скажу как это сделать.

Сертификат Inside.der в firefox

Можно конкретней путь?