[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-internet/sources/sbin/ -> ip-internet.sh (source)

   1  #!/bin/bash
   2  ##### Enregistrement ldap des  cn=machine #####
   3  # ce script s'utilise en lieu et place du script connexion.pl qu'il remplace
   4  # licence GPL
   5  # auteur : denis bonnenfant 6/02/2008
   6  ##
   7  # $Id: ip-internet.sh 6115 2011-01-28 18:34:52Z dbo $ ##
   8  if [ "$1" == "--help" -o "$1" == "-h" ]
   9  then
  10  echo "Script de cr�ant l'enregistrement ldap cn=machine "
  11  echo "afin de permettre le controle internet et la gestin des parcs"
  12  echo "Usage : connexion-internet.sh utilisateur machine IP action"
  13  echo "action peut �tre : add - ajoute l'ip (choix par defaut)"
  14  echo "                   del - supprime l'ip"
  15  echo "--help cette aide"
  16  exit
  17  fi
  18  
  19  [[ "$#" -lt "3" ]] && exit 1
  20  
  21  user=$1
  22  machine=$2
  23  adresse=$3
  24  case $4 in 
  25      del) action="del" ;;
  26      *) action="add" ;;
  27  esac
  28  
  29  # recup parametres ldap
  30  . /etc/se3/config_l.cache.sh
  31  . /usr/share/se3/shares/shares.avail/connexion.sh $user $machine $adresse
  32  # On cherche la machine 
  33  res=$(ldapsearch -xLLL -D $adminRdn,$ldap_base_dn -w $adminPw -b $computersRdn,$ldap_base_dn "(&(objectClass=ipHost)(cn=$machine))" | grep "ipHostNumber:\|destinationIndicator:\|manager:\|macAddress:")
  34  # On cherche l'utilisateur
  35  resu=$(ldapsearch -xLLL -D $adminRdn,$ldap_base_dn -w $adminPw -b $peopleRdn,$ldap_base_dn "(uid=$user)" | grep "destinationIndicator:" | cut -d " " -f2)
  36  droit_u_p=$(echo $resu |cut -d ":" -f1)
  37  droit_u_t=$(echo $resu |cut -d ":" -f2)
  38  plage_u=$(echo $resu |cut -d ":" -f3)
  39  # on cherche le(s) parc(s) pour savoir si c'est un portable
  40  resp=$(ldapsearch -xLLL -D $adminRdn,$ldap_base_dn -w $adminPw -b $parcsRdn,$ldap_base_dn "(member=cn=$machine,$computersRdn,$ldap_base_dn)" cn | grep "cn: portables_*" | cut -d " " -f2)
  41  ldif="dn: cn=$machine,$computersRdn,$ldap_base_dn"
  42  if [ -z "$res" ]; then
  43      # impossible :
  44      exit 1
  45  else
  46      ldif="$ldif}\nchangetype: modify"
  47      ip=$(echo "$res" | grep ipHostNumber: | cut -d " " -f2)
  48      if [ -z  "$(echo $ip | grep $adresse)" ] ; then
  49          ldif="$ldif}\nadd: ipHostNumber"
  50          ldif="$ldif}\nipHostNumber: $adresse"
  51          ldif="$ldif}\n-"
  52      modif="1"
  53      fi    
  54      if [[ "$action" == "del" ]]; then
  55          if [ !  -z "$(echo $ip | sed s/$adresse//)" ] ; then
  56      ldif="$ldif}\ndelete: ipHostNumber"
  57          ldif="$ldif}\nipHostNumber: $adresse"
  58          ldif="$ldif}\n-"
  59      modif="1"
  60      fi
  61      fi
  62      userdn=$(echo "$res" | grep manager: | cut -d " " -f2)
  63      if [ -z "$userdn" ]; then 
  64          ldif="$ldif}\nadd: manager"
  65          ldif="$ldif}\nmanager: uid=$user,$peopleRdn,$ldap_base_dn"
  66          ldif="$ldif}\n-"
  67      modif="1"
  68      elif [ "$userdn" != "uid=$user,$peopleRdn,$ldap_base_dn"  -a -z "$resp" ]; then
  69          ldif="$ldif}\nreplace: manager"
  70          ldif="$ldif}\nmanager: uid=$user,$peopleRdn,$ldap_base_dn"
  71          ldif="$ldif}\n-"
  72      modif="1"
  73      fi
  74      droit_m=$(echo "$res" | grep -i destinationIndicator: | cut -d " " -f2)
  75      droit_m_p=$(echo "$droit_m" |cut -d ":" -f1)
  76      droit_m_t=$(echo "$droit_m" |cut -d ":" -f2)
  77      plage_m=$(echo "$droit_m" |cut -d ":" -f3)
  78  
  79  # mise a jour des droits pour le controle d'acces internet
  80  
  81  # les droits sont : pour les utilisateurs : 
  82  #     - eleve|prof|administratif|admin    : droits permanents
  83  #     - aucun|intranet|internet-cours|internet-pause|internet-soir|internet  : droits temporaires
  84  #     - cours[1-9]|tous
  85  
  86  # les droits sont : pour les machines : 
  87  #     - intranet|internet-cours|internet-pause|internet-soir|internet|total   : droits permanents 
  88  #     - aucun|intranet|internet-cours|internet-pause|internet-soir|internet|total  : droits temporaires (utilises par squidGuard)
  89  #     - cours[1-9]|tous
  90  
  91      if [ -z "$droit_u_p" ]; then  droit_u_p="eleve"; fi
  92      if [ -z "$droit_u_t" ]; then droit_u_t="aucun"; fi
  93      if [ -z "$droit_m_p" ]; then  droit_m_p="intranet"; fi
  94      if [ -z "$droit_m_t" ]; then droit_m_t="intranet"; fi
  95      if [ -z "$plage_u" ]; then  plage_u="tous"; fi
  96      if [ -z "$plage_m" ]; then plage_m="tous"; fi
  97    
  98      case $droit_u_p in
  99          eleve) # eleve
 100              case $droit_u_t in
 101                  aucun) # pas d'acces (puni ou charte non signee)
 102                      droit_m_t="aucun" 
 103                      plage_m="tous"
 104                  ;;
 105                     intranet) # acces par defaut (droits de la machine)
 106                      droit_m_t=$droit_m_p
 107                       plage_m="tous"
 108                  ;;
 109                  internet-cours|internet-pause|internet-soir|internet) # acces force par profs pour une duree donnee
 110                      droit_m_t=$droit_u_t
 111                      plage_m=$plage_u 
 112                  ;;
 113              esac 
 114          ;;       
 115          prof|administratif) # prof
 116              droit_m_t="internet"
 117              plage_m="tous" 
 118          ;; # pas de limites
 119          admin) # administrateur (non filtre et prioritaire)
 120              droit_m_t="total"
 121              plage_m="tous" 
 122          ;; # pas de limites
 123      esac
 124      droit="$droit_m_p:$droit_m_t:$plage_m"
 125      if [ "$droit_m" != "$droit" ]; then
 126         ldif="$ldif}\nreplace: destinationIndicator"
 127        ldif="$ldif}\ndestinationIndicator: $droit"
 128          ldif="$ldif}\n-"
 129      modif="1"
 130      fi
 131  fi
 132  
 133  echo -e "$ldif"
 134  if [ -n "$modif" ]; then
 135      echo -e "$ldif" | ldapmodify -x  -D $adminRdn,$ldap_base_dn -w $adminPw 
 136  fi
 137  


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