#!/bin/bash # ############################################################################################### # # Project : Beabloo - applyChangesAtBootTime.sh # # Script : Applies specific configuration to network/screen/sound # # Author : Fabien Bouquelet # Date : 2010-10-05 # Last Modif : 2010-10-08 # Change Log : 2010-10-05 - First version # : 2010-10-08 - Adapt new variable names # : 2011-07-21 - xrandr multilines commands # : 2011-07-22 - fix for xrandr multilines commands when parameters are empty # : 2011-07-25 - fix xrandr "-s" only bug # # Copyright (C) 2008 - 2010 Beabloo. All rights reserved. # ############################################################################################### # ## VERSION NAME=`echo "$0" | sed 's/.*\/\(.*\)\.sh/\1/' | sed 's/.*\/\(.*\)/\1/'` SCRIPT_UNIX_TIME=`ls -lrt --full-time $0 | awk '{print $6,$7}' | cut -d"." -f1` SCRIPT_TIMESTAMP=`date "+%y.%m.%d" -d"${SCRIPT_UNIX_TIME}"` RELEASE="Beabloo ${NAME} v${SCRIPT_TIMESTAMP}" # PRINT VERSION # echo "${RELEASE}" # -------------------------------------------------------------------------------------------- # Properties # -------------------------------------------------------------------------------------------- GENERATED_CHANGES_LIST=/opt/www/cgi-bin/changesToBeApplied.lst CHANGES_LIST=/opt/www/cgi-bin/current_settings.lst DEFAULT_INTERFACES_FILE=/opt/beabloo/scripts/interfaces INTERFACES_FILE=/etc/network/interfaces DNS_CACHE_FWD_FILE=/var/lib/svscan/dnscache/env/FORWARDONLY DNS_CACHE_SERVER_FILE=/var/lib/svscan/dnscache/root/servers/@ PROXY_CONF_FILE=/opt/beabloo/data/proxy/rabbit.conf X_CONFIGURATION_FILE=/home/beabloo/.xprofile # -------------------------------------------------------------------------------------------- # Functions # -------------------------------------------------------------------------------------------- saveGeneratedFile(){ cp -p ${GENERATED_CHANGES_LIST} ${CHANGES_LIST} } applyChangesForNetworkInterface(){ NEW_IP=`grep "^network_ip" ${CHANGES_LIST} | cut -d "=" -f 2` NEW_MASK=`grep "^network_mask" ${CHANGES_LIST} | cut -d "=" -f 2` NEW_GW=`grep "^network_gw" ${CHANGES_LIST} | cut -d "=" -f 2` if [ -n "${NEW_IP}" ] ; then NEW_INTERFACE_DEFINITION="# NEW INTERFACE eth0:2 CONFIGURED `date` auto eth0:2 iface eth0:2 inet static address ${NEW_IP} netmask ${NEW_MASK} gateway ${NEW_GW}" echo -e "`cat ${DEFAULT_INTERFACES_FILE}`\n\n${NEW_INTERFACE_DEFINITION}" > ${INTERFACES_FILE} else cat ${DEFAULT_INTERFACES_FILE} > ${INTERFACES_FILE} fi } applyChangesForDNS(){ DNS_IP_FWD=`grep "^network_dnsforwarding" ${CHANGES_LIST} | cut -d "=" -f 2` if [ -n "${DNS_IP_FWD}" ] ; then echo "${DNS_IP_FWD}" > ${DNS_CACHE_SERVER_FILE} echo "1" > ${DNS_CACHE_FWD_FILE} else if [ -f ${DNS_CACHE_FWD_FILE} ] ; then rm ${DNS_CACHE_FWD_FILE} fi echo -e "198.41.0.4\n128.9.0.107\n192.33.4.12\n128.8.10.90\n192.203.230.10\n192.5.5.241\n192.112.36.4\n128.63.2.53\n192.36.148.17\n198.41.0.10\n193.0.14.129\n198.32.64.12\n202.12.27.33" > ${DNS_CACHE_SERVER_FILE} fi } applyChangesForProxy(){ PROXY_HOST=`grep "^network_proxy_host" ${CHANGES_LIST} | cut -d "=" -f 2` PROXY_PORT=`grep "^network_proxy_port" ${CHANGES_LIST} | cut -d "=" -f 2` cat ${PROXY_CONF_FILE} | sed "s/^proxyhost=.*$/proxyhost=${PROXY_HOST}/" | sed "s/^proxyport=.*$/proxyport=${PROXY_PORT}/" > ${PROXY_CONF_FILE}.new mv ${PROXY_CONF_FILE}.new ${PROXY_CONF_FILE} } applyChangesForDisplay(){ export DISPLAY=:0 RESOLUTION=`grep "^display.resolution" ${CHANGES_LIST} | cut -d "=" -f 2` if [ -n "${RESOLUTION}" ] ; then RESOLUTION="-s ${RESOLUTION}" fi ORIENTATION=`grep "^display_orientation" ${CHANGES_LIST} | cut -d "=" -f 2` xrandr -q | grep " connected " | grep --silent normal && ORIENTATION_POSSIBLE=true || ORIENTATION_POSSIBLE=false if ${ORIENTATION_POSSIBLE} ; then case ${ORIENTATION} in normal) ORIENTATION="--orientation normal" ;; inverted) ORIENTATION="--orientation inverted" ;; left) ORIENTATION="--orientation left" ;; right) ORIENTATION="--orientation right" ;; esac else ORIENTATION="" fi REFLECTION=`grep "^display.reflection" ${CHANGES_LIST} | cut -d "=" -f 2` if [ "${REFLECTION}" = "normal" ] ; then REFLECTION="" else xrandr -q | grep " connected " | grep --silent axis && AXIS_POSSIBLE=true || AXIS_POSSIBLE=false if ${AXIS_POSSIBLE} ; then REFLECTION="-x" else REFLECTION="" fi fi cat /dev/null > ${X_CONFIGURATION_FILE} if [ -n "${RESOLUTION}" ] ; then echo "/usr/bin/xrandr ${RESOLUTION}" >> ${X_CONFIGURATION_FILE} fi if [ -n "${ORIENTATION}" ] ; then echo "/usr/bin/xrandr ${ORIENTATION}" >> ${X_CONFIGURATION_FILE} fi if [ -n "${REFLECTION}" ] ; then echo "/usr/bin/xrandr ${REFLECTION}" >> ${X_CONFIGURATION_FILE} fi # CHECK IF FILE IS EMPTY if [ ! -s ${X_CONFIGURATION_FILE} ] ; then rm ${X_CONFIGURATION_FILE} else chown beabloo:beabloo ${X_CONFIGURATION_FILE} fi } applyChangesForSound(){ ACTION=`grep "^sound_output" ${CHANGES_LIST} | cut -d "=" -f 2` if [ "${ACTION}" = "active" ] ; then su beabloo -c "/usr/bin/gconftool-2 --type bool --set /desktop/gnome/sound/event_sounds true" else su beabloo -c "/usr/bin/gconftool-2 --type bool --set /desktop/gnome/sound/event_sounds false" fi } # -------------------------------------------------------------------------------------------- # Main # -------------------------------------------------------------------------------------------- saveGeneratedFile applyChangesForNetworkInterface applyChangesForDNS applyChangesForProxy applyChangesForDisplay applyChangesForSound