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.x < prev    next >
Text File  |  2002-03-07  |  12KB  |  483 lines

  1. #!/bin/bash
  2. #### $Id: process_queue,v 1.14 2002/02/05 10:47:44 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 $SLISMASTER" >> $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. # Unlocking
  85. #######################
  86. if [ -f $QUEUE/unlock ]
  87. then
  88.   rm -f $QUEUE/lock
  89.   rm -f $QUEUE/unlock
  90.   killall process_queue
  91. fi
  92.  
  93. ##########################################
  94. # Vidage de la mailqueue sur le mailhub. #
  95. ##########################################
  96. if [ -f $QUEUE/etrn ]
  97. then
  98.   rm -rf $QUEUE/etrn
  99.   logger $LOGTAG "Processing $MAILHUB's mailqueue."
  100.   if [ "$FETCHMAIL" = "1" ]
  101.   then
  102.     logger $LOGTAG "Starting fetchmail."
  103.     /usr/bin/fetchmail
  104.   else
  105.     if [ -f $ETRN ]
  106.     then
  107.       logger $LOGTAG "Sending etrn."
  108.       $ETRN $MAILHUB
  109.     else
  110.       logger $LOGTAG "$ETRN not found."
  111.     fi
  112.   fi
  113.   logger $LOGTAG "Processing local mailqueue."
  114.   /usr/sbin/sendmail -q 2> /dev/console
  115. fi
  116.  
  117. ############################
  118. # Creation de comptes pop. #
  119. ############################
  120. if [ -f $QUEUE/users_pop ]
  121. then
  122.   for i in `awk '{print NR}' $QUEUE/users_pop`
  123.   do
  124.     # Lecture des parametres du fichier d'entree de la queue.
  125.     LOGIN=`awk -v I=$i -F: '{if (NR == I) print $1}' $QUEUE/users_pop`
  126.     PASSW=`awk -v I=$i -F: '{if (NR == I) print $2}' $QUEUE/users_pop`
  127.     CPASS=`awk -v I=$i -F: '{if (NR == I) print $3}' $QUEUE/users_pop`
  128.     COMMT=`awk -v I=$i -F: '{if (NR == I) print $4}' $QUEUE/users_pop`
  129.     ALIAS=`awk -v I=$i -F: '{if (NR == I) print $5}' $QUEUE/users_pop`
  130.     echo  >> $QUEUE/result
  131.     echo "Creation de l'utilisateur $COMMT" >> $QUEUE/result
  132.     # Creation proprement dite.
  133.     /usr/sbin/useradd -p $CPASS -s $POPSHELL -c "$COMMT" $LOGIN 2>> $QUEUE/error_log
  134.     RETURNCODE=$?
  135.     echo -n "Resultat : " >> $QUEUE/result
  136.     if [ $RETURNCODE = "0" ]
  137.     then
  138.       # Creation de l'alias
  139.       echo "$ALIAS: $LOGIN" >> /etc/aliases
  140.       # Composition du message a l'administrateur.
  141.       echo "OK" >> $QUEUE/result
  142.       echo "   Nom d'utilisateur : " $LOGIN >> $QUEUE/result
  143.       echo "   Mot de passe      : " $PASSW >> $QUEUE/result
  144.       echo "   E-mail            : " $ALIAS@$HOSTNAME >> $QUEUE/result
  145.       # Ajout dans la base.
  146.       echo "$LOGIN:$PASSW:$CPASS:$COMMT:$POPSHELL:$ALIAS" >> $BASE/users
  147.     fi
  148.     # Gestion des erreurs
  149.     if [ $RETURNCODE = "9" ]
  150.     then
  151.       echo "Utilisateur deja existant... non cree." >> $QUEUE/result
  152.     fi
  153.     if [ $RETURNCODE != "9" -a $RETURNCODE != "0" ]
  154.     then
  155.       echo "Erreur... Utilisateur non cree." >> $QUEUE/result
  156.     fi
  157.   done
  158.   /usr/bin/newaliases
  159.   rm -rf $QUEUE/users_pop
  160. fi
  161.  
  162. ############################
  163. # Suppression de comptes    #
  164. ############################
  165. if [ -f $QUEUE/users_del ]
  166. then
  167.   for i in `awk '{print NR}' $QUEUE/users_del`
  168.   do
  169.     LOGIN=`awk -v I=$i -F: '{if (NR == I) print $1}' $QUEUE/users_del`
  170.     DELBOX=`awk -v I=$i -F: '{if (NR == I) print $2}' $QUEUE/users_del`
  171.     echo  >> $QUEUE/result
  172.     echo "Suppression de l'utilisateur $LOGIN" >> $QUEUE/result
  173.     /usr/sbin/userdel $LOGIN 2>> $QUEUE/error_log
  174.     RETURNCODE=$?
  175.     /usr/sbin/groupdel $LOGIN 2>> $QUEUE/error_log
  176.     echo -n "Resultat : " >> $QUEUE/result
  177.     if [ $RETURNCODE = "0" ]
  178.     then
  179.       if [ $DELBOX = "0" ]
  180.       then
  181.         rm -rf /var/spool/mail/$LOGIN
  182.         rm -rf /home/$LOGIN
  183.       fi
  184.       echo "OK" >> $QUEUE/result
  185.       # Suppression de l'entree dans la base
  186.       rm -rf $BASE/users.new
  187.       grep -v "$LOGIN:" $BASE/users > $BASE/users.new
  188.       rm -rf $BASE/users
  189.       mv $BASE/users.new $BASE/users
  190.     fi
  191.     if [ $RETURNCODE != "0" ]
  192.     then
  193.       echo "Erreur... Utilisateur non supprime." >> $QUEUE/result
  194.     fi
  195.   done
  196.   # Suppression des aliases
  197.   $BINDIR/clean_aliases
  198.   rm -rf $QUEUE/users_del
  199. fi
  200.  
  201. ######################
  202. # Aliases            #
  203. ######################
  204. if [ -f $QUEUE/users_alias ]
  205. then
  206.   $BINDIR/process_users_alias >> $QUEUE/result
  207.   logger $LOGTAG "Ajout d'aliases."
  208. fi
  209. if [ -f $QUEUE/users_alias_del ]
  210. then
  211.   $BINDIR/process_users_alias >> $QUEUE/result
  212.   logger $LOGTAG "Suppression d'aliases."
  213. fi
  214.  
  215. ####################
  216. # Reboot / Halt    #
  217. ####################
  218. if [ -f $QUEUE/reboot ]
  219. then
  220.   logger $LOGTAG "Redemarrage demande."
  221.   rm -rf $QUEUE/reboot
  222.   /sbin/shutdown -r now "Redemarrage pour maintenance - hadmin"
  223. fi
  224. if [ -f $QUEUE/halt ]
  225. then
  226.   logger $LOGTAG "Arret demande."
  227.   rm -rf $QUEUE/halt
  228.   /sbin/shutdown -h now "Arret du systeme - hadmin"
  229. fi
  230.  
  231. ######################
  232. # Mise α jour forcΘe #
  233. ######################
  234. if [ -f $QUEUE/update ]
  235. then
  236.   rm -rf $QUEUE/update
  237.   $BINDIR/slis_update 2>> $QUEUE/error_log
  238. fi
  239.  
  240. ######################
  241. # Filtrage IP        # OBSOLETE
  242. ######################
  243. if [ -f $QUEUE/filtrage_ip ]
  244. then
  245.   logger $LOGTAG "Modification filtrage_ip."
  246.   $BINDIR/process_filtrage_ip
  247.   rm -rf $QUEUE/filtrage_ip
  248. fi
  249.  
  250. ######################
  251. # IP filters         #
  252. # THIS IS OBSOLETE!!
  253. #    mkfilters is called on every validation now
  254. ######################
  255. if [ -f $QUEUE/ip_filters ]
  256. then
  257.   logger $LOGTAG "IP filters change requested."
  258.   $BINDIR/mkfilters
  259.   rm -rf $QUEUE/ip_filters
  260. fi
  261.  
  262. ######################
  263. # Filtrage URL       # OBSOLETE!
  264. ######################
  265. if [ -f $QUEUE/denied_url -o -f $QUEUE/denied_url_purge ]
  266. then
  267.   logger $LOGTAG "Modification filtrage_url."
  268.   $BINDIR/process_filtrage_url
  269.   rm -rf $QUEUE/denied_url
  270. fi
  271.  
  272. ###########################
  273. # Filtrage par squidGuard #
  274. ###########################
  275. if [ -f $QUEUE/squid_guard ]
  276. then
  277.   logger $LOGTAG "Modification filtrage squidguard"
  278.   $BINDIR/process_filtrage_squidguard
  279.   rm -rf $QUEUE/squid_guard
  280. fi
  281.  
  282. ####################
  283. # Routage on / off #
  284. ####################
  285. if [ -f $QUEUE/routage_off ]
  286. then
  287.   logger $LOGTAG "Arret routage demande"
  288.   rm -rf $QUEUE/routage_off
  289.   $BINDIR/routage_off
  290. fi
  291. if [ -f $QUEUE/routage_on ]
  292. then
  293.   logger $LOGTAG "Mise en marche routage demande"
  294.   rm -rf $QUEUE/routage_on
  295.   $BINDIR/routage_on
  296. fi
  297.  
  298. ######################
  299. # Subnets / horaires #
  300. ######################
  301. if [ -f $QUEUE/subnets ]
  302. then
  303.   $BINDIR/process_subnets
  304.   logger $LOGTAG "Modif etat des subnets."
  305. fi
  306. if [ -f $QUEUE/subn_hor ]
  307. then
  308.   $BINDIR/process_subnets
  309.   logger $LOGTAG "Modif des horaires subnets."
  310. fi
  311. if [ -f $QUEUE/subnets_cron ]
  312. then
  313.   sleep 5
  314.   for i in `ls $QUEUE/subnets_cron.*`
  315.   do
  316.   if [ ! \( "$i" = "" \) ]
  317.   then
  318.     bash $i
  319.     rm -rf $i
  320.   fi
  321.   done
  322.   rm -rf $QUEUE/subnets_cron
  323.   logger $LOGTAG "Modif etat des subnets par cron."
  324. fi
  325.  
  326. ######################
  327. # Gestion du web     #
  328. ######################
  329. if [ -f $QUEUE/webmaster ]
  330. then
  331.   $BINDIR/process_web
  332.   logger $LOGTAG "Modif webmaster."
  333. fi
  334. if [ -f $QUEUE/webreplic ]
  335. then
  336.   $BINDIR/process_web
  337.   logger $LOGTAG "Replication du web."
  338. fi
  339.  
  340. ######################
  341. # Groupes cyberecole #
  342. ######################
  343. if [ -f $QUEUE/cybgroups ]
  344. then
  345.   rm -rf $QUEUE/cybgroups
  346.   $BINDIR/process_cybgroups
  347.   logger $LOGTAG "Modif groupes cyberecole."
  348. fi
  349.  
  350. ######################
  351. # VNC              #
  352. ######################
  353. if [ -f $QUEUE/vnc ]
  354. then
  355.   rm -rf $QUEUE/vnc
  356.   $BINDIR/process_vnc
  357.   logger $LOGTAG "Lancement de process_vnc."
  358. fi
  359.  
  360. ######################
  361. # DHCP              #
  362. ######################
  363. if [ -f $QUEUE/dhcp ]
  364. then
  365.   rm -rf $QUEUE/dhcp
  366.   $BINDIR/process_dhcp
  367.   logger $LOGTAG "Lancement de process_dhcp."
  368. fi
  369.  
  370. #####################
  371. # BACKUP            #
  372. #####################
  373. if [ -e $QUEUE/backup ]
  374. then
  375.   rm -f $QUEUE/backup
  376.   $BINDIR/backup 
  377. fi
  378.  
  379. #####################
  380. # UPS               #
  381. #####################
  382.  
  383. $BINDIR/process_ups 
  384.  
  385. #####################
  386. # ADSL              #
  387. #####################
  388. if [ -f $QUEUE/adsl ]
  389. then
  390.   etat=`cat $QUEUE/adsl`
  391.   rm -rf $QUEUE/adsl
  392.   if [ "$etat" = "START" ]
  393.   then
  394.   /etc/rc.d/init.d/adsl restart
  395.   logger $LOGTAG "Lancement de la connexion ADSL."
  396.   fi
  397.   if [ "$etat" = "STOP" ]
  398.   then
  399.   /etc/rc.d/init.d/adsl stop
  400.   logger $LOGTAG "ARRET de la connexion ADSL."
  401.   fi
  402. fi
  403.  
  404. #####################################
  405. # Modification des paramΘtres ADSL  #
  406. #####################################
  407. if [ -f $QUEUE/adsl-params ]
  408. then
  409.    $BINDIR/mkadsl
  410.    rm -rf $QUEUE/adsl-params
  411.    logger $LOGTAG "Modification du compte ADSL."
  412. fi
  413.  
  414. #####################################
  415. # Stop/Restart the tunnel           #
  416. #####################################
  417. if [ -f $QUEUE/tunnel_stop ]
  418. then
  419.    rm -rf $QUEUE/tunnel_stop
  420.    logger $LOGTAG "ARRET VOLONTAIRE DU TUNEL PAR HADMIN"
  421.    killall run_tunnel
  422.    sleep 1
  423.    killall vtund
  424. fi
  425. if [ -f $QUEUE/tunnel_restart ]
  426. then
  427.    rm -rf $QUEUE/tunnel_restart
  428.    killall run_tunnel
  429.    sleep 1
  430.    killall vtund
  431.    sleep 1
  432.    $SLIS_BINDIR/run_tunnel&
  433. fi
  434.  
  435. #####################################
  436. # services_startup              #
  437. #####################################
  438. if [ -f $QUEUE/services_startup ]
  439. then
  440.    bash $QUEUE/services_startup
  441.    rm -rf $QUEUE/services_startup
  442.    logger $LOGTAG "Services startup modified."
  443. fi
  444.  
  445. #####################################
  446. # restoring                  #
  447. #####################################
  448. if [ -f $QUEUE/restore1 ]
  449. then
  450.    logger $LOGTAG "Restoring from 1.x."
  451.    bash $BINDIR/restore-1.x.bash
  452.    rm -rf $QUEUE/restore1
  453. fi
  454. if [ -f $QUEUE/restore2 ]
  455. then
  456.    logger $LOGTAG "Restoring from 2.x."
  457.    bash $BINDIR/restore-2.x.bash > /var/log/slis_restore 2>> /var/log/slis_restore
  458.    rm -rf $QUEUE/restore2
  459. fi
  460.  
  461.  
  462. #####################
  463. # SQL Replica       #
  464. #####################
  465. if [ -x $BINDIR/valid ]
  466. then
  467.   $BINDIR/valid
  468. fi
  469.  
  470. ####################
  471. # Envoi du rapport #
  472. ####################
  473. if [ -s $QUEUE/result ]
  474. then
  475.   cat $QUEUE/result | mail -s "Resultats de votre validation" $MAIL_ADMIN
  476. fi
  477.  
  478. rm -rf $QUEUE/result
  479. rm -rf $QUEUE/lock
  480.  
  481. logger $LOGTAG "Processing queue termine."
  482.  
  483.