etc/security/pam_mount.conf.xml 0000644 0000000 0000000 00000003171 13133376355 015656 0 ustar root root
etc/kde4/kdm/Xsetup 0000755 0000000 0000000 00000005464 13134115165 013160 0 ustar root root #! /bin/bash
# Xsetup - run as root before the login dialog appears
#xconsole -geometry 480x130-0-0 -notify -verbose -fn fixed -exitOnFail -file /dev/xconsole &
eval `horizon-getent config names -b`
DOMAIN=`dnsdomainname`
MYNAME=`echo ${DISPLAY} | cut -d: -f1 | sed s/\.${DOMAIN}//`
if [ -n "${MYNAME}" -a "${MYNAME}" != "localhost" ]; then
echo "abuledusd POWERBTN1 end" | telnet ${MYNAME} 10001
fi
if [ -x /usr/bin/getltscfg -a -f /opt/ltsp/i386/etc/lts.conf ]; then
xkbmodel=`/usr/bin/getltscfg -n ${MYNAME} -c /opt/ltsp/i386/etc/lts.conf XKBMODEL`
xkblayout=`/usr/bin/getltscfg -n ${MYNAME} -c /opt/ltsp/i386/etc/lts.conf XKBLAYOUT`
COMPUTERARCH=`/usr/bin/getltscfg -n ${MYNAME} -c /opt/ltsp/i386/etc/lts.conf COMPUTERARCH`
if [ "${COMPUTERARCH}" = "ltsp44" -a "${xkbmodel}" != "" -a "${xkblayout}" != "" ]; then
setxkbmap -rules xorg -model ${xkbmodel} -layout ${xkblayout}
setxkbmap -rules xorg -model pc104 -layout ${xkblayout}
fi
if [ "${COMPUTERARCH}" = "ltsp5" -a "${xkbmodel}" != "" -a "${xkblayout}" != "" ]; then
setxkbmap -rules xorg -model ${xkbmodel} -layout ${xkblayout}
setxkbmap -rules xorg -model pc104 -layout ${xkblayout}
fi
fi
unset DOMAIN
unset MYNAME
xhost +localhost
# tant qu'un fichier "flag" existe on affiche le message de synchronisation
# en cours, ce fichier est gere par le script horizon-pam_session via pam_exec
HZN_PROGRESSFLAG=`ls -1 /var/tmp/horizon-pam_session_*.flag | head -n1`
HZN_PROFILESYNC=`echo ${HZN_PROGRESSFLAG} | sed s/".*pam_session_"/""/ | sed s/"\.flag"/""/`
while [[ -f ${HZN_PROGRESSFLAG} ]] ; do echo "ok" ; done | zenity --progress --pulsate --title="Synchronisation en cours" --timeout="600" --text="Synchronisation du profil de l'utilisateur (${HZN_PROFILESYNC}) en cours ... veuillez patienter" --auto-close --no-cancel
if [ -f /etc/abuledu/clientlourd -o -f /etc/nouva/clientlourd ]; then
if [ -d /home/${GROUPS_NAME} ]; then
#note: surtout pas de rm -rf, si le repertoire est deja monte on risque de tout supprimer
#note2: et si par hasard ce script se lance sur le serveur il ne faut surtout pas faire de -rf !!!
#note3: par contre si ce repertoire existe, sshfs ne pourra pas monter ce repertoire et le home/classes ne sera
# donc pas accessible
rmdir /home/${GROUPS_NAME} || true
#si le repertoire n etait pas vide on l'archive
if [ -d /home/${GROUPS_NAME} ]; then
LADATE=`date "+%Y-%m-%d-%H-%M"`
mv /home/${GROUPS_NAME} /home/${GROUPS_NAME}.${LADATE}
fi
fi
fi
#cf https://redmine.ryxeo.com/issues/3950 pour borne web par exemple
if [ -d /root/horizon-startx-special.d ]; then
for script in /root/horizon-startx-special.d/*
do
. ${script}
done
fi
#cf https://redmine.ryxeo.com/issues/3950 pour borne web par exemple
if [ -f /root/horizon-startx-special ]; then
/root/horizon-startx-special
exit 1
fi
etc/kde4/kdm/Xreset 0000755 0000000 0000000 00000002647 13134114454 013142 0 ustar root root #!/bin/bash
# Xreset - run as root after session exits
# Reassign ownership of the console to root, this should disallow
# assignment of console output to any random users's xterm. See Xstartup.
#
#chown root /dev/console
#chmod 622 /dev/console
if grep -qs '^use-sessreg' /etc/kde4/kdm/kdm.options && \
which sessreg > /dev/null 2>&1; then
sessreg -d -l "$DISPLAY" -u /var/run/utmp -h "`echo $DISPLAY | cut -d: -f1`" "$USER"
fi
# #erics / ryxeo -> on stoppe tous les processus de l'utilisateur
# #pour entre autre que pam_mount puisse demonter ses partages
# eval export ADMIN_TITLE="Administrateur"
# export USAGERS_TITLE="Utilisateurs"
# export GROUPS_TITLE="Classes"
# export GROUP_TITLE="Classe"
# export GROUPS_NAME="classes"
# export USAGERS_GROUP="utilisateurs"
# export ADMINS_TITLE="Administrateurs"
# export ADMINS_GROUP="administrateurs"
# export USAGER_TITLE="Utilisateur"
# pkill -u "${USER}" || true
# pkill -9 -u "${USER}" || true
# umount /home/${USAGERS_GROUP}/${USER}/.gvfs || true
# umount /home/${USAGERS_GROUP}/${USER}/.gvfs || true
# umount /home/${USAGERS_GROUP}/${USER} || true
# umount /home/${USAGERS_GROUP}/${USER} || true
# umount /home/classes || true
# umount /home/classes || true
# #fin erics / ryxeo
# #fix #4552 on supprime de /tmp tous les fichiers & repertoires qui appartiennent a l'utilisateur
# USERID=`id -u ${USER}`
# find /tmp/ -uid "${USERID}" -exec rm -rf {} \;
# #service kdm restart
etc/X11/Xsession.d/10horizon-pam_mount 0000644 0001750 0001750 00000003064 13134115000 017106 0 ustar guy.larrieu #ryxeo / vu que meme si pam_mount plante kdm ouvre une session
#on est un peu oblige de ruser !
[ -x /usr/bin/xhost ] && [ -x /usr/bin/id ] &&
xhost +si:localuser:`id -un` > /dev/null
LETEST=`mount | grep "/${USER}" | grep sshfs` || true
if [ -z "${LETEST}" ]; then
logger -t "RYXEO (${0})" -s "impossible de monter le partage pam_mount de ${USER}"
if [ -x /usr/bin/zenity ]; then
zenity --error --text "Impossible de monter votre répertoire personnel.\nRedémarrez votre poste et si le problème persiste,\ncontactez votre administrateur système."
fi
exit -1
fi
LETESTGRP=`mount | grep "/home/groupes" | grep "cifs"` || true
LETESTCLASSES=`mount | grep "/home/classes" | grep "cifs"` || true
if [ -z "${LETESTGRP}" -a -z "${LETESTCLASSES}" ]; then
logger -t "RYXEO (${0})" -s "impossible de monter le partage des groupes de ${USER}"
if [ -x /usr/bin/zenity ]; then
zenity --error --text "Impossible de monter le répertoire d'accès aux groupes.\nRedémarrez votre poste et si le problème persiste,\ncontactez votre administrateur système."
fi
exit -1
fi
# tant que le fichier "flag" existe on affiche le message de synchronisation
# en cours, ce fichier est gere par le script horizon-pam_session via pam_exec
HZN_PROGRESSFLAG="/var/tmp/horizon-pam_session_$USER.flag"
if [ -f ${HZN_PROGRESSFLAG} ]; then
while [[ -f ${HZN_PROGRESSFLAG} ]] ; do echo "ok" ; done | zenity --progress --pulsate --title="Synchronisation en cours" --timeout="600" --text="Synchronisation de votre profil en cours ... veuillez patienter" --auto-close --no-cancel
fi
etc/pam.d/common-session 0000644 0000000 0000000 00000002303 13133401140 014206 0 ustar root root #
# /etc/pam.d/common-session - session-related modules common to all services
#
# here are the per-package modules (the "Primary" block)
session [default=1] pam_permit.so
# here's the fallback if no module succeeds
session requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session required pam_permit.so
# and here are more per-package modules (the "Additional" block)
session required pam_unix.so
session [default=ignore success=1] pam_succeed_if.so uid < 500 quiet
session optional pam_systemd.so
session optional pam_ldap.so
#a la fermture de session le script doit etre lance AVANT pam_mount qui demonte le repetoire
session optional pam_exec.so log=/tmp/pam.log /usr/local/bin/horizon-pam_session.sh -o before_mount
session optional pam_mount.so
#et a l'ouverture de session il faut le lancer APRES que pam_mount ait rendu le repertoire accessible
session optional pam_exec.so log=/tmp/pam.log /usr/local/bin/horizon-pam_session.sh -o after_mount
# session optional pam_ck_connector.so nox11
# end of pam-auth-update config
usr/local/bin/horizon-pam_session.sh 0000755 0000000 0000000 00000011700 13134147151 016573 0 ustar root root #!/bin/bash
# script lancé par pam_exec pour faire une synchro locale des profils du serveur pour eviter les bugs de microcoupure reseau
# qu'on avait lorsque le home était monté en sshfs
# appellé par /etc/pam.d/common-session
#
# exemple a ajouter au fichier pam.d/common-session
#
#
# session optional pam_ldap.so
# #a la fermture de session le script doit etre lance AVANT pam_mount qui demonte le repetoire
# session optional pam_exec.so log=/tmp/pam.log /usr/local/bin/horizon-pam_session.sh -o before_mount
# session optional pam_mount.so
# #et a l'ouverture de session il faut le lancer APRES que pam_mount ait rendu le repertoire accessible
# session optional pam_exec.so log=/tmp/pam.log /usr/local/bin/horizon-pam_session.sh -o after_mount
#
#
# pour les autres details cf http://redmine.abuledu.org/issues/1789
#
# Eric Seigne 2017 / GNU/GPLv3
#
#
export LC_ALL=C
#pour connaitre le homedir de l'utilisateur ...
HZN_HOMEDIR=`getent passwd $PAM_USER | cut -d ":" -f6`
HZN_PROFILEDIRTEMP="/home/profiletemp"
HZN_PROGRESSFLAG="/var/tmp/horizon-pam_session_$PAM_USER.flag"
while [[ $# -gt 1 ]]
do
key="$1"
case $key in
-o)
ABOUTPAMMOUNT="$2"
shift
;;
*)
;;
esac
shift
done
#a l'ouverture de la session on ne sait pas si on est AVANT pam_mount ou apres ...
#alors on utilise la variable ABOUTPAMMOUNT pour savoir ...
if [ -z "$PAM_TYPE" -o "$PAM_TYPE" == "open_session" ]; then
if [ "${ABOUTPAMMOUNT}" == "before_mount" ]; then
exit 0
fi
echo "*******************************************************"
echo "********************** LOGIN **************************"
sleep 2
#si pam_mount n'est pas encore passé on quitte
TESTMNT=`mount | grep "${HZN_PROFILEDIRTEMP}/${PAM_USER}"`
if [ -z "${TESTMNT}" ]; then
echo " montage sshfs pas encore dispo pour $PAM_USER..."
exit
fi
#si le repertoire n'existe pas
if [ ! -d $HZN_HOMEDIR ]; then
mkdir -p $HZN_HOMEDIR
fi
chown $PAM_USER $HZN_HOMEDIR
# 1.espace disque saturé -> on pourrait essayer de supprimer les vieux profils locaux s'il y en a ...
echo " nettoyage des vieux profils locaux de plus de 28 jours ..."
for localprofile in `find $HZN_PROFILEDIRTEMP/*/.horizon-last_session -atime +28`
do
localprofileparentdir=${localprofile%.horizon-last_session}
echo -n " -> ${localprofileparentdir} ..."
if [ ! -z "${localprofileparentdir}" ]; then
#on s'assure que ce n'est pas le montage reseau ...
TESTMNTPARENT=`mount | grep "${localprofileparentdir}"`
if [ -z "${TESTMNTPARENT}" ]; then
echo " est bien un espace local, suppression en cours"
rm -rf ${localprofileparentdir}
else
echo "erreur il semblerait que ça soit un montage réseau"
fi
fi
done
#si le montage est dispo
if [ -d $HZN_PROFILEDIRTEMP/$PAM_USER ]; then
echo -n " synchro en cours du serveur vers le disque local ... "
echo "start" > $HZN_PROGRESSFLAG
nohup /usr/local/bin/horizon-rsync_profile.sh -um mount -f $HZN_PROGRESSFLAG -u $PAM_USER -s $HZN_PROFILEDIRTEMP/$PAM_USER -d $HZN_HOMEDIR &
#rsync -a $HZN_PROFILEDIRTEMP/$PAM_USER/.[^.]* $HZN_HOMEDIR/
#que faire en cas d'erreur de synchro, par exemple espace disque saturé ?
if [ "$?" == "0" ]; then
#a priori aucun pb de rsync -> on touch un fichier_flag
touch $HZN_HOMEDIR/.horizon-last_session
chown $PAM_USER $HZN_HOMEDIR/.horizon-last_session
echo " [ok]"
else
#des pb de rsync ... par contre on ne sais pas lesquels, on va donc essayer de gerer les cas les plus
#classiques -> TODO
echo " [err]"
fi
fi
echo "****************** END LOGIN **************************"
echo "*******************************************************"
fi
#a la fermeture de la session on est toujours apres le umount et donc on n'a plus acces au repertoire de stockage
# -> solution de définir une commande spéciale dans pam_mount.xml pour le umount qui est en fait un script qui fait
# la synchro puis le umount réel
if [ "$PAM_TYPE" == "close_session" ]
then
if [ "${ABOUTPAMMOUNT}" == "after_mount" ]; then
exit 0
fi
echo "*******************************************************"
echo "********************** LOGOUT *************************"
#verifier que le repertoire du serveur est toujours monte
TESTMNT=`mount | grep "${HZN_PROFILEDIRTEMP}/${PAM_USER}"`
echo "résultat du test du montage ... $TESTMNT"
if [ -z "${TESTMNT}" ]; then
echo " il semblerait que le montage soit démonté, on ne sauvegarde donc pas"
echo " les modifications locales ..."
else
echo " il semblerait que le montage soit accessible ... sauvegarde en cours"
# rsync -rlptoD $HZN_HOMEDIR/.[^.]* $HZN_PROFILEDIRTEMP/$PAM_USER/
nohup /usr/local/bin/horizon-rsync_profile.sh -um umount -f $HZN_PROGRESSFLAG -u $PAM_USER -d $HZN_PROFILEDIRTEMP/$PAM_USER -s $HZN_HOMEDIR &
fi
echo "****************** END LOGOUT *************************"
echo "*******************************************************"
fi
usr/local/bin/horizon-rsync_profile.sh 0000755 0000000 0000000 00000007117 13134156705 017145 0 ustar root root #!/bin/bash
#script special pour synchoniser des profils entre deux repertoires
#l'un des deux pouvant être un point de montage ...
#pratique pour faire une synchro entre client et serveur
HZN_RSYNCEXCLUDEFILE="/usr/share/horizon/horizon-pam_session.exclude"
if [ -f /usr/share/horizon/horizon-pam_session.exclude.local ]; then
HZN_RSYNCEXCLUDEFILE="/usr/share/horizon/horizon-pam_session.exclude.local"
fi
while [[ $# -gt 1 ]]
do
key="$1"
case $key in
-f)
FLAGFILE="$2"
shift
;;
-u)
PAM_USER="$2"
shift
;;
-s)
SRCDIR="$2"
shift
;;
-d)
DSTDIR="$2"
shift
;;
-um)
UMOUNT="$2"
shift
;;
*)
;;
esac
shift
done
touch ${FLAGFILE}
#verifier a l'ouverture de session que le repertoire source est bien un montage reseau
TESTMNT=""
if [ "${UMOUNT}" != "umount" ]; then
TESTMNT=`mount | grep "${SRCDIR}"`
else
#et a la fermture de session idem
TESTMNT=`mount | grep "${DSTDIR}"`
fi
if [ -z "${TESTMNT}" ]; then
echo " montage sshfs absent ... exit"
exit -1
else
echo " D: on lance rsync --exclude-from=${HZN_RSYNCEXCLUDEFILE} -rlptoD ${SRCDIR}/.[^.]* ${DSTDIR}/"
rsync --exclude-from=${HZN_RSYNCEXCLUDEFILE} -rlptoD ${SRCDIR}/.[^.]* ${DSTDIR}/
if [ "$?" == "0" ]; then
#a priori aucun pb de rsync -> on touch un fichier_flag
touch $DSTDIR/.horizon-last_session
chown $PAM_USER $DSTDIR/.horizon-last_session
echo " [ok]"
#creation des liens symboliques pour l'accès aux documents uniquement si on est en ouverture de session
#donc si on est en phase ou il faut faire le umount ... pas de symlink !
if [ "${UMOUNT}" != "umount" ]; then
cd $DSTDIR
if [ ! -L "Serveur_de_fichiers" -a ! -e "Serveur_de_fichiers" ]; then
ln -s "$SRCDIR" "Serveur_de_fichiers"
echo " - Serveur_de_fichiers -> $DSTDIR"
fi
for ENTRY in Bureau Documents Téléchargements Images Musique leterrier Sankore "Sankore 3.1" .thunderbird
do
(
cd $DSTDIR
if [ ! -L "${ENTRY}" -a ! -e "${ENTRY}" -a -e "$SRCDIR/${ENTRY}" ]; then
ln -s "$SRCDIR/${ENTRY}" "$DSTDIR/${ENTRY}"
echo " - $DSTDIR/${ENTRY} -> $SRCDIR/${ENTRY}"
fi
)
done
fi
#bug / cas particulier du .ssh/known_hosts qui a peut etre l'identité d'un autre serveur abuledu et donc il
#faut le supprimer
for serveur in 192.168.0.1 servecole
do
ssh-keygen -f "$SRCDIR/.ssh/known_hosts" -R ${serveur}
ssh-keygen -f "$DSTDIR/.ssh/known_hosts" -R ${serveur}
done
else
true
#des pb de rsync ... par contre on ne sais pas lesquels, on va donc essayer de gerer les cas les plus
#classiques -> TODO
echo " [err]"
fi
if [ "${UMOUNT}" == "umount" ]; then
#mais en phase de umount il faut absolument propager les suppressions "locales" vers le serveur ...
#c'est meme critique pour des appli comme firefox ...
for ENTRY in .config .gconf .mozilla .pki .firefox .kde .libreoffice .ssh
do
echo "on supprime les fichiers pour ${ENTRY} ... ${SRCDIR}/${ENTRY}/ -> ${DSTDIR}/${ENTRY}/"
if [ -d "${SRCDIR}/${ENTRY}" -a -d "${DSTDIR}/${ENTRY}" ]; then
rsync --delete -rvlptoD "${SRCDIR}/${ENTRY}/" "${DSTDIR}/${ENTRY}/"
fi
done
umount ${DSTDIR}
#et on verifie si possible que le umount s'est bien fait ...
sleep 2
TESTMNT=""
if [ "${UMOUNT}" != "umount" ]; then
TESTMNT=`mount | grep "${SRCDIR}"`
else
#et a la fermture de session idem
TESTMNT=`mount | grep "${DSTDIR}"`
fi
if [ ! -z "${TESTMNT}" ]; then
umount ${DSTDIR}
fi
fi
if [ -f ${FLAGFILE} ]; then
echo "on efface ${FLAGFILE} ..."
rm ${FLAGFILE}
fi
fi
usr/share/horizon/horizon-pam_session.exclude 0000644 0000000 0000000 00000010177 13134154426 020551 0 ustar root root #
#fichier d'exclusion des trucs a ne pas synchroniser lors des ouvertures / fermetures de session
#
# si vous voulez faire une personnalisation, creez un fichier /usr/share/horizon/horizon-pam_session.exclude.local
# qui sera prioritaire sur ce fichier usine
#
#list partial from https://github.com/rubo77/rsync-homedir-excludes/blob/master/rsync-homedir-excludes.txt
.gvfs
.local/share/gvfs-metadata
/.Private
# Session-specific:
/.dbus
/.cache
/.Trash
.Trash-1*
.local/share/Trash
/Trash
# Cached info about audio CDs:
.cddb
# Cached packages lists:
.aptitude
# Node Package Manager cache
.npm
#Flash-specific:
# Cache for flash, maybe others?
.adobe
# except for Flash persistence, there is no reason to keep this
.macromedia
# Contains errors from the current graphical session
.xsession-errors
.wayland-errors
# Recently used files
.local/share/RecentDocuments
.recently-used
.recently-used.xbel
.thumbnails
.thumb
Thumbs.db
.DS_Store
.localised
.bash_history
.CFUserTextEncoding
# Session-specific
.Xauthority
.ICEauthority
.gksu.lock
.pulse
.pulse-cookie
.esd_auth
# Recent documents on KDE
.kde/share/apps/RecentDocuments
.kde4/share/apps/RecentDocuments
# Contains a history of the Klipper clipboard (KDE)
.kde/share/apps/klipper
.kde4/share/apps/klipper
# You will loose saved scrolling positions of PDFs
.kde/share/apps/okular/docdata
.kde/share/apps/gwenview/recentfolders
.kde4/share/apps/okular/docdata
.kde4/share/apps/gwenview/recentfolders
# Cached other users' profile pics
.kde/share/apps/kmess/displaypics
.kde4/share/apps/kmess/displaypics
# Cached emoticons of others
.kde/share/apps/kmess/customemoticons
.kde4/share/apps/kmess/customemoticons
#Firefox-specific (see also Profile folder):
.mozilla/firefox/*/Cache
# in case Fx crashes dumps will be stored in this
.mozilla/firefox/*/minidumps
# session-specific
.mozilla/firefox/*/.parentlock
# phishing database, recreated
.mozilla/firefox/*/urlclassifier3.sqlite
# blacklisted extensions
.mozilla/firefox/*/blocklist.xml
# extension database, recreated on startup
.mozilla/firefox/*/extensions.sqlite
.mozilla/firefox/*/extensions.sqlite-journal
.mozilla/firefox/*/extensions.rdf
.mozilla/firefox/*/extensions.ini
.mozilla/firefox/*/extensions.cache
# cached UI data, recreated
.mozilla/firefox/*/XUL.mfasl
.mozilla/firefox/*/XPC.mfasl
.mozilla/firefox/*/xpti.dat
.mozilla/firefox/*/compreg.dat
# cached plugin data, recreated
.mozilla/firefox/*/pluginreg.dat
.mozilla/seamonkey/*/Cache
# in case Fx crashes dumps will be stored in this
.mozilla/seamonkey/*/minidumps
# session-specific
.mozilla/seamonkey/*/.parentlock
# blacklisted extensions
.mozilla/seamonkey/*/blocklist.xml
# extension database, recreated on startup
.mozilla/seamonkey/*/extensions.sqlite
.mozilla/seamonkey/*/extensions.rdf
.mozilla/seamonkey/*/extensions.ini
# cached UI data, recreated
.mozilla/seamonkey/*/xpti.dat
.mozilla/seamonkey/*/compreg.dat
# cached plugin data, recreated
.mozilla/seamonkey/*/pluginreg.dat
# Thunderbird Cache in your profile folder
.thunderbird
#Opera-specific (related question on Superuser.com: Is documentation available on files and directories in the Opera profile folder?):
.opera/temporary_downloads
.opera/cache
.opera/thumbnails
.opera/opcache
.opera/icons
.opera/application_cache
.opera/widgets/*/cache
.opera/lock
# Keychain dir (manage SSH and GPG keys, front-end to ssh-agent and ssh-add)
/.keychain
#GnuPG:
.gnupg/rnd
.gnupg/random_seed
.gnupg/.#*
.gnupg/*.lock
.gnupg/gpg-agent-info-*
#Google Chrome:
.config/google-chrome/Default/Local Storage
.config/google-chrome/Default/Session Storage
.config/google-chrome/Default/Application Cache
.config/google-chrome/Default/History Index *
#Chromium:
.config/chromium/Default/Local Storage
.config/chromium/Default/Session Storage
.config/chromium/Default/Application Cache
.config/chromium/Default/History Index *
#Local repositories (added by errantlinguist on 2015-04-13):
.gradle/caches
/.m2/repository
#indexer
.local/share/baloo
.local/share/zeitgeist
.local/share/akonadi
# Pidgin
.pulse/icons
# Cached applets
.guayadeque/cache.db
.java/deployment/cache
.icedteaplugin
.icedtea
.gnome2/epiphany/favicon_cache
# other temporary files
nohup.out
etc/init.d/horizon-autoboot 0000755 0000000 0000000 00000011701 13134155304 014763 0 ustar root root #!/bin/bash
# Start or stop Horizon/RyXéo autoboot system
#
# Eric Seigne GNU/GPL v2
# based on sendmail's init.d script
### BEGIN INIT INFO
# Provides: horizon autoboot process
# Required-Start: $local_fs $remote_fs $syslog $named $network $time $samba $winbind
# Required-Stop: $local_fs $remote_fs $syslog $named $network $samba $winbind
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop the horizon autoboot process
# Description: horizon autoboot process runs scripts provided by abuledu|horizon|nouva server on fat clients
### END INIT INFO
PATH=/bin:/usr/bin:/sbin:/usr/sbin
NAME=HorizonAutoBoot
HZNSCRIPTBOOT=/var/tmp/horizon-boot
HZNSCRIPTHALT=/var/tmp/horizon-halt
if [ -d /etc/abuledu ]; then
SERVER="servecole"
GRPNAME="classes"
elif [ -d /etc/nouva ]; then
SERVER="serveur"
GRPNAME="groupes"
fi
LOGFILE="/var/log/horizon-autoboot.log"
#. /lib/lsb/init-functions
. /etc/lsb-release
#usplash_write "VERBOSE on"
case "$1" in
start)
log_daemon_msg "Starting Horizon AutoBoot process" horizon
#usplash_write "TEXT Starting Horizon AutoBoot process"
#fix #3314 -> a ameliorer -> oui cf #4543, fait en janvier 2016
TESTMOUNT=`mount | grep home/utilisateurs | wc -l`
TESTMOUNTAMD=`mount | grep home/administrateurs | wc -l`
if [ "${TESTMOUNT}" == "0" -a "${TESTMOUNTAMD}" == "0" ]; then
rm -rf /home/administrateurs
rm -rf /home/utilisateurs
rm -rf /home/${GRPNAME}
mkdir /home/administrateurs
mkdir /home/utilisateurs
mkdir /home/${GRPNAME}
else
echo "Can't clean up home/utilisateurs or home/administrateurs someting is mounted"
echo " ${TESTMOUNT}"
echo " ${TESTMOUNTADM}"
exit 1
fi
TESTMOUNTPROFILES=`mount | grep home/profiletemp | wc -l`
if [ "${TESTMOUNTPROFILES}" == "0" ]; then
rm -rf /home/profiletemp
mkdir /home/profiletemp
else
echo "Can't clean up profile temp dir someting is mounted"
echo " ${TESTMOUNTPROFILES}"
exit 1
fi
#fix #3391 vider la file d'impression de cups au boot
service cups stop
rm /var/spool/cups/*
service cups start
#avant tout on verifie que ce poste est fixe sur le reseau
hname=`hostname`
myip=`LC_ALL=C ifconfig eth0 2>&1 | perl -ne'/inet addr:(\S+)/ and print $1'`
mymac=`LC_ALL=C ifconfig eth0 2>&1 | perl -ne'/HWaddr (\S+)/ and print $1'`
mydnsname=`LC_ALL=C host ${myip} 2>&1 | sed s/".* name pointer "/""/ | grep -E "abuledu|nouva"` || true
myshortname=`echo ${mydnsname} | cut -d "." -f1` || true
if [ "X${mydnsname}" != "X" -a "X${myshortname}" != "X" ]; then
hostname ${myshortname}
echo "${myshortname}" > /etc/hostname
fictemp=`tempfile`
cat /etc/hosts | grep -v localhost > ${fictemp}
echo "127.0.0.1 ${mydnsname} ${myshortname} localhost" >> ${fictemp}
cat ${fictemp} > /etc/hosts
rm ${fictemp}
else
#usplash_write "TIMEOUT 1" || true
clear
echo ""
echo ""
echo "Attention: ce poste lourd n'est pas encore connu sur ce réseau"
echo "vous devez donc aller sur webadmin pour fixer ce poste et"
echo "redémarrez le ensuite pour qu'il soit totalement fonctionnel"
echo ""
echo ""
echo "Informations techniques:"
echo " Adresse IP : ${myip}"
echo " Adresse MAC: ${mymac}"
echo ""
echo ""
#echo -n "Voulez-vous rebooter ? [O/n] "
#read a
#if [ "$a" = "O" -o "$a" = "o" -o "X$a" = "X" ]; then
# reboot
#fi
fi
log_daemon_msg "Mise à jour du poste en cours ..." horizon
#usplash_write "TEXT Mise à jour du poste en cours ..."
#recup du script a lancer automagiquement au boot
wget http://${SERVER}/horizon-apt/boot.php?distrib=${DISTRIB_CODENAME} -O ${HZNSCRIPTBOOT} -q
if [ -s "${HZNSCRIPTBOOT}" ]; then
date >> ${LOGFILE}
bash ${HZNSCRIPTBOOT} 2>> ${LOGFILE} | tee -a ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
if [ "${?}" = "0" ]; then
log_end_msg 0
else
log_end_msg 1
fi
fi
#upload logs to server
curl -F "upfile=@${LOGFILE};filename=autoboot" http://${SERVER}/horizon-apt/remotelog.php
;;
stop)
log_daemon_msg "Starting Horizon AutoBoot shutdown process" horizon
#usplash_write "TEXT Starting Horizon AutoBoot shutdown process ..."
#recup du script a lancer automagiquement au halt
wget http://${SERVER}/horizon-apt/halt.php?distrib=${DISTRIB_CODENAME} -O ${HZNSCRIPTHALT} -q
if [ -s "${HZNSCRIPTHALT}" ]; then
date >> ${LOGFILE}
bash ${HZNSCRIPTHALT} 2>> ${LOGFILE} | tee -a ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
if [ "${?}" = "0" ]; then
log_end_msg 0
else
log_end_msg 1
fi
fi
;;
restart)
$0 stop
$0 start
;;
*)
log_action_msg "Usage: /etc/init.d/horizon-autoboot {start|stop|restart}"
exit 1
;;
esac
exit 0