#! /bin/sh me=`basename $0` export TWINTACT_ADDRESS="169.254.0.2" export TWINTACT_BIND="169.254.0.1" export TWINTACT_PORT="2222" export TWINTACT_SHARE="/usr/local/share/twintact" OMAPTTPATH="/usr/local/libexec/omap-tt" OMAPTTBIN="omap-tt" OMAPTT="$OMAPTTPATH/$OMAPTTBIN" LOG='/dev/null' DEBUGFILE="twintact.log" if [ -n "${DEBUG_TT_UDEV}" ]; then LOG="/tmp/$DEBUGFILE" if [ "${DEBUG_TT_UDEV}" == "trace" ]; then LOG="$LOG.$$" else touch -d "10 seconds ago" "$LOG.tmp" [ "$LOG.tmp" -nt "$LOG" ] && rm -f "$LOG" rm -f "$LOG.tmp" fi ( echo "-`date`---------------------------------"$$ echo env env echo "-`date`---------------------------------"$$ echo set set echo "-`date`---------------------------------"$$ ) >>$LOG fi MODE="$1" case "${ACTION}_${MODE}" in add_omap) lockme="/var/run/$me.lck" logger -i -p kern.debug -t TwinTact "Lock sur le TwinTact" # On ne désire pas être exécuté plusieurs fois d'un coup if lockfile -r 0 -s 1 -l 20 "$lockme" ; then if [ -x "$OMAPTT" ]; then logger -i -p kern.info -t TwinTact "Connection TT OMAP" cd "$OMAPTTPATH" export PATH="$OMAPTTPATH:$PATH" $OMAPTTBIN hook.bin >>$LOG 2>&1 logger -i -p kern.info -t TwinTact "Transfert avec le TwinTact terminé (ret=$?)" else logger -i -p kern.info -t TwinTact "Connection TT OMAP disponible mais TT OMAP n'est pas installé" fi fi ;; remove_omap) logger -i -p kern.info -t TwinTact "TT OMAP déconnecté" ;; add_synchro_net) if [ "$PHYSDEVDRIVER" == "zaurus" ]; then ( # Attendre que NetworkManager fasse sa sauce s'il est chargé pgrep NetworkManager >/dev/null 2>&1 && sleep 1 # Mettre à jour le fichier host pour désigner le twintact if grep -Eq "^${TWINTACT_ADDRESS}.*twintact" /etc/hosts ; then grep -Ev "^${TWINTACT_ADDRESS}.*twintact" /etc/hosts >/etc/hosts.$me-tmp else cp -a /etc/hosts /etc/hosts.$me-tmp fi echo -e "${TWINTACT_ADDRESS}\ttwintact" >>/etc/hosts.$me-tmp mv -f /etc/hosts /etc/hosts.$me-bak mv -f /etc/hosts.$me-tmp /etc/hosts # On redirige plutôt la sortie vers /dev/null à cause de selinux /sbin/ifconfig $INTERFACE $TWINTACT_BIND # Si la clé privée spécifiée existe l'utiliser pour ce connecter # au TwinTact pour exécuter quelques commandes utiles if [ -e "${TWINTACT_SHARE}/id_dsa" -a -x "${TWINTACT_SHARE}/synchro_net.sh" ]; then "${TWINTACT_SHARE}/synchro_net.sh" >>$LOG 2>&1 [ "$?" -eq 0 ] && logger -i -p kern.info -t TwinTact "TwinTact synchro_net effectuée (ret=$?)" fi logger -i -p kern.info -t TwinTact "TwinTact disponible à l'adresse ${TWINTACT_ADDRESS} sur $INTERFACE" ) & else logger -i -p kern.debug -t TwinTact "TwinTact, rien à ajouter pour $PHYSDEVDRIVER" fi ;; remove_synchro_net) if [ "$PHYSDEVDRIVER" == "zaurus" ]; then /sbin/ifconfig $INTERFACE down [ -s "/etc/hosts.$me-bak" ] && mv -f "/etc/hosts.$me-bak" /etc/hosts logger -i -p kern.info -t TwinTact "TwinTact sur $INTERFACE déconnecté" else logger -i -p kern.debug -t TwinTact "TwinTact, rien à enlever pour $PHYSDEVDRIVER" fi ;; *) command='' [ -n "$*" ] && command=" avec l'action '$ACTION' pour le mode '$MODE'" logger -i -p kern.notice -t TwinTact "TwinTact, rien à faire$command" ;; esac exit 0