середа, 15 грудня 2010 р.

Установка Firefox браузером по умолчанию из консоли

Имея неслабый парк  морально устаревших операционных систем заставило меня начальство обновлять браузеры до актуальных версий. В частности до Firefox 3.6.x.
Все бы было хорошо, если бы не нужно было делать его браузером по умолчанию... Простым созданием ссылки дело не обойдется.
Основной дистрибутив (по количеству установок) это ASP 11.2. Кроме того, когда их ставили на компы в установках поставили браузером новый тогда Firefox 2.0.0.8,  путем задания пути к нему через приложение gnome-default-addlication-settings. В общем пришлось изловчатся...
Первый затык - на некоторых компах несколько пользователей. Но еще есть например пользователь ftp или www, которые как бы есть, но им браузер точно не нужен. Сделал так:
взял список папок  в /home и проверял по id(команда) есть ли такие и какой у них uid. В асп пользователи начинаются с 500 , а допустим на Slackware с 1000, так что нужно делать еще поправку на специфику дистра.
Проблема вторая: у некоторых стоят особые настройки прокси и/или несколько пользовательских профилей. Пришлось проверять в profile.ini(~/.mozilla) дефолтный профиль, проверять в нем prefs.js на предмет настроек прокси и в зависимости от этого распаковывать предварительно собраный профиль.
Получилось так:


for i in `ls /home`
do
USER_ID=`id -u $i 2>/dev/null`
if [ $USER_ID != [0-9]* 2>/dev/null ]
   then
   if [ $USER_ID -ge 500 ]
then
USER_NAME=$i
cd /home/$USER_NAME
pwd
if [ -e /home/$USER_NAME/.mozilla  ]  && [ -d /home/$USER_NAME/.mozilla  ]
then
USER_GID=$(id -g $USER_NAME 2>/dev/null)
echo "User $USER_NAME has UID $USER_ID and GID $USER_GID"
for p in `cat /home/$USER_NAME/.mozilla/firefox/profiles.ini`
do
if [[ $p =~ "^Path*" ]]
then
PROFILE_NAME=$(echo $p | awk --field-separator = {'print $2'})
PROFILE_PATH=/home/$USER_NAME/.mozilla/firefox/$PROFILE_NAME
echo $PROFILE_PATH
fi
if [[ $p =~ "^Default*" ]]
then
break
fi


done
#Check proxy
MAIN_PROXY=$(cat $PROFILE_PATH/prefs.js | grep network.proxy.http\", | awk --field-separator , {'print $2'} )
MAIN_PROXY=${MAIN_PROXY:1}
echo $MAIN_PROXY
killall firefox
killall firefox-bin
#Change Default browser
PROFILE_PATH_BKP=/home/$USER_NAME/.mozilla_temp
mv /home/$USER_NAME/.mozilla $PROFILE_PATH_BKP
if [[ $MAIN_PROXY =~ "^\"127.0.0.1*" ]]
then
tar xfj $INST_DIR/$PR_INTPRO_FILE
else
tar xfj $INST_DIR/$PR_FILE
fi
#Тут вызывается ф-ция смены дефолтного браузера
for j in `cat /home/$USER_NAME/.mozilla/firefox/profiles.ini`
do
if [[ $j =~ "^Path*" ]]
then
NEW_PROFILE_NAME=$(echo $j | awk --field-separator = {'print $2'})
NEW_PROFILE_PATH=/home/$USER_NAME/.mozilla/firefox/$PROFILE_NAME
fi
done


cp -f $PROFILE_PATH_BKP/firefox/$PROFILE_NAME/bookmarks.html /home/$USER_NAME
cp -f $PROFILE_PATH_BKP/firefox/$PROFILE_NAME/mimeTypes.rdf $NEW_PROFILE_PATH


chown -R $USER_ID:$USER_GID /home/$USER_NAME/.mozilla
fi
fi
fi
done

Но это все лирика.
Теперь про браузер по умолчанию

Дело в том, что в ASP этот параметр устанавливается в gconf. Для каждого пользователя отдельно и из под пользователя. После нахождения ключей делаем так. Получилось не очень красиво, но по другому почему-то не работает


echo -l $USER_NAME -c \'/usr/bin/gconftool-2 -s /desktop/gnome/url-handlers/http/command firefox -t string\' | xargs su
echo -l $USER_NAME -c \'/usr/bin/gconftool-2 -s /desktop/gnome/url-handlers/https/command firefox -t string\' | xargs su
echo -l $USER_NAME -c \'/usr/bin/gconftool-2 -s /desktop/gnome/url-handlers/ftp/command firefox -t string\' | xargs su
echo -l $USER_NAME -c \'/usr/bin/gconftool-2 -s /desktop/gnome/url-handlers/gopher/command firefox -t string\' | xargs su
echo -l $USER_NAME -c \'/usr/bin/gconftool-2 -s /desktop/gnome/url-handlers/chrome/command firefox -t string\' | xargs su

Немає коментарів:

Дописати коментар