[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-internet/sources/usr/share/se3/shares/shares.avail/ -> se3-internet.sh (source)

   1  #!/bin/bash
   2  # $Id:$ ##
   3  #shares_Win95: netlogon
   4  #shares_Win2K: homes
   5  #shares_WinXP: homes
   6  #shares_Vista: homes
   7  #shares_Seven: homes
   8  #action: start
   9  #level: 11
  10  
  11  
  12  if [ "$1" == "--help" -o "$1" == "-h" ]
  13  then
  14  echo "Script  "
  15  echo "afin de permettre le controle internet et la gestin des parcs"
  16  echo "Usage : connexion-internet.sh utilisateur machine"
  17  echo "--help cette aide"
  18  exit
  19  fi
  20  
  21  [[ "$#" -lt "1" ]] && exit 1
  22  
  23  # Should be run once by machine
  24  [ -f  /home/netlogon/$2.lck ] && exit 0
  25  >/home/netlogon/$2.lck
  26  
  27  user=$1
  28  
  29  # test pour les clients linux
  30  regex_ip='^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'
  31  machine=$(echo "$2" | grep -E "$regex_ip")
  32  
  33  if [ -z "$machine" ]; then
  34      machine=$(echo "$2" | tr 'A-Z' 'a-z')
  35  else
  36      machinetmp=`nmblookup -A $machine | sed -n '2p' | cut -d' ' -f1 | sed 's/^[ \t]*//;s/[ \t]*$//'`
  37      machine=$(echo "$machinetmp" | tr 'A-Z' 'a-z')
  38  fi
  39  
  40  
  41  # recup parametres ldap
  42  
  43  . /etc/se3/config_l.cache.sh
  44  
  45  # On cherche la machine 
  46  res=$(ldapsearch -xLLL -D $adminRdn,$ldap_base_dn -w $adminPw -b $computersRdn,$ldap_base_dn "(&(objectClass=ipHost)(cn=$machine))" | grep "destinationIndicator:\|manager:")
  47  # On cherche l'utilisateur
  48  resu=$(ldapsearch -xLLL -D $adminRdn,$ldap_base_dn -w $adminPw -b $peopleRdn,$ldap_base_dn "(uid=$user)" | grep "destinationIndicator:" | cut -d " " -f2)
  49  droit_u_p=$(echo $resu |cut -d ":" -f1)
  50  droit_u_t=$(echo $resu |cut -d ":" -f2)
  51  plage_u=$(echo $resu |cut -d ":" -f3)
  52  # on cherche le(s) parc(s) pour savoir si c'est un portable
  53  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)
  54  ldif="dn: cn=$machine,$computersRdn,$ldap_base_dn"
  55  
  56      ldif="$ldif}\nchangetype: modify"
  57      userdn=$(echo "$res" | grep manager: | cut -d " " -f2)
  58      if [ -z "$userdn" ]; then 
  59          ldif="$ldif}\nadd: manager"
  60          ldif="$ldif}\nmanager: uid=$user,$peopleRdn,$ldap_base_dn"
  61          ldif="$ldif}\n-"
  62      modif="1"
  63      elif [ "$userdn" != "uid=$user,$peopleRdn,$ldap_base_dn"  -a -z "$resp" ]; then
  64          ldif="$ldif}\nreplace: manager"
  65          ldif="$ldif}\nmanager: uid=$user,$peopleRdn,$ldap_base_dn"
  66          ldif="$ldif}\n-"
  67      modif="1"
  68      fi
  69      droit_m=$(echo "$res" | grep -i destinationIndicator: | cut -d " " -f2)
  70      droit_m_p=$(echo "$droit_m" |cut -d ":" -f1)
  71      droit_m_t=$(echo "$droit_m" |cut -d ":" -f2)
  72      plage_m=$(echo "$droit_m" |cut -d ":" -f3)
  73  
  74  # mise à jour des droits pour le contrôle d'accès internet
  75  
  76  # les droits sont : pour les utilisateurs : 
  77  #     - eleve|prof|administratif|admin    : droits permanents
  78  #     - aucun|intranet|internet-cours|internet-pause|internet-soir|internet  : droits temporaires
  79  #     - cours[1-9]|tous
  80  
  81  # les droits sont : pour les machines : 
  82  #     - intranet|internet-cours|internet-pause|internet-soir|internet|total   : droits permanents 
  83  #     - aucun|intranet|internet-cours|internet-pause|internet-soir|internet|total  : droits temporaires (utilisés par squidGuard)
  84  #     - cours[1-9]|tous
  85  
  86      if [ -z "$droit_u_p" ]; then  droit_u_p="eleve"; fi
  87      if [ -z "$droit_u_t" ]; then droit_u_t="aucun"; fi
  88      if [ -z "$droit_m_p" ]; then  droit_m_p="intranet"; fi
  89      if [ -z "$droit_m_t" ]; then droit_m_t="intranet"; fi
  90      if [ -z "$plage_u" ]; then  plage_u="tous"; fi
  91      if [ -z "$plage_m" ]; then plage_m="tous"; fi
  92    
  93      case $droit_u_p in
  94          eleve) # eleve
  95              case $droit_u_t in
  96                  aucun) # pas d'accès (puni ou charte non signée) 
  97                      droit_m_t="aucun" 
  98                      plage_m="tous"
  99                  ;;
 100                     intranet) # accès par défaut (droits de la machine)
 101                      droit_m_t=$droit_m_p
 102                       plage_m="tous"
 103                  ;;
 104                  internet-cours|internet-pause|internet-soir|internet) # accès forcé par profs pour une durée donnée
 105                      droit_m_t=$droit_u_t
 106                      plage_m=$plage_u 
 107                  ;;
 108              esac 
 109          ;;       
 110          prof|administratif) # prof
 111              droit_m_t="internet"
 112              plage_m="tous" 
 113          ;; # pas de limites
 114          admin) # administrateur (non filtré et prioritaire)
 115              droit_m_t="total"
 116              plage_m="tous" 
 117          ;; # pas de limites
 118      esac
 119      droit="$droit_m_p:$droit_m_t:$plage_m"
 120      if [ "$droit_m" != "$droit" ]; then
 121         ldif="$ldif}\nreplace: destinationIndicator"
 122        ldif="$ldif}\ndestinationIndicator: $droit"
 123          ldif="$ldif}\n-"
 124      modif="1"
 125      fi
 126  
 127  
 128  echo -e "$ldif"
 129  if [ -n "$modif" ]; then
 130      echo -e "$ldif" | ldapmodify -x  -D $adminRdn,$ldap_base_dn -w $adminPw 
 131  fi
 132  
 133  
 134  
 135  rm -f /home/netlogon/$2.lck


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