[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |