[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-wpkg/sources/scripts/ -> update_droits_xml.sh (source)

   1  #!/bin/bash
   2  
   3  #########################################################################
   4  #   /usr/share/se3/scripts/update_droits_xml.sh                             #
   5  #                                                                       #
   6  #########################################################################
   7  #
   8  #
   9  #   Met à jour droits.xml dans /var/se3/unattended/install/wpkg
  10  #   à partir des gon de l'annuaire : computers_is_admin, parc_can_manage et parc_can_view
  11  #   et des délégations lues dans la table mysql : base se3db, table delegation
  12  
  13  #   A executer chaque fois que les droits ou delegations sont modifiés
  14  #   Syntaxe :  update_droits_xml.sh [--help]
  15  
  16  ## $Id: update_droits_xml.sh 6785 2012-01-19 02:19:48Z keyser $ ##
  17  #
  18  
  19  CONFIG_INC="/var/www/se3/includes/config.inc.php"
  20  dbhost="`gawk -F'[\"]' '/^ *\\$dbhost *=/ {print $2}' $CONFIG_INC`";
  21  dbname="`gawk -F'[\"]' '/^ *\\$dbname *=/ {print $2}' $CONFIG_INC`";
  22  dbuser="`gawk -F'[\"]' '/^ *\\$dbuser *=/ {print $2}' $CONFIG_INC`";
  23  dbpass="`gawk -F'[\"]' '/^ *\\$dbpass *=/ {print $2}' $CONFIG_INC`";
  24  
  25  RightsRDN=`mysql --host=$dbhost --user=$dbuser --password=$dbpass --skip-column-names --execute="SELECT value FROM params WHERE name='rightsRdn';" --silent $dbname`
  26  BaseDN=`mysql --host=$dbhost --user=$dbuser --password=$dbpass --skip-column-names --execute="SELECT value FROM params WHERE name='ldap_base_dn';" --silent $dbname`
  27  #RightsRDN=`echo "SELECT value FROM params WHERE name='rightsRdn'" | mysql -h localhost se3db -N`
  28  #BaseDN=`echo "SELECT value FROM params WHERE name='ldap_base_dn'" | mysql -h localhost se3db -N`
  29  # echo "RightsRDN=$RightsRDN; BaseDN=$BaseDN"
  30  
  31  wpkgroot="/var/se3/unattended/install/wpkg"
  32  wpkgwebdir="/var/www/se3/wpkg"
  33  
  34  PROFILES_XML="$wpkgroot/profiles.xml";
  35  DROITS_XML="$wpkgroot/droits.xml";
  36  
  37  if [ "$BaseDN" == "" ]; then
  38      echo "Met à jour le fichier /var/se3/unattended/install/wpkg/droits.xml"
  39      echo "  Syntaxe :  update_droits_xml.sh RightsRDN BaseDN"
  40      exit 1
  41  fi
  42  
  43  # Nom du profile TousLesPostes
  44  TousLesPostes="_TousLesPostes"
  45  
  46  echo '<?xml version="1.0" encoding="iso-8859-1"?>' > $DROITS_XML
  47  echo '<!-- Généré par SambaEdu. Ne pas modifier -->' >> $DROITS_XML
  48  echo '<droits>' >> $DROITS_XML
  49  
  50  # mysql --host=$dbhost --user=$dbuser --password=$dbpass --skip-column-names --execute='SELECT login, parc, niveau FROM delegation' --silent $dbname
  51  
  52  mysql --host=$dbhost --user=$dbuser --password=$dbpass --skip-column-names --execute='SELECT login, parc, niveau FROM delegation' --silent $dbname | 
  53      gawk '  BEGIN {
  54                  ListDroits = "ldapsearch -x -LLL -S \"cn\" -b \"'$RightsRDN','$BaseDN'\" \"(|(cn=computers_is_admin)(cn=parc_can_manage)(cn=parc_can_view))\" cn member";
  55                  while ( ListDroits | getline ) {
  56                      if ( $1 == "cn:") {
  57                          if ( $2 == "computers_is_admin") {
  58                              Droits_EnCours=3;
  59                          } else if ( $2 == "parc_can_manage") {
  60                              Droits_EnCours=2;
  61                          } else if ( $2 == "parc_can_view") {
  62                              Droits_EnCours=1;
  63                          }
  64                      }
  65                      if ( $1 == "member:") {
  66                          if ( split($2,a,"[=,]") > 2 ) {
  67                              USER=tolower(a[2]);
  68                              droitParcs_EnCours[ USER ] = USER;
  69                          }
  70                      }
  71                      if ( $0 == "") {
  72                          for ( USER in droitParcs_EnCours ) {
  73                              if (Droits_EnCours == 3) {
  74                                  print "  <droit parc=\"'$TousLesPostes'\" user=\"" USER "\" droit=\"admin\" />";
  75                                  DroitParcs[USER] = 3;
  76                              } else if ( USER in DroitParcs) {
  77                                  if ( DroitParcs[USER] < Droits_EnCours ) {
  78                                      DroitParcs[USER] = Droits_EnCours;
  79                                  }
  80                              } else {
  81                                  DroitParcs[USER] = Droits_EnCours;
  82                              }
  83                          }
  84                          USER="";
  85                          Droits_EnCours=0;
  86                          delete droitParcs_EnCours;
  87                      }
  88                  }
  89              }
  90              {
  91                  USER=$1;
  92                  PARC=$2;
  93                  DROIT=$3;
  94                  if ( USER in DroitParcs ) {
  95                      print "  <droit parc=\"" PARC "\" user=\"" USER "\" droit=\"" DROIT "\" />";
  96                      DroitParcs[USER] = 0;
  97                  }
  98              }
  99              END {
 100                  for ( USER in DroitParcs ) {
 101                      if ( DroitParcs[USER] == 2 ) {
 102                          print "  <droit parc=\"" PARC "\" user=\"" USER "\" droit=\"manage\" />";
 103                      } else if ( DroitParcs[USER] == 1 ) {
 104                          print "  <droit parc=\"'$TousLesPostes'\" user=\"" USER "\" droit=\"view\" />";
 105                      }
 106                      
 107                  }
 108              }' >> $DROITS_XML
 109  # Fermeture du noeud profiles de $DROITS_XML 
 110  echo '</droits>' >> $DROITS_XML
 111  chown www-se3 $DROITS_XML


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1