home *** CD-ROM | disk | FTP | other *** search
/ ftp.ac-grenoble.fr / 2015.02.ftp.ac-grenoble.fr.tar / ftp.ac-grenoble.fr / pub / slis / updates_rsync / process_queue-2.0 < prev    next >
Text File  |  2001-05-16  |  11KB  |  429 lines

  1. #!/bin/bash
  2. #### $Id: process_queue,v 1.2 2001/03/31 14:20:36 bzizou Exp $ ####
  3. # Process queue hadmin
  4.  
  5. # This script is part of the SLIS Project initiated by the CARMI-Internet
  6. # (AcadΘmie de Grenoble - France 38).
  7. # Ce script fait partie du projet SLIS dΘmarrΘ par le CARMI-Internet
  8. # (AcadΘmie de Grenoble - France 38).
  9. #
  10. # SLIS : Serveur de communications Linux Pour l'Internet Scolaire.
  11. # Copyright (C) 1998-2000 Bruno Bzeznik
  12. #
  13. #    This program is free software; you can redistribute it and/or modify
  14. #    it under the terms of the GNU General Public License as published by
  15. #    the Free Software Foundation; either version 2 of the License, or
  16. #    (at your option) any later version.
  17. #
  18. #    This program is distributed in the hope that it will be useful,
  19. #    but WITHOUT ANY WARRANTY; without even the implied warranty of
  20. #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21. #    GNU General Public License for more details.
  22. #    You should have received a copy of the GNU General Public License
  23. #    along with this program (For example ./COPYING);
  24. #    if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  25. #    Cambridge, MA 02139, USA.
  26. #
  27. # Please send all comments and bug reports by electronic mail to:
  28. #   Bruno Bzeznik <Bruno@ac-grenoble.fr>
  29. # or to <slis@ac-grenoble.fr>
  30. #
  31. # Envoyez vos suggestions et reports de bugs par e-mail α
  32. #   Bruno Bzeznik <Bruno@ac-grenoble.fr>
  33. # ou α <slis@ac-grenoble.fr>
  34. #
  35.  
  36. ######################
  37. # VARIABLES GLOBALES #
  38. ######################
  39.  
  40. . /home/hadmin/slis.conf
  41.  
  42. BINDIR=$SLIS_BINDIR
  43. ETRN=$SLIS_BINDIR/etrn
  44. MAILHUB=$SMART_HOST
  45. POPSHELL=/bin/false
  46. MAIL_ADMIN=`grep @ /home/hadmin/cgi-bin/base/params_admin.txt | grep "."`
  47. LANG=C
  48. LOGTAG="-t process_queue[$$] -p $LOG_FACILITY.notice"
  49.  
  50. #####################
  51. # INITIALISATION    #
  52. #####################
  53. rm -rf $QUEUE/tbp
  54. rm -rf $QUEUE/result
  55. touch $QUEUE/result
  56.  
  57. # Fichier d'enregistrement des erreurs
  58. if [ ! \( -f $QUEUE/error_log \) ]
  59. then
  60.   touch $QUEUE/error_log
  61.   chmod 600 $QUEUE/error_log 
  62.   chown hadmin.hadmin $QUEUE/error_log
  63. fi
  64.  
  65. # Gestion d'un lock
  66. if [ -f $QUEUE/lock ]
  67. then
  68.   logger $LOGTAG "Fichier lock trouve. Aborting."
  69.   echo "La file d'attente des operations non validees n'a pas pu etre
  70. traitee car une autre validation est deja en cours. Si ce probleme
  71. persiste, contactez support-hadmin@ac-grenoble.fr" >> $QUEUE/result
  72.   cat $QUEUE/result | mail -s "Resultats de votre validation - Erreur" $MAIL_ADMIN
  73.   DATE=`date`
  74.   echo "$DATE: $LOGTAG : Fichier lock trouve. Abort." >> $QUEUE/error_log
  75.   exit 1
  76. else 
  77.   touch $QUEUE/lock
  78. fi
  79.  
  80. # Affichage dans la syslog.
  81. logger $LOGTAG "Processing admin queue..."
  82.  
  83. ##########################################
  84. # Vidage de la mailqueue sur le mailhub. #
  85. ##########################################
  86. if [ -f $QUEUE/etrn ]
  87. then
  88.   if [ -f $ETRN ]
  89.   then
  90.     rm -rf $QUEUE/etrn
  91.     logger $LOGTAG "Envoi de  commande ETRN sur $MAILHUB."
  92.     $ETRN $MAILHUB
  93.   else
  94.     logger $LOGTAG "Commande $ETRN non trouvee."
  95.   fi
  96.   logger $LOGTAG "Vidage mqueue (sendmail -q)."
  97.   /usr/sbin/sendmail -q 2> /dev/console
  98. fi
  99.  
  100. ############################
  101. # Creation de comptes pop. #
  102. ############################
  103. if [ -f $QUEUE/users_pop ]
  104. then
  105.   for i in `awk '{print NR}' $QUEUE/users_pop`
  106.   do
  107.     # Lecture des parametres du fichier d'entree de la queue.
  108.     LOGIN=`awk -v I=$i -F: '{if (NR == I) print $1}' $QUEUE/users_pop`
  109.     PASSW=`awk -v I=$i -F: '{if (NR == I) print $2}' $QUEUE/users_pop`
  110.     CPASS=`awk -v I=$i -F: '{if (NR == I) print $3}' $QUEUE/users_pop`
  111.     COMMT=`awk -v I=$i -F: '{if (NR == I) print $4}' $QUEUE/users_pop`
  112.     ALIAS=`awk -v I=$i -F: '{if (NR == I) print $5}' $QUEUE/users_pop`
  113.     echo  >> $QUEUE/result
  114.     echo "Creation de l'utilisateur $COMMT" >> $QUEUE/result
  115.     # Creation proprement dite.
  116.     /usr/sbin/useradd -p $CPASS -s $POPSHELL -c "$COMMT" $LOGIN 2>> $QUEUE/error_log
  117.     RETURNCODE=$?
  118.     echo -n "Resultat : " >> $QUEUE/result
  119.     if [ $RETURNCODE = "0" ]
  120.     then
  121.       # Creation de l'alias
  122.       echo "$ALIAS: $LOGIN" >> /etc/aliases
  123.       # Composition du message a l'administrateur.
  124.       echo "OK" >> $QUEUE/result
  125.       echo "   Nom d'utilisateur : " $LOGIN >> $QUEUE/result
  126.       echo "   Mot de passe      : " $PASSW >> $QUEUE/result
  127.       echo "   E-mail            : " $ALIAS@$HOSTNAME >> $QUEUE/result
  128.       # Ajout dans la base.
  129.       echo "$LOGIN:$PASSW:$CPASS:$COMMT:$POPSHELL:$ALIAS" >> $BASE/users
  130.     fi
  131.     # Gestion des erreurs
  132.     if [ $RETURNCODE = "9" ]
  133.     then
  134.       echo "Utilisateur deja existant... non cree." >> $QUEUE/result
  135.     fi
  136.     if [ $RETURNCODE != "9" -a $RETURNCODE != "0" ]
  137.     then
  138.       echo "Erreur... Utilisateur non cree." >> $QUEUE/result
  139.     fi
  140.   done
  141.   /usr/bin/newaliases
  142.   rm -rf $QUEUE/users_pop
  143. fi
  144.  
  145. ############################
  146. # Suppression de comptes    #
  147. ############################
  148. if [ -f $QUEUE/users_del ]
  149. then
  150.   for i in `awk '{print NR}' $QUEUE/users_del`
  151.   do
  152.     LOGIN=`awk -v I=$i -F: '{if (NR == I) print $1}' $QUEUE/users_del`
  153.     DELBOX=`awk -v I=$i -F: '{if (NR == I) print $2}' $QUEUE/users_del`
  154.     echo  >> $QUEUE/result
  155.     echo "Suppression de l'utilisateur $LOGIN" >> $QUEUE/result
  156.     /usr/sbin/userdel $LOGIN 2>> $QUEUE/error_log
  157.     RETURNCODE=$?
  158.     /usr/sbin/groupdel $LOGIN 2>> $QUEUE/error_log
  159.     echo -n "Resultat : " >> $QUEUE/result
  160.     if [ $RETURNCODE = "0" ]
  161.     then
  162.       if [ $DELBOX = "0" ]
  163.       then
  164.         rm -rf /var/spool/mail/$LOGIN
  165.         rm -rf /home/$LOGIN
  166.       fi
  167.       echo "OK" >> $QUEUE/result
  168.       # Suppression de l'entree dans la base
  169.       rm -rf $BASE/users.new
  170.       grep -v "$LOGIN:" $BASE/users > $BASE/users.new
  171.       rm -rf $BASE/users
  172.       mv $BASE/users.new $BASE/users
  173.     fi
  174.     if [ $RETURNCODE != "0" ]
  175.     then
  176.       echo "Erreur... Utilisateur non supprime." >> $QUEUE/result
  177.     fi
  178.   done
  179.   # Suppression des aliases
  180.   $BINDIR/clean_aliases
  181.   rm -rf $QUEUE/users_del
  182. fi
  183.  
  184. ######################
  185. # Aliases            #
  186. ######################
  187. if [ -f $QUEUE/users_alias ]
  188. then
  189.   $BINDIR/process_users_alias >> $QUEUE/result
  190.   logger $LOGTAG "Ajout d'aliases."
  191. fi
  192. if [ -f $QUEUE/users_alias_del ]
  193. then
  194.   $BINDIR/process_users_alias >> $QUEUE/result
  195.   logger $LOGTAG "Suppression d'aliases."
  196. fi
  197.  
  198. ####################
  199. # Reboot / Halt    #
  200. ####################
  201. if [ -f $QUEUE/reboot ]
  202. then
  203.   logger $LOGTAG "Redemarrage demande."
  204.   rm -rf $QUEUE/reboot
  205.   /sbin/shutdown -r now "Redemarrage pour maintenance - hadmin"
  206. fi
  207. if [ -f $QUEUE/halt ]
  208. then
  209.   logger $LOGTAG "Arret demande."
  210.   rm -rf $QUEUE/halt
  211.   /sbin/shutdown -h now "Arret du systeme - hadmin"
  212. fi
  213.  
  214. ######################
  215. # Mise α jour forcΘe #
  216. ######################
  217. if [ -f $QUEUE/update ]
  218. then
  219.   rm -rf $QUEUE/update
  220.   $BINDIR/slis_update.cron 2>> $QUEUE/error_log
  221. fi
  222.  
  223. ######################
  224. # Filtrage IP        #
  225. ######################
  226. if [ -f $QUEUE/filtrage_ip ]
  227. then
  228.   logger $LOGTAG "Modification filtrage_ip."
  229.   $BINDIR/process_filtrage_ip
  230.   rm -rf $QUEUE/filtrage_ip
  231. fi
  232.  
  233. ######################
  234. # Filtrage URL       # OBSOLETE!
  235. ######################
  236. if [ -f $QUEUE/denied_url -o -f $QUEUE/denied_url_purge ]
  237. then
  238.   logger $LOGTAG "Modification filtrage_url."
  239.   $BINDIR/process_filtrage_url
  240.   rm -rf $QUEUE/denied_url
  241. fi
  242.  
  243. ###########################
  244. # Filtrage par squidGuard #
  245. ###########################
  246. if [ -f $QUEUE/squid_guard ]
  247. then
  248.   logger $LOGTAG "Modification filtrage squidguard"
  249.   $BINDIR/process_filtrage_squidguard
  250.   rm -rf $QUEUE/squid_guard
  251. fi
  252.  
  253. ####################
  254. # Routage on / off #
  255. ####################
  256. if [ -f $QUEUE/routage_off ]
  257. then
  258.   logger $LOGTAG "Arret routage demande"
  259.   rm -rf $QUEUE/routage_off
  260.   $BINDIR/routage_off
  261. fi
  262. if [ -f $QUEUE/routage_on ]
  263. then
  264.   logger $LOGTAG "Mise en marche routage demande"
  265.   rm -rf $QUEUE/routage_on
  266.   $BINDIR/routage_on
  267. fi
  268.  
  269. ######################
  270. # Subnets / horaires #
  271. ######################
  272. if [ -f $QUEUE/subnets ]
  273. then
  274.   $BINDIR/process_subnets
  275.   logger $LOGTAG "Modif etat des subnets."
  276. fi
  277. if [ -f $QUEUE/subn_hor ]
  278. then
  279.   $BINDIR/process_subnets
  280.   logger $LOGTAG "Modif des horaires subnets."
  281. fi
  282. if [ -f $QUEUE/subnets_cron ]
  283. then
  284.   sleep 5
  285.   for i in `ls $QUEUE/subnets_cron.*`
  286.   do
  287.   if [ ! \( "$i" = "" \) ]
  288.   then
  289.     bash $i
  290.     rm -rf $i
  291.   fi
  292.   done
  293.   rm -rf $QUEUE/subnets_cron
  294.   logger $LOGTAG "Modif etat des subnets par cron."
  295. fi
  296.  
  297. ######################
  298. # Gestion du web     #
  299. ######################
  300. if [ -f $QUEUE/webmaster ]
  301. then
  302.   $BINDIR/process_web
  303.   logger $LOGTAG "Modif webmaster."
  304. fi
  305. if [ -f $QUEUE/webreplic ]
  306. then
  307.   $BINDIR/process_web
  308.   logger $LOGTAG "Replication du web."
  309. fi
  310.  
  311. ######################
  312. # Groupes cyberecole #
  313. ######################
  314. if [ -f $QUEUE/cybgroups ]
  315. then
  316.   rm -rf $QUEUE/cybgroups
  317.   $BINDIR/process_cybgroups
  318.   logger $LOGTAG "Modif groupes cyberecole."
  319. fi
  320.  
  321. ######################
  322. # VNC              #
  323. ######################
  324. if [ -f $QUEUE/vnc ]
  325. then
  326.   rm -rf $QUEUE/vnc
  327.   $BINDIR/process_vnc
  328.   logger $LOGTAG "Lancement de process_vnc."
  329. fi
  330.  
  331. ######################
  332. # DHCP              #
  333. ######################
  334. if [ -f $QUEUE/dhcp ]
  335. then
  336.   rm -rf $QUEUE/dhcp
  337.   $BINDIR/process_dhcp
  338.   logger $LOGTAG "Lancement de process_dhcp."
  339. fi
  340.  
  341. #####################
  342. # BACKUP            #
  343. #####################
  344. if [ -e $QUEUE/backup ]
  345. then
  346.   rm -f $QUEUE/backup
  347.   $BINDIR/backup 
  348. fi
  349.  
  350. #####################
  351. # Nouveau systeme   #
  352. # Validation SQL    #
  353. #####################
  354. if [ -x $BINDIR/valid ]
  355. then
  356.   $BINDIR/valid
  357. fi
  358.  
  359. #####################
  360. # UPS               #
  361. #####################
  362.  
  363. $BINDIR/process_ups 
  364.  
  365. #####################
  366. # ADSL              #
  367. #####################
  368. if [ -f $QUEUE/adsl ]
  369. then
  370.   etat=`cat $QUEUE/adsl`
  371.   rm -rf $QUEUE/adsl
  372.   if [ "$etat" = "START" ]
  373.   then
  374.   /etc/rc.d/init.d/adsl restart
  375.   logger $LOGTAG "Lancement de la connexion ADSL."
  376.   fi
  377.   if [ "$etat" = "STOP" ]
  378.   then
  379.   /etc/rc.d/init.d/adsl stop
  380.   logger $LOGTAG "ARRET de la connexion ADSL."
  381.   fi
  382. fi
  383.  
  384. #####################################
  385. # Modification des paramΘtres ADSL  #
  386. #####################################
  387. if [ -f $QUEUE/adsl-params ]
  388. then
  389.    $BINDIR/mkadsl
  390.    rm -rf $QUEUE/adsl-params
  391.    logger $LOGTAG "Modification du compte ADSL."
  392. fi
  393.  
  394. #####################################
  395. # Stop/Restart the tunnel           #
  396. #####################################
  397. if [ -f $QUEUE/tunnel_stop ]
  398. then
  399.    rm -rf $QUEUE/tunnel_stop
  400.    logger $LOGTAG "ARRET VOLONTAIRE DU TUNEL PAR HADMIN"
  401.    killall run_tunnel
  402.    sleep 1
  403.    killall vtund
  404. fi
  405. if [ -f $QUEUE/tunnel_restart ]
  406. then
  407.    rm -rf $QUEUE/tunnel_restart
  408.    killall run_tunnel
  409.    sleep 1
  410.    killall vtund
  411.    sleep 1
  412.    $SLIS_BINDIR/run_tunnel
  413. fi
  414.  
  415.  
  416. ####################
  417. # Envoi du rapport #
  418. ####################
  419. if [ -s $QUEUE/result ]
  420. then
  421.   cat $QUEUE/result | mail -s "Resultats de votre validation" $MAIL_ADMIN
  422. fi
  423.  
  424. rm -rf $QUEUE/result
  425. rm -rf $QUEUE/lock
  426.  
  427. logger $LOGTAG "Processing queue termine."
  428.  
  429.