« Contrôle parental » : différence entre les versions

Aller à la navigation Aller à la recherche
12 106 octets ajoutés ,  il y a 10 ans
maj 3.85.4
mAucun résumé des modifications
(maj 3.85.4)
Ligne 1 : Ligne 1 :
lien sur le [http://www.debian-fr.org/controle-parental-pour-le-pc-debian-de-vos-enfants-t42009.html forum]
lien sur le [http://www.debian-fr.org/controle-parental-pour-le-pc-debian-de-vos-enfants-t42009.html forum]
'''CTparental.sh'''
'''CTparental.sh'''
<code bash>
<code bash>#!/bin/bash  
#!/bin/bash  
# CTparental.sh
# CTparental.sh
#
#
# par Guillaume MARSAT
# par Guillaume MARSAT
# Corrections orthographiques par Pierre-Edouard TESSIER
# Corrections orthographiques par Pierre-Edouard TESSIER
# une partie du code est tirée du script alcasar-bl.sh créé par Franck BOUIJOUX et Richard REY
# une parti du code est tiré du script alcasar-bl.sh créé par Franck BOUIJOUX et Richard REY
# présente dans le code du projet alcasar en version 2.6.1 ; web page http://www.alcasar.net/
# présent dans le code du projet alcasar en version 2.6.1 ; web page http://www.alcasar.net/
   
   
# This script is distributed under the Gnu General Public License (GPL)
# This script is distributed under the Gnu General Public License (GPL)
Ligne 14 : Ligne 13 :
if [ $# -ge 1 ];then
if [ $# -ge 1 ];then
if [ $arg1 != "-listusers" ] ; then
if [ $arg1 != "-listusers" ] ; then
if [ ! $UID -le 499 ]; then # considère comme root tous les utilisateurs avec un uid inferieur ou egale a 499,ce qui permet à apt-get,urpmi,yum... de lancer le script sans erreur.
if [ ! $UID -le 499 ]; then # considaire comme root tous les utilisateurs avec un uid inferieur ou egale a 499,ce qui permet a apt-get,urpmi,yum... de lance le scripte sans erreur.
   echo "Il vous faut des droits root pour lancer ce script"
   echo "Il vous faut des droits root pour lancer ce script"
   exit 1
   exit 1
Ligne 72 : Ligne 71 :
HOURSCONNECT=OFF
HOURSCONNECT=OFF
GCTOFF=OFF
GCTOFF=OFF
# Parfeux minimal.
IPRULES=OFF
# Ping Externe
IPRULE1=OFF
# IP indésirables
IPRULE2=OFF
# connections ftp
IPRULE3=ON
# cups serveur , impriment partager sous cups
IPRULE4=OFF
# emesene,pindgin,amsn...
IPRULE5=OFF
#  smtp + pop ssl thunderbird ...
IPRULE6=ON
#  smtp + pop thunderbird ...
IPRULE7=OFF
# client-transmission
IPRULE8=OFF
# Ryzom
IPRULE9=OFF
# Regnum Online
IPRULE10=OFF
# NeverWinter Nights 1
IPRULE11=OFF
# LandesEternelles
IPRULE12=OFF
# SecondeLife
IPRULE13=OFF
# Batel for Wesnoth
IPRULE14=OFF
# Steam: CS 1.6
IPRULE15=OFF
EOF
EOF
fi
fi


Ligne 101 : Ligne 133 :


#### DEPENDANCES par DEFAULT #####
#### DEPENDANCES par DEFAULT #####
DEPENDANCES=${DEPENDANCES:=" dnsmasq lighttpd php5-cgi libnotify-bin notification-daemon resolvconf "}
DEPENDANCES=${DEPENDANCES:=" dnsmasq lighttpd php5-cgi libnotify-bin notification-daemon iptables-persistent rsyslog "}
#### RESOLVCONF EST PAS PRESENT DANS LA DISTRIBUTION ####
#### PACKETS EN CONFLI par DEFAULT #####
NORESOLVCONF=${NORESOLVCONF:=0}
CONFLICTS=${CONFLICTS:=" mini-httpd apache2 firewalld "}
 
#### COMMANDES de services par DEFAULT #####
#### COMMANDES de services par DEFAULT #####
CMDSERVICE=${CMDSERVICE:="service "}
CMDSERVICE=${CMDSERVICE:="service "}
Ligne 118 : Ligne 151 :
NWMANAGERstart=${NWMANAGERstart:="$CMDSERVICE network-manager start"}
NWMANAGERstart=${NWMANAGERstart:="$CMDSERVICE network-manager start"}
NWMANAGERrestart=${NWMANAGERrestart:="$CMDSERVICE network-manager restart"}
NWMANAGERrestart=${NWMANAGERrestart:="$CMDSERVICE network-manager restart"}
IPTABLESsave=${IPTABLESsave:="$CMDSERVICE iptables-persistent save"}


#### LOCALISATION du fichier PID lighttpd par default ####
#### LOCALISATION du fichier PID lighttpd par default ####
LIGHTTPpidfile=${LIGHTTPpidfile:="/var/run/lighttpd.pid"}
LIGHTTPpidfile=${LIGHTTPpidfile:="/var/run/lighttpd.pid"}
#### LOCALISATION du fichier de chargement de modules ####
FILEMODULESLOAD=${MODULESLOAD:="/etc/modules-load.d/modules.conf"}
RSYSLOGCTPARENTAL=${RSYSLOGCTPARENTAL:="/etc/rsyslog.d/iptables.conf"}


#### COMMANDES D'ACTIVATION DES SERVICES AU DEMARAGE DU PC ####
#### COMMANDES D'ACTIVATION DES SERVICES AU DEMARAGE DU PC ####
Ligne 127 : Ligne 166 :
ENDNSMASQ=${ENDNSMASQ:=""}
ENDNSMASQ=${ENDNSMASQ:=""}
ENNWMANAGER=${ENNWMANAGER:=""}
ENNWMANAGER=${ENNWMANAGER:=""}
ENIPTABLESSAVE=${ENIPTABLESSAVE:=""}
#### UID MINIMUM pour les UTILISATEUR
#### UID MINIMUM pour les UTILISATEUR
UIDMINUSER=${UIDMINUSER:=1000}
UIDMINUSER=${UIDMINUSER:=1000}
Ligne 134 : Ligne 174 :
DIRCONFENABLEDHTTPD=${DIRCONFENABLEDHTTPD:="/etc/lighttpd/conf-enabled"}
DIRCONFENABLEDHTTPD=${DIRCONFENABLEDHTTPD:="/etc/lighttpd/conf-enabled"}
CTPARENTALCONFHTTPD=${CTPARENTALCONFHTTPD:="$DIRCONFENABLEDHTTPD/10-CTparental.conf"}
CTPARENTALCONFHTTPD=${CTPARENTALCONFHTTPD:="$DIRCONFENABLEDHTTPD/10-CTparental.conf"}
RESOLVCONFMAIN=${RESOLVCONFMAIN:="/etc/resolvconf"}
RESOLVDNSMASQ=${RESOLVDNSMASQ:="$RESOLVCONFMAIN/run/interface/lo.dnsmasq"}
RESOLVCONFORDER=${RESOLVCONFORDER:="$RESOLVCONFMAIN/interface-order"}
DIRHTML=${DIRHTML:="/var/www/CTparental"}
DIRHTML=${DIRHTML:="/var/www/CTparental"}
DIRadminHTML=${DIRadminHTML:="/var/www/CTadmin"}
DIRadminHTML=${DIRadminHTML:="/var/www/CTadmin"}
Ligne 142 : Ligne 179 :
REALMADMINHTTPD=${REALMADMINHTTPD:="interface admin"}
REALMADMINHTTPD=${REALMADMINHTTPD:="interface admin"}
CMDINSTALL=""
CMDINSTALL=""
NOXSESSIOND=${NOXSESSIOND:=0}
LOGONDDIR=${LOGONDDIR:="/etc/X11/Xsession.d"}
if [ ! -d $LOGONDDIR ];then
  mkdir $LOGONDDIR
fi
STARTUPKDM=${STARTUPKDM:=/etc/kde/kdm/Xsetup}
STARTUPGDM=${STARTUPGDM:=/etc/gdm/PostLogin/Default}
CONFLIGHTDM=${CONFLIGHTDM:=/etc/lightdm/lightdm.conf}
if [ $(cat $CONFLIGHTDM | grep -c ^greeter-setup-script= ) -eq 1 ];then
STARTUPLIGHTDM=$(cat $CONFLIGHTDM | grep ^greeter-setup-script= | cut -d"=" -f2 )
else
STARTUPLIGHTDM=${STARTUPLIGHTDM:=/usr/local/bin/lightdm-greeter-script}
fi


XLOGONSCRIPTE=${XLOGONSCRIPTE:="$LOGONDDIR/10x11-CTparentalLogin"}
XLOGONSCRIPTEALT=${XLOGONSCRIPTEALT:="/usr/local/bin/10x11-CTparentalLogin"}
ADDUSERTOGROUP=${ADDUSERTOGROUP:="gpasswd -a "}
ADDUSERTOGROUP=${ADDUSERTOGROUP:="gpasswd -a "}
DELUSERTOGROUP=${DELUSERTOGROUP:="gpasswd -d "}
DELUSERTOGROUP=${DELUSERTOGROUP:="gpasswd -d "}
Ligne 164 : Ligne 185 :
   ## "Distribution basée sur yum exemple redhat, fedora..."
   ## "Distribution basée sur yum exemple redhat, fedora..."
   CMDINSTALL=${CMDINSTALL:="yum install "}
   CMDINSTALL=${CMDINSTALL:="yum install "}
   CMDREMOVE=${CMDREMOVE:="yum remove "}
   CMDREMOVE=${CMDREMOVE:="rpm -e "}
fi
fi
urpmi --help 2&> /dev/null
urpmi --help 2&> /dev/null
Ligne 170 : Ligne 191 :
   ## "Distribution basée sur urpmi exemple mandriva..."
   ## "Distribution basée sur urpmi exemple mandriva..."
   CMDINSTALL=${CMDINSTALL:="urpmi -a --auto "}
   CMDINSTALL=${CMDINSTALL:="urpmi -a --auto "}
   CMDREMOVE=${CMDREMOVE:="urpme --auto "}
   CMDREMOVE=${CMDREMOVE:="rpm -e "}
fi
fi
apt-get -h 2&> /dev/null
apt-get -h 2&> /dev/null
Ligne 176 : Ligne 197 :
   ## "Distribution basée sur apt-get exemple debian, ubuntu ..."
   ## "Distribution basée sur apt-get exemple debian, ubuntu ..."
   CMDINSTALL=${CMDINSTALL:="apt-get -y --force-yes install "}
   CMDINSTALL=${CMDINSTALL:="apt-get -y --force-yes install "}
   CMDREMOVE=${CMDREMOVE:="apt-get -y --force-yes remove --purge "}
   CMDREMOVE=${CMDREMOVE:="dpkg --purge "}
fi
fi


if [ $( echo $CMDINSTALL | wc -m ) -eq 1 ] ; then
if [ $( echo $CMDINSTALL | wc -m ) -eq 1 ] ; then
   echo "Aucun gestionnaire de paquet connu , n'a été détecté."
   echo "Aucun gestionner de paquet connu , n'a été détecté."
   set -e
   set -e
   exit 1
   exit 1
Ligne 188 : Ligne 209 :




interface_WAN=$(ip route | awk '/^default via/{print $5}' | sort -u ) # suppose que la passerelle est la route par défaut
interface_WAN=$(ip route | awk '/^default via/{print $5}' | sort -u ) # suppose que la passerelle est la route par default
ipbox=$(ip route | awk '/^default via/{print $3}' | sort -u )  # suppose que la passerelle est la route par default
ipinterface_WAN=$(ifconfig $interface_WAN | awk '/adr:/{print $2}' | cut -d":" -f2)
reseau_box=$(ip route | grep / | grep "$interface_WAN" | cut -d" " -f1 )
ip_broadcast=$(ifconfig $interface_WAN | awk '/Bcast:/{print $3}' | cut -d":" -f2)


if [ -f $DIR_CONF/resolv.conf.sav ];then
DNS1=$(cat /etc/resolv.conf | grep ^nameserver | cut -d " " -f2 | tr "\n" " " | cut -d " " -f1)
  DNS1=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d " " -f2 | tr "\n" " " | cut -d " " -f1)
DNS2=$(cat /etc/resolv.conf | grep ^nameserver | cut -d " " -f2 | tr "\n" " " | cut -d " " -f2)
  DNS2=$(cat $DIR_CONF/resolv.conf.sav | grep ^nameserver | cut -d " " -f2 | tr "\n" " " | cut -d " " -f2)
resolvconffix () {
else
resolvconf -u 2&> /dev/null
  DNS1=$(cat /etc/resolv.conf | grep ^nameserver | cut -d " " -f2 | tr "\n" " " | cut -d " " -f1)
if [ $? -eq 1 ];then
  DNS2=$(cat /etc/resolv.conf | grep ^nameserver | cut -d " " -f2 | tr "\n" " " | cut -d " " -f2)
if [ -f /run/resolvconf/interface/original.resolvconf ] ; then
cat /run/resolvconf/interface/original.resolvconf >  /etc/resolvconf/resolv.conf.d/tail
resolvconf -u
DNS1=$(cat /run/resolvconf/interface/original.resolvconf | grep ^nameserver | cut -d " " -f2 | tr "\n" " " | cut -d " " -f1)
DNS2=$(cat /run/resolvconf/interface/original.resolvconf | grep ^nameserver | cut -d " " -f2 | tr "\n" " " | cut -d " " -f2)
fi
if [ -f /run/resolvconf/interface/$interface_WAN.dhclient ] ; then
cat /run/resolvconf/interface/$interface_WAN.dhclient >  /etc/resolvconf/resolv.conf.d/tail
resolvconf -u
DNS1=$(cat /run/resolvconf/interface/$interface_WAN.dhclient | grep ^nameserver | cut -d " " -f2 | tr "\n" " " | cut -d " " -f1)
DNS2=$(cat /run/resolvconf/interface/$interface_WAN.dhclient | grep ^nameserver | cut -d " " -f2 | tr "\n" " " | cut -d " " -f2)
fi
if [ -f /run/resolvconf/interface/NetworkManager ] ; then
cat /run/resolvconf/interface/NetworkManager >  /etc/resolvconf/resolv.conf.d/tail
resolvconf -u
DNS1=$(cat /run/resolvconf/interface/NetworkManager | grep ^nameserver | cut -d " " -f2 | tr "\n" " " | cut -d " " -f1)
DNS2=$(cat /run/resolvconf/interface/NetworkManager | grep ^nameserver | cut -d " " -f2 | tr "\n" " " | cut -d " " -f2)
fi
fi
fi
}
resolvconffix


PRIVATE_IP="127.0.0.10"
PRIVATE_IP="127.0.0.10"
Ligne 211 : Ligne 255 :
fi
fi
BL_SERVER="dsi.ut-capitole.fr"
BL_SERVER="dsi.ut-capitole.fr"
FILEIPBLACKLIST="$DIR_CONF/ip-blackliste"
CATEGORIES_ENABLED="$DIR_CONF/categories-enabled"
CATEGORIES_ENABLED="$DIR_CONF/categories-enabled"
BL_CATEGORIES_AVAILABLE="$DIR_CONF/bl-categories-available"
BL_CATEGORIES_AVAILABLE="$DIR_CONF/bl-categories-available"
Ligne 265 : Ligne 310 :
   rm -rf $tempDIR
   rm -rf $tempDIR
   mkdir $tempDIR
   mkdir $tempDIR
  # on attend que la connection remonte suite au redemarage de networkmanager
  echo "attente de connection au serveur de toulouse:"
  i=1
  while [ $(ping -c 1 $BL_SERVER 2> /dev/null | grep -c "1 received"  ) -eq 0 ]
  do
  echo -n .
  sleep 1
  i=$(($i + 1 ))
  if [ $i -ge 40 ];then # si au bout de 40 secondes on a toujours pas de connection on considaire qu'il y a une erreur
echo "connection a $BL_SERVER impossible."
set -e
exit 1
  fi
  done
  echo
  echo "connection établit:"
 
   wget -P $tempDIR http://$BL_SERVER/blacklists/download/blacklists.tar.gz 2>&1 | cat
   wget -P $tempDIR http://$BL_SERVER/blacklists/download/blacklists.tar.gz 2>&1 | cat
   if [ ! $? -eq 0 ]; then
   if [ ! $? -eq 0 ]; then
Ligne 341 : Ligne 403 :
         do
         do
             echo -n "."
             echo -n "."
             # suppression des @IP, de caractères acccentués et des lignes commentées ou vides
             # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
             cp -f $tempDIR/blacklists/$DOMAINE/domains $FILE_tmp
             cp -f $tempDIR/blacklists/$DOMAINE/domains $FILE_tmp
             $SED -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/d' $FILE_tmp
             $SED -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/d' $FILE_tmp
Ligne 360 : Ligne 422 :
         mkdir  $tempDIR
         mkdir  $tempDIR
         echo -n "."
         echo -n "."
  # suppression des @IP, de caractères acccentués et des lignes commentées ou vides
  # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
         cp -f $DNS_FILTER_OSSI $FILE_tmp
         cp -f $DNS_FILTER_OSSI $FILE_tmp
         $SED -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/d' $FILE_tmp
         $SED -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/d' $FILE_tmp
Ligne 433 : Ligne 495 :


dnsmasqon () {
dnsmasqon () {
   categorie1=`sed -n "1 p" $CATEGORIES_ENABLED` # on considère que si la 1ère catégorie activée est un blacklist on fonctionne par blacklist.
   categorie1=`sed -n "1 p" $CATEGORIES_ENABLED` # on considère que si la 1ère categorie activée est un blacklist on fonctionne par blacklist.
   is_blacklist=`grep $categorie1 $BL_CATEGORIES_AVAILABLE |wc -l`
   is_blacklist=`grep $categorie1 $BL_CATEGORIES_AVAILABLE |wc -l`
   if [ $is_blacklist -ge "1" ] ; then
   if [ $is_blacklist -ge "1" ] ; then
Ligne 442 : Ligne 504 :
   conf-dir=$DIR_DNS_BLACKLIST_ENABLED
   conf-dir=$DIR_DNS_BLACKLIST_ENABLED
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name  # zone de definition de noms DNS locaux
   # conf-file=$DIR_DEST_ETC/alcasar-dns-name  # zone de definition de noms DNS locaux
  interface=lo
  listen-address=127.0.0.1
   no-dhcp-interface=$interface_WAN
   no-dhcp-interface=$interface_WAN
   bind-interfaces
   bind-interfaces
Ligne 448 : Ligne 512 :
   expand-hosts
   expand-hosts
   bogus-priv
   bogus-priv
  port=54
   server=$DNS1
   server=$DNS1
   server=$DNS2
   server=$DNS2
Ligne 459 : Ligne 524 :
dnsmasqoff () {
dnsmasqoff () {
   $SED "s?^DNSMASQ.*?DNSMASQ=OFF?g" $FILE_CONF
   $SED "s?^DNSMASQ.*?DNSMASQ=OFF?g" $FILE_CONF
  cat << EOF > $DNSMASQCONF
}
        # Configuration file for "dnsmasq with blackhole"
ipMaskValide() {
   # Inclusion de la blacklist <domains> de Toulouse dans la configuration
ip=$(echo $1 | cut -d"/" -f1)
  # conf-dir=$DIR_DNS_BLACKLIST_ENABLED
mask=$(echo $1 | grep "/" | cut -d"/" -f2)
  # conf-file=$DIR_DEST_ETC/alcasar-dns-name  # zone de definition de noms DNS locaux
if [ $(echo $1 | grep -c "^\(\(2[0-5][0-5]\|2[0-4][0-9]\|1[0-9][0-9]\|[0-9]\{1,2\}\)\.\)\{3\}\(2[0-5][0-5]\|2[0-4][0-9]\|1[0-9][0-9]\|[0-9]\{1,2\}\)$") -eq 1 ];then
  no-dhcp-interface=$interface_WAN
echo 1
  bind-interfaces
return 1
  cache-size=0
fi
  domain-needed
if [ ! $(echo $ip | grep -c "^\(\(2[0-5][0-5]\|2[0-4][0-9]\|1[0-9][0-9]\|[0-9]\{1,2\}\)\.\)\{3\}\(2[0-5][0-5]\|2[0-4][0-9]\|1[0-9][0-9]\|[0-9]\{1,2\}\)$") -eq 1 ];then
  expand-hosts
echo 0
  bogus-priv
return 0
  server=$DNS1
fi
  server=$DNS2
if [ $(echo $mask | grep -c "^\([1-9]\|[1-2][0-9]\|3[0-2]\)$") -eq 1 ];then
 
echo 1
EOF
return 1
fi
i=1
octn=255
result=1
while [ $i -le 4 ]
do
oct=$( echo $mask | grep '\.'| cut -d "." -f$i )
if [ -z $oct ] ; then
result=0
break
fi
if [ ! $octn -eq 255 ];then
if [ ! $oct -eq 0 ];then
result=0
break
fi
fi
octn=$oct
if [ ! $oct -eq 255 ] &&  [ ! $oct -eq 254 ]  &&  [ ! $oct -eq 252 ] &&  [ ! $oct -eq 248 ] &&  [ ! $oct -eq 240 ] &&  [ ! $oct -eq 224 ] &&  [ ! $oct -eq 192 ] &&  [ ! $oct -eq 128 ] &&  [ ! $oct -eq 0 ]; then
result=0
break
  fi
i=$( expr $i + 1 )
done
   echo $result
  return $result
}
ipglobal () {
## parametrage pour ce protéger contre les attaques par spoofing et par synflood
    ### SUPPRESSION de TOUTES LES ANCIENNES TABLES (OUVRE TOUT!!) ###
    /sbin/iptables -F
    /sbin/iptables -X
    ### BLOQUE TOUT PAR DEFAUT (si aucune règle n'est définie par la suite) ###
    /sbin/iptables -P INPUT DROP
    /sbin/iptables -P OUTPUT DROP
    /sbin/iptables -P FORWARD DROP
    # TCP Syn Flood
    /sbin/iptables -A INPUT -i $interface_WAN -p tcp --syn -m limit --limit 3/s -j ACCEPT
    # UDP Syn Flood
    /sbin/iptables -A INPUT -i $interface_WAN -p udp -m limit --limit 10/s -j ACCEPT
    # Ping Externe
if [ $(cat $FILE_CONF | grep -c IPRULE1=ON ) -eq 1 ];then
      iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
      iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
fi
### IP indésirables
    if [ $(cat $FILE_CONF | grep -c IPRULE2=ON ) -eq 1 ];then
      if [ -e $FILEIPBLACKLIST ]
      then
  while read ligne
  do
ipdrop=`echo $ligne | cut -d " " -f1` 
    if [ $( ipMaskValide $ipdrop ) -eq 1 ] ;then
iptables -I INPUT  -s $ipdrop -j DROP
iptables -I OUTPUT  -d $ipdrop -j DROP
fi
      done < $FILEIPBLACKLIST
      else
    echo >  $FILEIPBLACKLIST
    chown root:root  $FILEIPBLACKLIST
    chmod 750  $FILEIPBLACKLIST
      fi
    fi
    ### ACCEPT ALL interface loopback ###
    iptables -A INPUT  -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    ### accepte en entrée les connexions déjà établies (en gros cela permet d'accepter
    ### les connexions initiées par sont propre PC)
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
   
    ### DHCP
    iptables -A OUTPUT -o $interface_WAN -p udp --sport 68 --dport 67 -j ACCEPT
    iptables -A INPUT -i $interface_WAN -p udp --sport 67 --dport 68 -j ACCEPT
    ### DNS indispensable pour naviguer facilement sur le web ###
    iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
    iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
    iptables -A OUTPUT -d 127.0.0.1 -p tcp -m tcp --dport 54 -j ACCEPT
    iptables -A OUTPUT -d 127.0.0.1 -p udp -m udp --dport 54 -j ACCEPT
    ### HTTP navigation internet non sécurisée ###
    iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
   
    ### HTTPS pour le site des banques .... ###
    iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
   
    ### ping ... autorise à "pinger" un ordinateur distant ###
    iptables -A OUTPUT -p icmp -j ACCEPT
   
    ### clientNTP ... syncro à un serveur de temps ###
    iptables -A OUTPUT -p udp -m udp --dport 123 -j ACCEPT
   
    ### ftp


$DNSMASQrestart
    if [ $(cat $FILE_CONF | grep -c IPRULE3=ON ) -eq 1 ];then
}
iptables -A OUTPUT -p tcp --dport 21  -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
dnsmasqwhitelistonly () {
iptables -A OUTPUT -p tcp --dport 1023:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
  $SED "s?^DNSMASQ.*?DNSMASQ=WHITE?g" $FILE_CONF
    fi
  cat << EOF > $DNSMASQCONF
   
        # Configuration file for "dnsmasq with blackhole"
    ### cups serveur , impriment partager sous cups
  # Inclusion de la blacklist <domains> de Toulouse dans la configuration
if [ $(cat $FILE_CONF | grep -c IPRULE4=ON ) -eq 1 ] ; then
  conf-dir=$DIR_DNS_WHITELIST_ENABLED
iptables -A OUTPUT -d $ip_broadcast -p udp -m udp --sport 631 --dport 631 -j ACCEPT # diffusion des imprimantes partager sur le réseaux
  # conf-file=$DIR_DEST_ETC/alcasar-dns-name  # zone de definition de noms DNS locaux
iptables -A INPUT -s $reseau_box -m state --state NEW -p TCP --dport 631 -j ACCEPT
  no-dhcp-interface=$interface_WAN
iptables -I INPUT -s $ipbox -m state --state NEW -p TCP --dport 631 -j DROP # drop les requette provenent de la passerelle
   bind-interfaces
fi
  cache-size=0
    ### emesene,pindgin,amsn...  ####
  domain-needed
    if [ $(cat $FILE_CONF | grep -c IPRULE5=ON ) -eq 1 ] ; then
  expand-hosts
iptables -A OUTPUT -p tcp -m tcp --dport 1863 -j ACCEPT   
  bogus-priv
iptables -A OUTPUT -p tcp -m tcp --dport 6891:6900 -j ACCEPT # pour transfert de fichiers , webcam
  server=$DNS1
iptables -A OUTPUT -p udp -m udp --dport 6891:6900 -j ACCEPT # pour transfert de fichiers , webcam
  server=$DNS2
    fi
  address=/#/$PRIVATE_IP #redirige vers $PRIVATE_IP pour tout ce qui n'a pas été resolu dans les listes blanches
   
EOF
    ### smtp + pop ssl thunderbird ...  ####
    if [ $(cat $FILE_CONF | grep -c IPRULE6=ON ) -eq 1 ]
    then
iptables -A OUTPUT -p tcp -m tcp --dport 993 -j ACCEPT # imap/ssl
iptables -A OUTPUT -p tcp -m tcp --dport 995 -j ACCEPT # pop/ssl
iptables -A OUTPUT -p tcp -m tcp --dport 465 -j ACCEPT      # smtp/ssl
    fi
    ###  smtp + pop thunderbird ...  ###
    if [ $(cat $FILE_CONF | grep -c IPRULE7=ON ) -eq 1 ]
then
        iptables -A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
        iptables -A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT
    fi
 
    ### client-transmission
    # ouvre beaucoup de ports
    if [ $(cat $FILE_CONF | grep -c IPRULE8=ON ) -eq 1 ]
    then
      iptables -A OUTPUT -p udp -m udp --sport 51413 --dport 1023:65535  -j ACCEPT
      iptables -A OUTPUT -p tcp -m tcp --sport 30000:65535 --dport 1023:65535  -j ACCEPT
    fi
###Ryzom
if [ $(cat $FILE_CONF | grep -c IPRULE9=ON ) -eq 1 ]
then
srvupdateRtzom=178.33.44.72
srvRyzom1=176.31.229.93
iptables -A OUTPUT  -d $srvupdateRtzom -p tcp --dport 873 -j ACCEPT
iptables -A OUTPUT  -d $srvRyzom1 -p tcp --dport 43434 -j ACCEPT
iptables -A OUTPUT  -d $srvRyzom1 -p tcp --dport 50000 -j ACCEPT
iptables -A OUTPUT  -d $srvRyzom1 -p tcp --dport 40916 -j ACCEPT
iptables -A OUTPUT  -d $srvRyzom1 -p udp --dport 47851:47860 -j ACCEPT
iptables -A OUTPUT  -d $srvRyzom1 -p tcp --dport 47851:47860 -j ACCEPT
fi
    ### Regnum Online
    if [ $(cat $FILE_CONF | grep -c IPRULE10=ON ) -eq 1 ]
    then
  iptables -A OUTPUT  -d 91.123.197.131 -p tcp --dport 47300 -j ACCEPT # autentification
iptables -A OUTPUT  -d 91.123.197.142 -p tcp --dport 48000:48002  -j ACCEPT # nemon
    fi
   
    ### NeverWinter Nights 1
    if [ $(cat $FILE_CONF | grep -c IPRULE11=ON ) -eq 1 ];then
      iptables -A OUTPUT  -p udp --dport 5120:5121 -j ACCEPT
      iptables -I OUTPUT  -d 204.50.199.9 -j DROP # nwmaster.bioware.com permet d'éviter le temps d'attente avant l'ouverture du multijoueur
    fi
    ### LandesEternelles
    if [ $(cat $FILE_CONF | grep -c IPRULE12=ON ) -eq 1 ]
    then
        iptables -A OUTPUT  -d 62.93.225.45 -p tcp --dport 3000 -j ACCEPT
    fi
    ### SecondeLife
    if [ $(cat $FILE_CONF | grep -c IPRULE13=ON ) -eq 1 ]
   then
     
      iptables -A INPUT  -s 216.82.0.0/18 -p tcp --dport 1023:65535 -j ACCEPT # Secondelife
      iptables -A INPUT  -s 64.94.252.0/23 -p tcp --dport 1023:65535 -j ACCEPT # Voice
      iptables -A INPUT  -s 70.42.62.0/24 -p tcp --dport 1023:65535 -j ACCEPT # Voice
      iptables -A INPUT  -s 74.201.98.0/23 -p tcp --dport 1023:65535 -j ACCEPT # Voice
      iptables -A INPUT  -s 216.82.0.0/18 -p udp --dport 1023:65535 -j ACCEPT # Secondelife
      iptables -A INPUT  -s 64.94.252.0/23 -p udp --dport 1023:65535 -j ACCEPT # Voice
      iptables -A INPUT  -s 70.42.62.0/24 -p udp --dport 1023:65535 -j ACCEPT # Voice
      iptables -A INPUT  -s 74.201.98.0/23 -p udp --dport 1023:65535 -j ACCEPT # Voice
      iptables -A OUTPUT  -d 216.82.0.0/18 -p tcp --sport 1023:65535 -j ACCEPT # Secondelife
      iptables -A OUTPUT  -d 64.94.252.0/23 -p tcp --sport 1023:65535 -j ACCEPT # Voice
      iptables -A OUTPUT  -d 70.42.62.0/24 -p tcp --sport 1023:65535 -j ACCEPT # Voice
      iptables -A OUTPUT  -d 74.201.98.0/23  -p tcp --sport 1023:65535 -j ACCEPT # Voice
      iptables -A OUTPUT  -d 216.82.0.0/18 -p udp --sport 1023:65535 -j ACCEPT # Secondelife
      iptables -A OUTPUT  -d 64.94.252.0/23 -p udp --sport 1023:65535 -j ACCEPT # Voice
      iptables -A OUTPUT  -d 70.42.62.0/24 -p udp --sport 1023:65535 -j ACCEPT # Voice
      iptables -A OUTPUT  -d 74.201.98.0/23  -p udp --sport 1023:65535 -j ACCEPT # Voice
    fi
   
    ### Batel for Wesnoth
    if [ $(cat $FILE_CONF | grep -c IPRULE14=ON ) -eq 1 ];then
      #14998 pour version stable.
      #14999 pour version stable précédente.
      #15000 pour version de dévelopement.
      #15001 télécharger addons
      iptables -A OUTPUT  -d 65.18.193.12 -p tcp --sport 1023:65535 --dport 14998:15001 -j ACCEPT
      iptables -A INPUT  -p tcp --sport 1023:65535 --dport 15000 -j ACCEPT
    fi
   
    # Steam: CS 1.6
    if [ $(cat $FILE_CONF | grep -c IPRULE15=ON ) -eq 1 ];then
   
        iptables -A INPUT -p tcp --sport 27030 -j ACCEPT
        iptables -A OUTPUT -p udp --dport 27015:27020 -j ACCEPT
    iptables -A INPUT -p udp --sport 27015:27020 -j ACCEPT
      iptables -A OUTPUT -p tcp --dport 27030 -j ACCEPT
    fi
   
  ### LOG ### Log tout ce qui qui n'est pas accepté par une règles précédente                 
  /sbin/iptables -A OUTPUT -j LOG  --log-prefix "iptables: "
  /sbin/iptables -A INPUT -j LOG  --log-prefix "iptables: "
  /sbin/iptables -A FORWARD -j LOG  --log-prefix "iptables: "


$DNSMASQrestart
}
}


iptableson () {
  # Redirect DNS requests
  # note: http://superuser.com/a/594164
resolvconffix


FoncHTTPDCONF () {
  /sbin/iptables -t nat -N ctparental
$LIGHTTPDstop
   /sbin/iptables -t nat -A OUTPUT -j ctparental
rm -rf $DIRHTML/*
mkdir -v $DIRHTML
if [ ! -z $DIRhtmlPersonaliser ];then
   cp -r $DIRhtmlPersonaliser/* $DIRHTML
else
s="span"
st="style"
c="$c"
cab=";\">"


cat << EOF > $DIRHTML/index.html
  # Force non priviledged users to use dnsmasq
  <HTML>
      for user in `listeusers` ; do
<HEAD>
      if  [ $(groups $user | grep -c " ctoff$") -eq 0 ];then
   <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
        /sbin/iptables -t nat -A ctparental -m owner --uid-owner "$user" -p tcp --dport 53 -j DNAT --to 127.0.0.1:54
   <TITLE>danger</TITLE>
        /sbin/iptables -t nat -A ctparental -m owner --uid-owner "$user" -p udp --dport 53 -j DNAT --to 127.0.0.1:54
</HEAD>
      fi
<BODY LANG="fr-FR" DIR="LTR">
      done
<CENTER>
 
<img alt="Site dangereux pour des mineurs"
  if [ $(cat $FILE_CONF | grep -c IPRULES=ON ) -eq 1 ];then
   HEIGHT="600"   
    ipglobal
   src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAACgCAYAAACPOrcQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
  fi
AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAuGSURB
 
VHic7d17jFTlGcfx7zMol7KriRpF3Sii3FyooE1EWuNaFrFeWjXWqEBCmyYtrSa2iX9g+wcx9RZN
cat << EOF > $RSYSLOGCTPARENTAL 
kya29i+1ETWKMSZI1AiClyI2KiJyFa8BBC9EuyAXhad/vDO7s8PszpyZc857zrzPJ9nsZvac931g
:msg,contains,"iptables" /var/log/iptables.log
fnnf2Zlz3ldUFVNBZCQwDhhf/H480A60Fb+X/9xWPGsP0FP2vfznr4AtwGZgC6p70/qn5IUEHUSR
& ~
EcAFwGRc6Epfpybc83ZcKEtf64DXUd2XcL+ZFVYQRYYB04CLi1/TgKFea+pzEFgNrCh+rUb1gN+S
EOF
0tP6QRQ5B7gSF7zpwHC/BdVtP7AKF8olqK71XE+iWjOIIh3AjcBcYJLnauLyHvAI8Biq23wXE7fW
 
CaJIO3AtMAfoAgpe60nOYWAlsAh4CtUev+XEI/9BdFPvrcA1wAjP1aRtH/A0cG/ep+78BlFkOnAb
# Save configuration so that it survives a reboot
cLnvUjJiKXAnqqt8F9KI/AVRZBawALjIdykZ9TJwF6ov+C4kivwEUeQq4C/Aeb5LyYm3gL+i+ozv
  $IPTABLESsave
QuqR/SCKTADuB2b4LiWnlgM3obrJdyGDye5fliIjEbkbeBcLYTNmAO8icnfxo8tMyuaIKPJL4G9A
}
h+9SWsw24E+oLvZdSKVsBVHkLOABoNt3KS1uGTAf1a2+CynJztQsMhtYg4UwDd3AGkTm+C6kxH8Q
iptablesoff () {
RX6AyIO4Twraah1uYtMGPILIw1l47eh3ahaZDDwBTPRXhMFdinY9qu/4KsDfiCjyW+C/WAizYDyw
  #if [ $(cat $FILE_CONF | grep -c IPRULES=ON ) -eq 1 ];then
GpGbfBWQ/ogoMhR4EJidbsemTouBuWlfC5luEEWOwX1Ib+8LZtsrwM9R/SatDtMLosgo4DlgSjod
  /sbin/iptables -F
miatAy5FdUcanaXzGlFkHPA6FsI8mQysKn7EmrjkgyhyPvAfYHTifZm4nQ68hsi0pDtKNogi3cBL
  /sbin/iptables -X
wAmJ9mOSdDywvPhcJia514huJFwOeH+z1MRiLzAD1TeSaDyZIIqcDbwKHBd/48aj3cCFqG6Iu+H4
  /sbin/iptables -P INPUT ACCEPT
gyhyOu41YdI3qRs/tgM/RvWTOBuN9zWiyInAi1gIW9mpwIvF5zo28QXRvVn9PDA2tjZNVo0Fni8+
  /sbin/iptables -P OUTPUT ACCEPT
57GIJ4giAjwJTI2lPZMHU4Eni8990+IaEf8MzIqpLZMfs3DPfdOa/2NFpAt3xe+QGOox+XMI6EZ1
  /sbin/iptables -P FORWARD ACCEPT
ZTONNBdEkZOAd4BRzRRhcm8nMAXVXY020PjULFIAHsdCaFwGHi9moiHNvEZciFvqzRhwWVjY6MmN
  #fi
Tc0iF+JWpPJ/z4vJksNAF6qvRj0xehBFjsbdbdcZtTMThPXAVFS/i3JSIyPaH7EQmoF14jISSbQR
  /sbin/iptables -t nat -D OUTPUT -j ctparental || /bin/true
UeQ0YAN2RY0Z3F7gbFQ/rfeEqCPi37EQmtpG4rJSt/pHRJHLgWej12QCdgWqS+s5sL4guv1I1gNn
  /sbin/iptables -t nat -F ctparental || /bin/true
NFeXCcxHQGc9+8fUOzXPx0JoojsDl52aao+IIsOBD4GTmy7LhOgzYAyq+wc7qJ4R8TdYCE3jTsZl
  /sbin/iptables -t nat -X ctparental || /bin/true
aFCDj4hueZAPsAUzTXO2AWeienCgA2qNiPOwEJrmdeCyNKCBR0SRo4D3sRvjTTw+Bsai+n21Xw42
  $IPTABLESsave
Is7BQmjiMxqXqaoGC+IfYi/FhG7ATFWfmkU6cbthGhO3Saiur3xwoBFxXrK1mIDNq/bgkSOiyBDc
}
n9t2C4BJwk6gA9VD5Q9WGxEvxUJokjMKl7F+qgVxXuKlmNDNq3yg/9QschywAxiWWkkmRAeAU1Dd
dnsmasqwhitelistonly  () {
XXqgckT8BRZCk7xhuKz1qgyirfZv0tIva5VT83bglJQLMmHagWrv8oV9QXSrx2+M3Nwtt8Dw4XEV
  $SED "s?^DNSMASQ.*?DNSMASQ=WHITE?g" $FILE_CONF
Z/Jm1y546KFGz55Y2tC8PIjzgX9Gburrr+HYYxstxOTd2rUwpeFdS36P6gPQ/zXiT5suyphoejPn
  cat << EOF > $DNSMASQCONF
gugWW+zyVIwJV1dpoc/SiPhDbC8Uk74TcNnrDeK5/moxgTsX+oKYyn5rxlQxASyIxr9+QbRd5I0v
        # Configuration file for "dnsmasq with blackhole"
EwEKxVtGx3guxoRrDCJDC8BZ2I4Axp8hwFkFbFo2/k0sAON9V2GCN74AxLq5nzENOLEAtPuuwgSv
  # Inclusion de la blacklist <domains> de Toulouse dans la configuration
3YJosqC9ALT5rsIEr81GRJMFNjWbTLCp2WSCTc0mE9ptU0eTCQWgx3cRJng9BWCP7ypM8PbYiGiy
  conf-dir=$DIR_DNS_WHITELIST_ENABLED
oMeCaLLApmaTCTY1m0ywqdlkQk8B+Nx3FSZ4nxeAzb6rMMHbXKCRpeiMidfGArAVOFTrSGMScgjY
  # conf-file=$DIR_DEST_ETC/alcasar-dns-name  # zone de definition de noms DNS locaux
WihuXfqh72pMsD5E9WDpogebno0vG6FvyZFNHgsxYdsEFkTjX78gvu2xEBO2t6EviO8CX/qrxQTq
  no-dhcp-interface=$interface_WAN
S1z2ikF0Wwus9FePCdTKYvb67SrwkqdiTLh6M1cexBUeCjFh681cXxDdDkA7fFRjgrSjtOsUwFEV
  bind-interfaces
v1wBzI7U3IIFMMw2NA3WF180ema/GbhyU8hfAQ82XJQx9fs1qr2b+NnG4caHGhuHu18sSbkoE54l
  cache-size=0
5SGEIzcOB3g4nVpMwB6ufKD/1AwgMgTYBoxKpSQTmp1AB6r9roE9ckR0ByxKqSgTnkWVIYRqIyKA
  domain-needed
SCfwXgpFmfBMQnV95YPVVwNzB76ZdEUmOG9WCyEMFETnHwkVY8I1YKaqT80AIkcB7wOjEynJhOZj
  expand-hosts
YCyq31f75cAjojvhrmRqMgG6a6AQwmAjIlDcufQDoCP+ukxAtgFnFu8YrWrwpYvdiffEXJQJzz2D
  bogus-priv
hRBqjYgAIsNx9z2fHF9dJiCfAWNQ3T/YQbUXc3cN3BdTUSY899UKIdQzIgKIjADWA2c0X5cJyEdA
  server=$DNS1
J6r7ah1Y3/YWrqGbmyzKhOfmekII9QYRQHUp8EyjFZngPFPMTF3qm5p7j5bTgA3AyOh1mYDsBc5G
  server=$DNS2
9dN6T4i285Rr+PaIRZnw3B4lhBB1RAQQORpYA3RGO9EEYj0wFdXvopwUfS8+18F84HDkc02rOwzM
  address=/#/$PRIVATE_IP #redirige vers $PRIVATE_IP pour tout ce qui n'a pas été resolu dans les listes blanches
jxpCaCSIAKqvAnc0dK5pZXcUsxFZ9Km590wpAMuAixtrwLSYFUA3qg3NlI0HEUDkJOAd7P6W0O0E
EOF
pqC6q9EGmtuv2XV8A7YYfMgOATc0E0JoNogAqiuBhU23Y/JqYTEDTWluau5tRQR4DpjVfGMmR14A
 
fkYMIYoniAAix+AW+5waT4Mm49YAXaj+L47G4gsigMiJwGvA2PgaNRn0PvATVGPbx7H514jlXGEz
$DNSMASQrestart
ge2xtmuyZDswM84QQtxBBFD9BLgE2F3rUJM7u4FLis9xrOIPIoDqBuAy3FUYpjXsBS4rPrexSyaI
}
AKpvAFcB3ybWh0nLt8BVxec0EfH+sVK1BzkfeBY4IdmOTEK+Aq5AdXWSnSQfRACRcbj3nEYn35mJ
 
0SfApeWLricluam5nOoW4ALc59ImH9YB09MIIaQVRADVncBFwPLU+jSNegW4ENXUtjtJL4hA8V34
 
y4BHU+3XRLEY9xbNN2l2mm4QwS1jojoH+B1Q88Zrk5oDuNs/r0P1QNqdp/PHyoC9y2TgCWCivyIM
FoncHTTPDCONF () {
sBm4HlVvr+HTHxHLqa4DfgQ8VOtQk5h/A+f5DCH4HhHLicwG/gW0+S4lEHtwNzplYuF+vyNiOdVH
$LIGHTTPDstop
cZeQLfNdSgCW4W75zEQIIUtBBFDdiupM4Drc4o4mXtuA61CdiepW38WUy1YQS1QXAxNwi4RGvkfW
rm -rf $DIRHTML/*
HOE73P/lhOL/beZk5zXiQEQmAPcDM3yXklPLgZvS+oSkUdkcEcupbkK1G7gaeMt3OTnyFnA1qt1Z
mkdir -v $DIRHTML
DyHkYUSsJDILWID7uNAc6WXcCv4v+C4kivwFsURkOnAbcLnvUjJiKXAnqqt8F9KI/AaxROQc4Fbg
if [ ! -z $DIRhtmlPersonaliser ];then
GmCE52rStg94GrgX1bW+i2lG/oNYItIOXAvMAbrIw+vfxhzG3ba7CHgK1R6/5cSjdYJYTqQDuBGY
  cp -r $DIRhtmlPersonaliser/* $DIRHTML
C0zyXE1c3gMeAR5DteXeY23NIJZzU/eVuFXLpgPD/RZUt/3AKtwqW0vyPvXW0vpBLCcyDJiGC+XF
else
xZ+Heq2pz0FgNS54K4DVPi7H8iWsIFZy+8dcAEwGxpd9nZpwz9txl16VvtYBr9e7FUQrCjuIAxEZ
s="span"
CYzDhXIccDzQjrsyqL3i59LVQnuAnrLv5T9/BWzBhW4Lqna/d4X/A/bydTBs1YRqAAAAAElFTkSu
st="style"
QmCC" />
c="$c"
</CENTER>
cab=";\">"
</BODY>
 
</HTML>
cat << EOF > $DIRHTML/index.html
EOF
  <HTML>
 
<HEAD>
fi
   <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
## GENERATION
   <TITLE>danger</TITLE>
 
</HEAD>
ln -s  $DIRHTML/index.html $DIRHTML/err404.html
<BODY LANG="fr-FR" DIR="LTR">
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d":" -f1)
<CENTER>
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d":" -f1)
<img alt="Site dangereux pour des mineurs"
chmod 644 $FILE_CONF
   HEIGHT="600"   
chown root:$GROUPHTTPD $FILE_CONF
   src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAACgCAYAAACPOrcQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
cat << EOF > $MAINCONFHTTPD
AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAuGSURB
server.modules = (
VHic7d17jFTlGcfx7zMol7KriRpF3Sii3FyooE1EWuNaFrFeWjXWqEBCmyYtrSa2iX9g+wcx9RZN
"mod_access",
kya29i+1ETWKMSZI1AiClyI2KiJyFa8BBC9EuyAXhad/vDO7s8PszpyZc857zrzPJ9nsZvac931g
"mod_alias",
fnnf2Zlz3ldUFVNBZCQwDhhf/H480A60Fb+X/9xWPGsP0FP2vfznr4AtwGZgC6p70/qn5IUEHUSR
"mod_redirect",
EcAFwGRc6Epfpybc83ZcKEtf64DXUd2XcL+ZFVYQRYYB04CLi1/TgKFea+pzEFgNrCh+rUb1gN+S
"mod_auth", #pour interface admin
0tP6QRQ5B7gSF7zpwHC/BdVtP7AKF8olqK71XE+iWjOIIh3AjcBcYJLnauLyHvAI8Biq23wXE7fW
"mod_fastcgi",  #pour interface admin (activation du php)
CaJIO3AtMAfoAgpe60nOYWAlsAh4CtUev+XEI/9BdFPvrcA1wAjP1aRtH/A0cG/ep+78BlFkOnAb
)
cLnvUjJiKXAnqqt8F9KI/AVRZBawALjIdykZ9TJwF6ov+C4kivwEUeQq4C/Aeb5LyYm3gL+i+ozv
auth.debug                = 0
QuqR/SCKTADuB2b4LiWnlgM3obrJdyGDye5fliIjEbkbeBcLYTNmAO8icnfxo8tMyuaIKPJL4G9A
auth.backend              = "htdigest"
h+9SWsw24E+oLvZdSKVsBVHkLOABoNt3KS1uGTAf1a2+CynJztQsMhtYg4UwDd3AGkTm+C6kxH8Q
auth.backend.htdigest.userfile = "$PASSWORDFILEHTTPD"
RX6AyIO4Twraah1uYtMGPILIw1l47eh3ahaZDDwBTPRXhMFdinY9qu/4KsDfiCjyW+C/WAizYDyw
 
GpGbfBWQ/ogoMhR4EJidbsemTouBuWlfC5luEEWOwX1Ib+8LZtsrwM9R/SatDtMLosgo4DlgSjod
server.document-root = "/var/www"
miatAy5FdUcanaXzGlFkHPA6FsI8mQysKn7EmrjkgyhyPvAfYHTifZm4nQ68hsi0pDtKNogi3cBL
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
wAmJ9mOSdDywvPhcJia514huJFwOeH+z1MRiLzAD1TeSaDyZIIqcDbwKHBd/48aj3cCFqG6Iu+H4
server.errorlog = "/var/log/lighttpd/error.log"
gyhyOu41YdI3qRs/tgM/RvWTOBuN9zWiyInAi1gIW9mpwIvF5zo28QXRvVn9PDA2tjZNVo0Fni8+
server.pid-file = "$LIGHTTPpidfile"
57GIJ4giAjwJTI2lPZMHU4Eni8990+IaEf8MzIqpLZMfs3DPfdOa/2NFpAt3xe+QGOox+XMI6EZ1
server.username = "$USERHTTPD"
ZTONNBdEkZOAd4BRzRRhcm8nMAXVXY020PjULFIAHsdCaFwGHi9moiHNvEZciFvqzRhwWVjY6MmN
server.groupname = "$GROUPHTTPD"
Tc0iF+JWpPJ/z4vJksNAF6qvRj0xehBFjsbdbdcZtTMThPXAVFS/i3JSIyPaH7EQmoF14jISSbQR
server.port = 80
UeQ0YAN2RY0Z3F7gbFQ/rfeEqCPi37EQmtpG4rJSt/pHRJHLgWej12QCdgWqS+s5sL4guv1I1gNn
server.bind = "127.0.0.1"
NFeXCcxHQGc9+8fUOzXPx0JoojsDl52aao+IIsOBD4GTmy7LhOgzYAyq+wc7qJ4R8TdYCE3jTsZl
 
aFCDj4hueZAPsAUzTXO2AWeienCgA2qNiPOwEJrmdeCyNKCBR0SRo4D3sRvjTTw+Bsai+n21Xw42
 
Is7BQmjiMxqXqaoGC+IfYi/FhG7ATFWfmkU6cbthGhO3Saiur3xwoBFxXrK1mIDNq/bgkSOiyBDc
index-file.names = ( "index.php", "index.html" )
n9t2C4BJwk6gA9VD5Q9WGxEvxUJokjMKl7F+qgVxXuKlmNDNq3yg/9QschywAxiWWkkmRAeAU1Dd
url.access-deny = ( "~", ".inc" )
XXqgckT8BRZCk7xhuKz1qgyirfZv0tIva5VT83bglJQLMmHagWrv8oV9QXSrx2+M3Nwtt8Dw4XEV
static-file.exclude-extensions = (".php", ".pl", ".fcgi" )
Z/Jm1y546KFGz55Y2tC8PIjzgX9Gburrr+HYYxstxOTd2rUwpeFdS36P6gPQ/zXiT5suyphoejPn
 
gugWW+zyVIwJV1dpoc/SiPhDbC8Uk74TcNnrDeK5/moxgTsX+oKYyn5rxlQxASyIxr9+QbRd5I0v
server.tag = ""
EwEKxVtGx3guxoRrDCJDC8BZ2I4Axp8hwFkFbFo2/k0sAON9V2GCN74AxLq5nzENOLEAtPuuwgSv
 
3YJosqC9ALT5rsIEr81GRJMFNjWbTLCp2WSCTc0mE9ptU0eTCQWgx3cRJng9BWCP7ypM8PbYiGiy
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
oMeCaLLApmaTCTY1m0ywqdlkQk8B+Nx3FSZ4nxeAzb6rMMHbXKCRpeiMidfGArAVOFTrSGMScgjY
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
WihuXfqh72pMsD5E9WDpogebno0vG6FvyZFNHgsxYdsEFkTjX78gvu2xEBO2t6EviO8CX/qrxQTq
S1z2ikF0Wwus9FePCdTKYvb67SrwkqdiTLh6M1cexBUeCjFh681cXxDdDkA7fFRjgrSjtOsUwFEV
v1wBzI7U3IIFMMw2NA3WF180ema/GbhyU8hfAQ82XJQx9fs1qr2b+NnG4caHGhuHu18sSbkoE54l
5SGEIzcOB3g4nVpMwB6ufKD/1AwgMgTYBoxKpSQTmp1AB6r9roE9ckR0ByxKqSgTnkWVIYRqIyKA
SCfwXgpFmfBMQnV95YPVVwNzB76ZdEUmOG9WCyEMFETnHwkVY8I1YKaqT80AIkcB7wOjEynJhOZj
YCyq31f75cAjojvhrmRqMgG6a6AQwmAjIlDcufQDoCP+ukxAtgFnFu8YrWrwpYvdiffEXJQJzz2D
hRBqjYgAIsNx9z2fHF9dJiCfAWNQ3T/YQbUXc3cN3BdTUSY899UKIdQzIgKIjADWA2c0X5cJyEdA
J6r7ah1Y3/YWrqGbmyzKhOfmekII9QYRQHUp8EyjFZngPFPMTF3qm5p7j5bTgA3AyOh1mYDsBc5G
9dN6T4i285Rr+PaIRZnw3B4lhBB1RAQQORpYA3RGO9EEYj0wFdXvopwUfS8+18F84HDkc02rOwzM
jxpCaCSIAKqvAnc0dK5pZXcUsxFZ9Km590wpAMuAixtrwLSYFUA3qg3NlI0HEUDkJOAd7P6W0O0E
pqC6q9EGmtuv2XV8A7YYfMgOATc0E0JoNogAqiuBhU23Y/JqYTEDTWluau5tRQR4DpjVfGMmR14A
fkYMIYoniAAix+AW+5waT4Mm49YAXaj+L47G4gsigMiJwGvA2PgaNRn0PvATVGPbx7H514jlXGEz
ge2xtmuyZDswM84QQtxBBFD9BLgE2F3rUJM7u4FLis9xrOIPIoDqBuAy3FUYpjXsBS4rPrexSyaI
AKpvAFcB3ybWh0nLt8BVxec0EfH+sVK1BzkfeBY4IdmOTEK+Aq5AdXWSnSQfRACRcbj3nEYn35mJ
0SfApeWLricluam5nOoW4ALc59ImH9YB09MIIaQVRADVncBFwPLU+jSNegW4ENXUtjtJL4hA8V34
y4BHU+3XRLEY9xbNN2l2mm4QwS1jojoH+B1Q88Zrk5oDuNs/r0P1QNqdp/PHyoC9y2TgCWCivyIM
sBm4HlVvr+HTHxHLqa4DfgQ8VOtQk5h/A+f5DCH4HhHLicwG/gW0+S4lEHtwNzplYuF+vyNiOdVH
cZeQLfNdSgCW4W75zEQIIUtBBFDdiupM4Drc4o4mXtuA61CdiepW38WUy1YQS1QXAxNwi4RGvkfW
HOE73P/lhOL/beZk5zXiQEQmAPcDM3yXklPLgZvS+oSkUdkcEcupbkK1G7gaeMt3OTnyFnA1qt1Z
DyHkYUSsJDILWID7uNAc6WXcCv4v+C4kivwFsURkOnAbcLnvUjJiKXAnqqt8F9KI/AaxROQc4Fbg
GmCE52rStg94GrgX1bW+i2lG/oNYItIOXAvMAbrIw+vfxhzG3ba7CHgK1R6/5cSjdYJYTqQDuBGY
C0zyXE1c3gMeAR5DteXeY23NIJZzU/eVuFXLpgPD/RZUt/3AKtwqW0vyPvXW0vpBLCcyDJiGC+XF
xZ+Heq2pz0FgNS54K4DVPi7H8iWsIFZy+8dcAEwGxpd9nZpwz9txl16VvtYBr9e7FUQrCjuIAxEZ
CYzDhXIccDzQjrsyqL3i59LVQnuAnrLv5T9/BWzBhW4Lqna/d4X/A/bydTBs1YRqAAAAAElFTkSu
QmCC" />
</CENTER>
</BODY>
</HTML>
EOF
EOF


mkdir -p /usr/share/lighttpd/
fi
## GENERATION


if [ ! -f /usr/share/lighttpd/create-mime.assign.pl ];then
ln -s  $DIRHTML/index.html $DIRHTML/err404.html
cat << EOF > /usr/share/lighttpd/create-mime.assign.pl
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d":" -f1)
#!/usr/bin/perl -w
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d":" -f1)
use strict;
chmod 644 $FILE_CONF
open MIMETYPES, "/etc/mime.types" or exit;
chown root:$GROUPHTTPD $FILE_CONF
print "mimetype.assign = (\n";
cat << EOF > $MAINCONFHTTPD
my %extensions;
server.modules = (
while(<MIMETYPES>) {
"mod_access",
  chomp;
"mod_alias",
  s/\#.*//;
"mod_redirect",
  next if /^\w*$/;
"mod_auth", #pour interface admin
  if(/^([a-z0-9\/+-.]+)\s+((?:[a-z0-9.+-]+[ ]?)+)$/) {
"mod_fastcgi",  #pour interface admin (activation du php)
    foreach(split / /, \$2) {
)
      # mime.types can have same extension for different
auth.debug                = 0
      # mime types
auth.backend              = "htdigest"  
      next if \$extensions{\$_};
auth.backend.htdigest.userfile = "$PASSWORDFILEHTTPD"
      \$extensions{\$_} = 1;
      print "\".\$_\" => \"\$1\",\n";
    }
  }
}
print ")\n";
EOF
chmod +x /usr/share/lighttpd/create-mime.assign.pl
fi


server.document-root = "/var/www"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
#server.errorlog = "/var/log/lighttpd/error.log" # ne pas decommenter sur les eeepc qui on /var/log  en tmpfs
server.pid-file = "$LIGHTTPpidfile"
server.username = "$USERHTTPD"
server.groupname = "$GROUPHTTPD"
server.port = 80
server.bind = "127.0.0.1"


if [ ! -f /usr/share/lighttpd/include-conf-enabled.pl ];then
cat << EOF > /usr/share/lighttpd/include-conf-enabled.pl
#!/usr/bin/perl -wl
use strict;
use File::Glob ':glob';


my \$confdir = shift || "/etc/lighttpd/";
index-file.names = ( "index.php", "index.html" )
my \$enabled = "conf-enabled/*.conf";
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = (".php", ".pl", ".fcgi" )


chdir(\$confdir);
server.tag = ""
my @files = bsd_glob(\$enabled);


for my \$file (@files)
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
{
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
        print "include \"\$file\"";
}
EOF
EOF
chmod +x /usr/share/lighttpd/include-conf-enabled.pl


fi
mkdir -p /usr/share/lighttpd/


mkdir -p $DIRCONFENABLEDHTTPD
if [ ! -f /usr/share/lighttpd/create-mime.assign.pl ];then
mkdir -p $DIRadminHTML
cat << EOF > /usr/share/lighttpd/create-mime.assign.pl
cp -rf CTadmin/* $DIRadminHTML/
#!/usr/bin/perl -w
#if [ $noinstalldep = "1" ]; then
use strict;
# addadminhttpd "admin" "admin"
open MIMETYPES, "/etc/mime.types" or exit;
#else
print "mimetype.assign = (\n";
clear
my %extensions;
echo "Entrer le login pour l'interface d'administration :"
while(<MIMETYPES>) {
while (true); do
  chomp;
read loginhttp
  s/\#.*//;
case $loginhttp in
  next if /^\w*$/;
* )
  if(/^([a-z0-9\/+-.]+)\s+((?:[a-z0-9.+-]+[ ]?)+)$/) {
echo "login: $loginhttp" > /root/passwordCTadmin
    foreach(split / /, \$2) {
break
      # mime.types can have same extension for different
;;
      # mime types
esac
      next if \$extensions{\$_};
done
      \$extensions{\$_} = 1;
clear
      print "\".\$_\" => \"\$1\",\n";
echo "Entrer le mot de passe de $loginhttp :"
    }
while (true); do
  }
read password
}
case $password in
print ")\n";
* )
EOF
echo "password: $password" >> /root/passwordCTadmin
chmod +x /usr/share/lighttpd/create-mime.assign.pl
        addadminhttpd "$loginhttp" "$password"
fi
break
 
;;
 
esac
if [ ! -f /usr/share/lighttpd/include-conf-enabled.pl ];then
done
cat << EOF > /usr/share/lighttpd/include-conf-enabled.pl
#fi
#!/usr/bin/perl -wl
chmod 700 /root/passwordCTadmin
chown root:root /root/passwordCTadmin
cat << EOF > $CTPARENTALCONFHTTPD


fastcgi.server = (
use strict;
    ".php" => (
use File::Glob ':glob';
      "localhost" => (
 
        "bin-path" => "/usr/bin/php-cgi",
my \$confdir = shift || "/etc/lighttpd/";
        "socket" => "/run/lighttpd/php-fastcgi.sock",
my \$enabled = "conf-enabled/*.conf";
        "max-procs" => 4, # default value
        "bin-environment" => (
          "PHP_FCGI_CHILDREN" => "1", # default value
        ),
        "broken-scriptfilename" => "enable"
      ))
)
  fastcgi.map-extensions    = ( ".php3" => ".php",
                              ".php4" => ".php",
                              ".php5" => ".php",
                              ".phps" => ".php",
                              ".phtml" => ".php" )


\$HTTP["url"] =~ ".*CTadmin.*" {
chdir(\$confdir);
  auth.require = ( "" =>
my @files = bsd_glob(\$enabled);
                  (
                    "method"  => "digest",
                    "realm"  => "$REALMADMINHTTPD",
                    "require" => "user=$USERADMINHTTPD"
                  )
                )


for my \$file (@files)
{
        print "include \"\$file\"";
}
}
\$SERVER["socket"] == "$PRIVATE_IP:80" {
server.document-root = "$DIRHTML"
server.errorfile-prefix = "$DIRHTML/err"
#ssl.engine = "enable"
#ssl.pemfile = "/etc/lighttpd/ssl/$PRIVATE_IP.pem"
}
EOF
EOF
chown root:$GROUPHTTPD $DREAB
chmod +x /usr/share/lighttpd/include-conf-enabled.pl
chmod 660 $DREAB
chown root:$GROUPHTTPD $DNS_FILTER_OSSI
chmod 660 $DNS_FILTER_OSSI
chown root:$GROUPHTTPD $CATEGORIES_ENABLED
chmod 660 $CATEGORIES_ENABLED
chmod 660 /etc/sudoers


sudotest=`grep Defaults:$USERHTTPD /etc/sudoers |wc -l`
if [ $sudotest -ge "1" ] ; then
    $SED "s?^Defaults:$USERHTTPD.*requiretty.*?Defaults:$USERHTTPD    \!requiretty?g" /etc/sudoers
else
    echo "Defaults:$USERHTTPD    !requiretty" >> /etc/sudoers
fi
fi


sudotest=`grep "$USERHTTPD ALL=" /etc/sudoers |wc -l`
mkdir -p $DIRCONFENABLEDHTTPD
if [ $sudotest -ge "1" ] ; then
mkdir -p $DIRadminHTML
    $SED "s?^$USERHTTPD.*?$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -gctalist,/usr/local/bin/CTparental.sh -gctulist,/usr/local/bin/CTparental.sh -gcton,/usr/local/bin/CTparental.sh -gctoff,/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff?g" /etc/sudoers
cp -rf CTadmin/* $DIRadminHTML/
else
#if [ $noinstalldep = "1" ]; then
    echo "$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -gctalist,/usr/local/bin/CTparental.sh -gctulist,/usr/local/bin/CTparental.sh -gcton,/usr/local/bin/CTparental.sh -gctoff,/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff" >> /etc/sudoers
# addadminhttpd "admin" "admin"
fi
#else
clear
 
echo "Entrer le login pour l'interface d'administration :"
sudotest=`grep %ctoff /etc/sudoers |wc -l`
while (true); do
if [ $sudotest -ge "1" ] ; then
read loginhttp
  $SED "s?^%ctoff.*?%ctoff ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -on?g" /etc/sudoers
case $loginhttp in
else
* )
  echo "%ctoff ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -on" >> /etc/sudoers
echo "login: $loginhttp" > /root/passwordCTadmin
fi
break
sudotest=`grep "ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh" /etc/sudoers |wc -l`
;;
if [ $sudotest -ge "1" ] ; then
esac
$SED "s?^ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh.*?ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -on?g" /etc/sudoers
done
else
clear
echo "ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -on" >> /etc/sudoers
echo "Entrer le mot de passe de $loginhttp :"
fi
while (true); do
unset sudotest
read password
   
case $password in
chmod 440 /etc/sudoers
* )
if [ ! -f $FILE_HCONF ] ; then
echo "password: $password" >> /root/passwordCTadmin
echo > $FILE_HCONF
        addadminhttpd "$loginhttp" "$password"
fi
break
chown root:$GROUPHTTPD $FILE_HCONF
;;
chmod 660 $FILE_HCONF
esac
listeusers > $FILE_GCTOFFCONF
done
chown root:$GROUPHTTPD $FILE_GCTOFFCONF
#fi
chmod 660 $FILE_GCTOFFCONF
chmod 700 /root/passwordCTadmin
if [ ! -f $FILE_HCOMPT ] ; then
chown root:root /root/passwordCTadmin
echo "date=$(date +%D)" > $FILE_HCOMPT
mkdir /run/lighttpd/
fi
chmod 770 /run/lighttpd/
chown root:$GROUPHTTPD $FILE_HCOMPT
chown root:$GROUPHTTPD /run/lighttpd/
chmod 660 $FILE_HCOMPT
cat << EOF > $CTPARENTALCONFHTTPD


chown -R root:$GROUPHTTPD $DIRHTML
fastcgi.server = (
chown -R root:$GROUPHTTPD $DIRadminHTML
    ".php" => (
$LIGHTTPDstart
      "localhost" => (
test=$?
        "bin-path" => "/usr/bin/php-cgi",
if [ ! $test -eq 0 ];then
        "socket" => "/run/lighttpd/php-fastcgi.sock",
echo "Erreur au lancement du service lighttpd "
        "max-procs" => 4, # default value
set -e
        "bin-environment" => (
exit 1
          "PHP_FCGI_CHILDREN" => "1", # default value
fi
        ),
        "broken-scriptfilename" => "enable"
      ))
)
  fastcgi.map-extensions    = ( ".php3" => ".php",
                              ".php4" => ".php",
                              ".php5" => ".php",
                              ".phps" => ".php",
                              ".phtml" => ".php" )
 
\$HTTP["url"] =~ ".*CTadmin.*" {
  auth.require = ( "" =>
                  (
                    "method"  => "digest",
                    "realm"  => "$REALMADMINHTTPD",
                    "require" => "user=$USERADMINHTTPD"
                  )
                )
 
}
\$SERVER["socket"] == "$PRIVATE_IP:80" {
server.document-root = "$DIRHTML"
server.errorfile-prefix = "$DIRHTML/err"
#ssl.engine = "enable"
#ssl.pemfile = "/etc/lighttpd/ssl/$PRIVATE_IP.pem"
}
}


install () {
EOF
groupadd ctoff
chown root:$GROUPHTTPD $DREAB
chmod 660 $DREAB
if [ $nomanuel -eq 0 ]; then
chown root:$GROUPHTTPD $DNS_FILTER_OSSI
vim -h 2&> /dev/null
chmod 660 $DNS_FILTER_OSSI
if [ $? -eq 0 ] ; then
chown root:$GROUPHTTPD $CATEGORIES_ENABLED
EDIT="vim "
chmod 660 $CATEGORIES_ENABLED
fi
chmod 660 /etc/sudoers
mono -h 2&> /dev/null
 
if [ $? -eq 0 ] ; then
sudotest=`grep Defaults:$USERHTTPD /etc/sudoers |wc -l`
EDIT=${EDIT:="mono "}
if [ $sudotest -ge "1" ] ; then
fi
    $SED "s?^Defaults:$USERHTTPD.*requiretty.*?Defaults:$USERHTTPD    \!requiretty?g" /etc/sudoers
vi -h 2&> /dev/null
else
if [ $? -eq 0 ] ; then
    echo "Defaults:$USERHTTPD    !requiretty" >> /etc/sudoers
EDIT=${EDIT:="vi "}
fi
fi
 
if [ -f gpl-3.0.fr.txt ] ; then
sudotest=`grep "$USERHTTPD ALL=" /etc/sudoers |wc -l`
cp -f gpl-3.0.fr.txt /usr/local/share/CTparental/
if [ $sudotest -ge "1" ] ; then
fi
    $SED "s?^$USERHTTPD.*?$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -gctalist,/usr/local/bin/CTparental.sh -gctulist,/usr/local/bin/CTparental.sh -gcton,/usr/local/bin/CTparental.sh -gctoff,/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff?g" /etc/sudoers
if [ -f gpl-3.0.txt ] ; then
else
cp -f gpl-3.0.txt /usr/local/share/CTparental/
    echo "$USERHTTPD ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -gctalist,/usr/local/bin/CTparental.sh -gctulist,/usr/local/bin/CTparental.sh -gcton,/usr/local/bin/CTparental.sh -gctoff,/usr/local/bin/CTparental.sh -tlu,/usr/local/bin/CTparental.sh -trf,/usr/local/bin/CTparental.sh -dble,/usr/local/bin/CTparental.sh -ubl,/usr/local/bin/CTparental.sh -dl,/usr/local/bin/CTparental.sh -on,/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -aupon,/usr/local/bin/CTparental.sh -aupoff" >> /etc/sudoers
fi
fi
if [ -f CHANGELOG ] ; then
cp -f CHANGELOG /usr/local/share/CTparental/
fi
if [ -f dist.conf ];then
cp -f dist.conf /usr/local/share/CTparental/dist.conf.orig
cp -f dist.conf $DIR_CONF/
fi
while (true); do
$EDIT $DIR_CONF/dist.conf
clear
cat $EDIT $DIR_CONF/dist.conf | grep -v -E ^#
echo "Entrer : S pour continuer avec ces parramêtres ."
echo "Entrer : Q pour Quiter l'installation."
echo "Entrer tous autre choix pour modifier les parramêtres."
read choi
case $choi in
S | s )
break
;;
Q | q )
exit
;;
esac
done
fi
if [ -f $DIR_CONF/dist.conf ];then
source  $DIR_CONF/dist.conf
fi


if [ -f /etc/NetworkManager/NetworkManager.conf ];then
sudotest=`grep %ctoff /etc/sudoers |wc -l`
    $SED "s/^dns=dnsmasq/#dns=dnsmasq/g" /etc/NetworkManager/NetworkManager.conf
if [ $sudotest -ge "1" ] ; then
    $NWMANAGERrestart
  $SED "s?^%ctoff.*?%ctoff ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -on?g" /etc/sudoers
    sleep 5
else
  fi
  echo "%ctoff ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -on"  >> /etc/sudoers
fi
sudotest=`grep "ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh" /etc/sudoers |wc -l`
if [ $sudotest -ge "1" ] ; then
$SED "s?^ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh.*?ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -on?g" /etc/sudoers
else
echo "ALL  ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -on" >> /etc/sudoers
fi
unset sudotest
   
chmod 440 /etc/sudoers
if [ ! -f $FILE_HCONF ] ; then
echo > $FILE_HCONF
fi
chown root:$GROUPHTTPD $FILE_HCONF
chmod 660 $FILE_HCONF
listeusers > $FILE_GCTOFFCONF
chown root:$GROUPHTTPD $FILE_GCTOFFCONF
chmod 660 $FILE_GCTOFFCONF
if [ ! -f $FILE_HCOMPT ] ; then
echo "date=$(date +%D)" > $FILE_HCOMPT
fi
chown root:$GROUPHTTPD $FILE_HCOMPT
chmod 660 $FILE_HCOMPT


      mkdir $tempDIR
chown -R root:$GROUPHTTPD $DIRHTML
      mkdir -p $DIR_CONF
chown -R root:$GROUPHTTPD $DIRadminHTML
      initblenabled
$LIGHTTPDstart
      cat /etc/resolv.conf > $DIR_CONF/resolv.conf.sav
test=$?
      if [ $noinstalldep = "0" ]; then
if [ ! $test -eq 0 ];then
      $CMDINSTALL $DEPENDANCES
echo "Erreur au lancement du service lighttpd "
      fi
set -e
      if [ ! -f blacklists.tar.gz ]
exit 1
      then
fi
        download
}
      else
 
        tar -xzf blacklists.tar.gz -C $tempDIR
install () {
        if [ ! $? -eq 0 ]; then
groupadd ctoff
            echo "Erreur d'extraction de l'archive, processus interrompu"
            uninstall
if [ $nomanuel -eq 0 ]; then  
            set -e
vim -h 2&> /dev/null
            exit 1
if [ $? -eq 0 ] ; then
        fi
EDIT="vim "
        rm -rf $DIR_DNS_FILTER_AVAILABLE/
        mkdir $DIR_DNS_FILTER_AVAILABLE
      fi
      adapt
      catChoice
      dnsmasqon
      $SED "s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g" $FILE_CONF
      confresolvconf
      FoncHTTPDCONF
      $ENCRON
      $ENLIGHTTPD
      $ENDNSMASQ
      $ENNWMANAGER
 
     
}
 
confresolvconf () {
if [ $NORESOLVCONF -eq 1 ] ; then
chattr -i /etc/resolv.conf
echo "nameserver 127.0.0.1" > /etc/resolv.conf
chattr +i /etc/resolv.conf
else
echo "nameserver 127.0.0.1" > $RESOLVDNSMASQ
if [ ! -f $RESOLVCONFORDER ];then
cat << EOF > $RESOLVCONFORDER
# interface-order(5)
lo.inet*
lo.dnsmasq
lo.pdnsd
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
hso*
em+([0-9])?[+([0-9]))*
p+([0-9]p+([0-9])?(_+([0-9]))*
eth*
ath*
wlan*
ppp*
*
EOF
fi
resolvconf -u
fi
}
updatelistgctoff () {
## on ajoute tous les utilisateurs manquants dans la liste
for PCUSER in `listeusers`
do
if [ $(cat $FILE_GCTOFFCONF | sed -e "s/#//g" | grep -c -E "^$PCUSER$") -eq 0 ];then
echo $PCUSER >> $FILE_GCTOFFCONF
fi
fi
done
mono -h 2&> /dev/null
## on supprime tout ceux qui n'existent plus sur le pc.
if [ $? -eq 0 ] ; then
for PCUSER in $(cat $FILE_GCTOFFCONF | sed -e "s/#//g" )
EDIT=${EDIT:="mono "}
do
fi
if [ $( listeusers | grep -c -E "^$PCUSER$") -eq 0 ];then
vi -h 2&> /dev/null
$SED "/^$PCUSER$/d" $FILE_GCTOFFCONF
if [ $? -eq 0 ] ; then
$SED "/^#$PCUSER$/d" $FILE_GCTOFFCONF
EDIT=${EDIT:="vi "}
fi
if [ -f gpl-3.0.fr.txt ] ; then
cp -f gpl-3.0.fr.txt /usr/local/share/CTparental/
fi
fi
done
if [ -f gpl-3.0.txt ] ; then
}
cp -f gpl-3.0.txt /usr/local/share/CTparental/
applistegctoff () {
updatelistgctoff
 
$ADDUSERTOGROUP root ctoff 2> /dev/null
for PCUSER in $(cat $FILE_GCTOFFCONF )
do
if [ $(echo $PCUSER | grep -c -v "#") -eq 1 ];then
$ADDUSERTOGROUP $PCUSER ctoff 2> /dev/null
else
$DELUSERTOGROUP $(echo $PCUSER | sed -e "s/#//g" ) ctoff 2> /dev/null
fi
fi
done
if [ -f CHANGELOG ] ; then
}
cp -f CHANGELOG /usr/local/share/CTparental/
 
activegourpectoff () {
groupadd ctoff
$ADDUSERTOGROUP root ctoff
if [ ! -f $STARTUPGDM ];then
cat << EOF > $STARTUPGDM
#!/bin/bash
 
exit 0
EOF
chmod 755 $STARTUPGDM
chown root:root $STARTUPGDM
fi
if [ ! -f $STARTUPLIGHTDM ];then
cat << EOF > $STARTUPLIGHTDM
#!/bin/bash
 
exit 0
EOF
chmod 755 $STARTUPLIGHTDM
chown root:root $STARTUPLIGHTDM
fi
if [ $NOXSESSIOND -eq 1 ];then
$SED "s?\#greeter-setup-script.*?greeter-setup-script=$STARTUPLIGHTDM?g" $CONFLIGHTDM
$SED "$(grep -n -E "^\#\!/bin/" $STARTUPKDM | cut -d":" -f1)a$XLOGONSCRIPTEALT &" $STARTUPKDM
$SED "$(grep -n -E "^\#\!/bin/" $STARTUPGDM | cut -d":" -f1)a$XLOGONSCRIPTEALT &" $STARTUPGDM
$SED "$(grep -n -E "^\#\!/bin/" $STARTUPLIGHTDM | cut -d":" -f1)a$XLOGONSCRIPTEALT &" $STARTUPLIGHTDM
 
fi
cat << EOF > $XLOGONSCRIPTEALT
#!/bin/bash
sleep 10
USERSCONECT=\$(who | awk '//{print \$1}' | sort -u)
childloginon=0
for USERCT in \$USERSCONECT
do     
        if [ \$(groups \$USERCT | grep -v -c ctoff ) -eq 1 ] ;then
        childloginon=1
        fi
done
        if [ \$childloginon -eq 1 ];then
                if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 1 ];then
                /usr/local/bin/CTparental.sh -on > /dev/null
                fi
        else
                if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 0 ];then
                /usr/local/bin/CTparental.sh -off > /dev/null
                fi
        fi
EOF
 
cat << EOF > $XLOGONSCRIPTE
#!/bin/bash
USERSCONECT=\$(who | awk '//{print \$1}' | sort -u)
childloginon=0
for USERCT in \$USERSCONECT
do
if [ \$(groups \$USERCT | grep -v -c ctoff ) -eq 1 ] ;then
        childloginon=1
fi
done
if [ \$childloginon -eq 1 ];then
if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 1 ];then
sudo /usr/local/bin/CTparental.sh -on > /dev/null
fi
fi
else
if [ -f dist.conf ];then
if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 0 ];then
cp -f dist.conf /usr/local/share/CTparental/dist.conf.orig
sudo /usr/local/bin/CTparental.sh -off > /dev/null
cp -f dist.conf $DIR_CONF/
fi
fi
fi
while (true); do
EOF
$EDIT $DIR_CONF/dist.conf
chown root:root $XLOGONSCRIPTEALT
clear
chmod 755 $XLOGONSCRIPTEALT
cat $EDIT $DIR_CONF/dist.conf | grep -v -E ^#
chown root:root $XLOGONSCRIPTE
echo "Entrer : S pour continuer avec ces parramêtres ."
chmod 655 $XLOGONSCRIPTE
echo "Entrer : Q pour Quiter l'installation."
$SED "s?^GCTOFF.*?GCTOFF=ON?g" $FILE_CONF
echo "Entrer tous autre choix pour modifier les parramêtres."
applistegctoff
read choi
}
case $choi in
 
S | s )
desactivegourpectoff () {
break
if [ $NOXSESSIOND -eq 1 ];then
;;
$SED "$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d" $STARTUPLIGHTDM
Q | q )
$SED "$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d" $STARTUPKDM
exit
$SED "$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d" $STARTUPGDM
;;
fi
esac
   rm -f $XLOGONSCRIPTEALT
done
   rm -f $XLOGONSCRIPTE
   groupdel ctoff
fi
$SED "s?^GCTOFF.*?GCTOFF=OFF?g" $FILE_CONF
if [ -f $DIR_CONF/dist.conf ];then
}
source  $DIR_CONF/dist.conf
 
fi
uninstall () {
 
   desactivegourpectoff
if [ -f /etc/NetworkManager/NetworkManager.conf ];then
   rm -f /etc/cron.d/CTparental*
    $SED "s/^dns=dnsmasq/#dns=dnsmasq/g" /etc/NetworkManager/NetworkManager.conf
   $DNSMASQrestart
    $NWMANAGERrestart
   $LIGHTTPDstop
    sleep 5
   rm -f /var/www/index.lighttpd.html
  fi
   rm -rf $tempDIR
 
   rm -rf $DIRHTML
      mkdir $tempDIR
 
      mkdir -p $DIR_CONF
 
      initblenabled
   rm -rf /usr/local/share/CTparental
      cat /etc/resolv.conf > $DIR_CONF/resolv.conf.sav
   rm -rf /usr/share/lighttpd/*
  resolvconffix
   rm -f $CTPARENTALCONFHTTPD
      if [ $noinstalldep = "0" ]; then
   rm -rf $DIRadminHTML
  for PACKAGECT in $CONFLICTS
  if [ $NORESOLVCONF -eq 1 ] ; then
        do
chattr -i /etc/resolv.conf
$CMDREMOVE $PACKAGECT 2> /dev/null
cat $DIR_CONF/resolv.conf.sav > /etc/resolv.conf
        done
dhclient -r
  fi
dhclient
      if [ $noinstalldep = "0" ]; then
  else
      $CMDINSTALL $DEPENDANCES
  rm -f $RESOLVDNSMASQ
      fi
  resolvconf -u
     
  fi
      if [ ! -f blacklists.tar.gz ]
   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
      then
$SED "s/^#dns=dnsmasq/dns=dnsmasq/g" /etc/NetworkManager/NetworkManager.conf
        download
$NWMANAGERrestart
      else
   sleep 5
        tar -xzf blacklists.tar.gz -C $tempDIR
   fi
        if [ ! $? -eq 0 ]; then
  rm -rf $DIR_CONF
            echo "Erreur d'extraction de l'archive, processus interrompu"
   if [ $noinstalldep = "0" ]; then
            uninstall
  $CMDREMOVE $DEPENDANCES
            set -e
   fi
            exit 1
}
        fi
 
        rm -rf $DIR_DNS_FILTER_AVAILABLE/
choiblenabled () {
        mkdir $DIR_DNS_FILTER_AVAILABLE
echo -n > $CATEGORIES_ENABLED
      fi
clear
      adapt
echo "Voulez-vous filtrer par Blacklist ou Whitelist :"
      catChoice
echo -n " B/W :"
      dnsmasqon
while (true); do
      $SED "s?^LASTUPDATE.*?LASTUPDATE=$THISDAYS=`date +%d-%m-%Y\ %T`?g" $FILE_CONF
         read choi
     
         case $choi in
      # on charge le(s) module(s) indispensable(s) pour iptables.
         B | b )
test=`grep ip_conntrack_ftp $FILEMODULESLOAD |wc -l`
         echo "Vous allez maintenant choisir les \"Black listes\" à appliquer."
if [ $test -ge "1" ] ; then
for CATEGORIE in `cat  $BL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
$SED "s?.*ip_conntrack_ftp.*?#ip_conntrack_ftp?g" $FILEMODULESLOAD
else
echo "#ip_conntrack_ftp" >> $FILEMODULESLOAD
fi
modprobe ip_conntrack_ftp
$SED "s?.*ip_conntrack_ftp.*?ip_conntrack_ftp?g" $FILEMODULESLOAD
  ###
      FoncHTTPDCONF
      $ENCRON
      $ENLIGHTTPD
      $ENDNSMASQ
      $ENNWMANAGER
      $ENIPTABLESSAVE
 
 
     
}
 
 
updatelistgctoff () {
## on ajoutes tous les utilisateurs manquant dans la liste
for PCUSER in `listeusers`
do
if [ $(cat $FILE_GCTOFFCONF | sed -e "s/#//g" | grep -c -E "^$PCUSER$") -eq 0 ];then
echo $PCUSER >> $FILE_GCTOFFCONF
fi
done
## on suprime tous ceux qui n'existe plus sur le pc.
for PCUSER in $(cat $FILE_GCTOFFCONF | sed -e "s/#//g" )
do
if [ $( listeusers | grep -c -E "^$PCUSER$") -eq 0 ];then
$SED "/^$PCUSER$/d" $FILE_GCTOFFCONF
$SED "/^#$PCUSER$/d" $FILE_GCTOFFCONF
fi
done
}
applistegctoff () {
updatelistgctoff
 
$ADDUSERTOGROUP root ctoff 2> /dev/null
for PCUSER in $(cat $FILE_GCTOFFCONF )
do
if [ $(echo $PCUSER | grep -c -v "#") -eq 1 ];then
$ADDUSERTOGROUP $PCUSER ctoff 2> /dev/null
else
$DELUSERTOGROUP $(echo $PCUSER | sed -e "s/#//g" ) ctoff 2> /dev/null
fi
done
}
 
activegourpectoff () {
  groupadd ctoff
   $ADDUSERTOGROUP root ctoff
   $SED "s?^GCTOFF.*?GCTOFF=ON?g" $FILE_CONF
  applistegctoff
}
 
desactivegourpectoff () {
   groupdel ctoff
  $SED "s?^GCTOFF.*?GCTOFF=OFF?g" $FILE_CONF
}
 
uninstall () {
   desactivegourpectoff
   rm -f /etc/cron.d/CTparental*
   $DNSMASQrestart
   $LIGHTTPDstop
   rm -f /var/www/index.lighttpd.html
   rm -rf $tempDIR
   rm -rf $DIRHTML
 
 
   rm -rf /usr/local/share/CTparental
   rm -rf /usr/share/lighttpd/*
   rm -f $CTPARENTALCONFHTTPD
   rm -rf $DIRadminHTML
   if [ -f /etc/NetworkManager/NetworkManager.conf ];then
$SED "s/^#dns=dnsmasq/dns=dnsmasq/g" /etc/NetworkManager/NetworkManager.conf
$NWMANAGERrestart
   sleep 5
   fi
 
   if [ $noinstalldep = "0" ]; then
for PACKAGECT in $DEPENDANCES
        do
$CMDREMOVE $PACKAGECT 2> /dev/null
        done
  fi
   # desactivation du modules ip_conntrack_ftp
test=`grep ip_conntrack_ftp $FILEMODULESLOAD |wc -l`
if [ $test -ge "1" ] ; then
$SED "s?.*ip_conntrack_ftp.*?#ip_conntrack_ftp?g" $FILEMODULESLOAD
else
echo "#ip_conntrack_ftp" >> $FILEMODULESLOAD
fi
modprobe -r ip_conntrack_ftp
$SED "s?.*ip_conntrack_ftp.*?#ip_conntrack_ftp?g" $FILEMODULESLOAD
###
  rm -rf $DIR_CONF
}
 
choiblenabled () {
echo -n > $CATEGORIES_ENABLED
clear
echo "Voulez-vous filtrer par Blacklist ou Whitelist :"
echo -n " B/W :"
while (true); do
         read choi
         case $choi in
         B | b )
         echo "Vous allez maintenant choisir les \"Black listes\" à appliquer."
for CATEGORIE in `cat  $BL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
do   
do   
      clear
      clear
Ligne 1 142 : Ligne 1 382 :
errortime1 () {
errortime1 () {
clear
clear
echo -e "L'heure de début doit être strictement inférieure à l'heure de fin: $RougeD$input$Fcolor "
echo -e "L'heure de début doit être strictement inférieure a l'heure de fin: $RougeD$input$Fcolor "
echo "exemple: 08h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 23h59"
echo "exemple: 08h00 à 23h59 ou 08h00 à 12h00 et 14h00 à 23h59"
echo -e -n "$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :"
echo -e -n "$RougeD$PCUSER$Fcolor est autorisé à se connecter le $BleuD${DAYS[$NumDAY]}$Fcolor de :"
Ligne 1 188 : Ligne 1 428 :
temprest=$(($(cat $FILE_HCONF | grep ^$PCUSER=user= | cut -d "=" -f3 ) - $count ))
temprest=$(($(cat $FILE_HCONF | grep ^$PCUSER=user= | cut -d "=" -f3 ) - $count ))
echo $temprest
echo $temprest
# si le compteur de l'usager dépasse la valeur max autorisée on verrouille le compte et on deconnecte l'utilisateur.
# si le compteur de l'usager depace la valeur max autoriser on verrouille le compte et on deconnect l'utilisateur.
if [ $temprest -le 0 ];then
if [ $temprest -le 0 ];then
/usr/bin/skill -KILL -u$PCUSER
/usr/bin/skill -KILL -u$PCUSER
passwd -l $PCUSER
passwd -l $PCUSER
else
else
if [ $temprest -le 5 ];then
# On allerte l'usager que sont quota temps arrive a expiration 5-4-3-2-1 minutes avant.
if [ $temprest -le 10 ];then
HOMEPCUSER=$(getent passwd "$PCUSER" | cut -d ':' -f6)
HOMEPCUSER=$(getent passwd "$PCUSER" | cut -d ':' -f6)
export HOME=$HOMEPCUSER && export DISPLAY=:0.0 && export XAUTHORITY=$HOMEPCUSER/.Xauthority && sudo -u $PCUSER  /usr/bin/notify-send -u critical "Alerte CTparental" "Votre temps de connexion restant est de $temprest minutes "
export HOME=$HOMEPCUSER && export DISPLAY=:0.0 && export XAUTHORITY=$HOMEPCUSER/.Xauthority && sudo -u $PCUSER  /usr/bin/notify-send -u critical "Alerte CTparental" "Votre temps de connection restent est de $temprest minutes "
fi
fi
fi
fi
Ligne 1 202 : Ligne 1 443 :
else
else
# on efface les ligne relative a cette utilisateur
# on efface les ligne relative a cette utilisateur
$SED "/^$PCUSER$/d" $FILE_HCOMPT
$SED "/^$PCUSER=/d" $FILE_HCOMPT
fi
fi


Ligne 1 261 : Ligne 1 502 :
         alltime="N"
         alltime="N"
         clear
         clear
         echo -e "$PCUSER est autorisé à se connecter X minutes par jours"  
         echo -e "$PCUSER est autorisé a se connecter X minutes par jours"  
         echo -e -n "X (1 a 1440) = "  
         echo -e -n "X (1 a 1440) = "  
         while (true); do
         while (true); do
Ligne 1 395 : Ligne 1 636 :
passwd -u $PCUSER
passwd -u $PCUSER
done
done
# on remet tous les compteurs à zéro.
# on remait tous les compteurs a zero.
echo "date=$(date +%D)" > $FILE_HCOMPT
echo "date=$(date +%D)" > $FILE_HCOMPT
echo > $FILE_HCONF
echo > $FILE_HCONF
Ligne 1 470 : Ligne 1 711 :
echo "$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER" >> /etc/cron.d/CTparental${DAYS[$NumDAY]}
echo "$m2 $h2 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER" >> /etc/cron.d/CTparental${DAYS[$NumDAY]}
echo "$m4 $h4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER" >> /etc/cron.d/CTparental${DAYS[$NumDAY]}
echo "$m4 $h4 * * ${DAYSCRON[$NumDAY]} root /usr/bin/skill -KILL -u$PCUSER" >> /etc/cron.d/CTparental${DAYS[$NumDAY]}
for count in 1 2 3 4 5
for count in 1 2 3 4 5 6 7 8 9 10
do
do
echo "$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER && export DISPLAY=:0.0 && export XAUTHORITY=$HOMEPCUSER/.Xauthority && sudo -u $PCUSER  /usr/bin/notify-send -u critical \"Alerte CTparental\" \"fermeture de session dans $count minutes \" " >> /etc/cron.d/CTparental${DAYS[$NumDAY]}
echo "$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER && export DISPLAY=:0.0 && export XAUTHORITY=$HOMEPCUSER/.Xauthority && sudo -u $PCUSER  /usr/bin/notify-send -u critical \"Alerte CTparental\" \"fermeture de session dans $count minutes \" " >> /etc/cron.d/CTparental${DAYS[$NumDAY]}
Ligne 1 483 : Ligne 1 724 :
          HORAIRESPAM="$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|"
          HORAIRESPAM="$HORAIRESPAM${DAYSPAM[$NumDAY]}$h1$m1-$h2$m2|"
        fi
        fi
for count in 1 2 3 4 5
for count in 1 2 3 4 5 6 7 8 9 10
do
do
echo "$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER && export DISPLAY=:0.0 && export XAUTHORITY=$HOMEPCUSER/.Xauthority && sudo -u $PCUSER  /usr/bin/notify-send -u critical \"Alerte CTparental\" \"fermeture de session dans $count minutes \" " >> /etc/cron.d/CTparental${DAYS[$NumDAY]}
echo "$(timecronalert $count $h2 $m2 $NumDAY) root export HOME=$HOMEPCUSER && export DISPLAY=:0.0 && export XAUTHORITY=$HOMEPCUSER/.Xauthority && sudo -u $PCUSER  /usr/bin/notify-send -u critical \"Alerte CTparental\" \"fermeture de session dans $count minutes \" " >> /etc/cron.d/CTparental${DAYS[$NumDAY]}
Ligne 1 498 : Ligne 1 739 :
echo "*;*;$PCUSER;$HORAIRESPAM" >> $FILEPAMTIMECONF
echo "*;*;$PCUSER;$HORAIRESPAM" >> $FILEPAMTIMECONF
else
else
echo "*;*;$PCUSER;Al0000-2400" >> $FILEPAMTIMECONF
echo "*;*;$PCUSER;Al0000-2400" >> $FILEPAMTIMECONF  
$SED "/^$PCUSER=/d" $FILE_HCOMPT
passwd -u $PCUSER
fi
fi
   done
   done
echo "PATH=$PATH"  > /etc/cron.d/CTparentalmaxtimelogin   
echo "PATH=$PATH"  > /etc/cron.d/CTparentalmaxtimelogin   
echo "*/1 * * * * root /usr/local/bin/CTparental.sh -uctl" > /etc/cron.d/CTparentalmaxtimelogin
echo "*/1 * * * * root /usr/local/bin/CTparental.sh -uctl" >> /etc/cron.d/CTparentalmaxtimelogin
$SED "s?^HOURSCONNECT.*?HOURSCONNECT=ON?g" $FILE_CONF
$SED "s?^HOURSCONNECT.*?HOURSCONNECT=ON?g" $FILE_CONF
$CRONrestart
$CRONrestart
Ligne 1 536 : Ligne 1 779 :
-aupoff => désactive la mise à jour automatique de la blacklist de Toulouse.
-aupoff => désactive la mise à jour automatique de la blacklist de Toulouse.
-aup    => comme -dl mais seulement si il n'y a pas eu de mise à jour depuis plus de 7 jours.
-aup    => comme -dl mais seulement si il n'y a pas eu de mise à jour depuis plus de 7 jours.
-nodep  => si placé aprés -i ou -u permet de ne pas installer/désinstaller les dépendances, utiles si  
-nodep  => si placer aprés -i ou -u permet de ne pas installer/désinstaller les dépendances, utiles si  
             on préfère les installer à la main , ou pour le script de postinst et prerm  
             on préfaire les installer a la mains , ou pour le scripte de postinst et prerm  
             du deb.
             du deb.
             exemples:
             exemples:
Ligne 1 543 : Ligne 1 786 :
    CTparental.sh -i -dirhtml /home/toto/html/ -nodep   
    CTparental.sh -i -dirhtml /home/toto/html/ -nodep   
    CTparental.sh -u -nodep  
    CTparental.sh -u -nodep  
-nomanuel => utilisé uniquement pour le script de postinst et prerm  
-nomanuel => utiliser uniquement pour le scripte de postinst et prerm  
             du deb.
             du deb.
-gcton   => créé un groupe de privilégiés ne subissant pas le filtrage.
-gcton   => créer un group de privilégier ne subisent pas le filtrage.
mais ralentit les ouvertures de sessions, quand on passe d'un user restreint à un qui ne l'est pas
et inversement.
exemple:CTparental.sh -gctulist
exemple:CTparental.sh -gctulist
editer $FILE_GCTOFFCONF et y commenter tous les utilisateurs que l'on veut filtrer.
editer $FILE_GCTOFFCONF et y commanter tous les utilisateurs que l'on veut filtrer.
CTparental.sh -gctalist
CTparental.sh -gctalist
(note temps qu'un utilisateur non privilégier restera connecter le filtrage sera actif!!)
-gctoff  => suprime le group de privilégier .
-gctoff  => supprime le groupe de privilégiés .
tous les utilisateurs du system subisse le filtrages!!
tous les utilisateurs du système subissent le filtrages!!
-gctulist => Mes a jour le fichier de conf du group , $FILE_GCTOFFCONF
-gctulist => Met a jour le fichier de conf du groupe , $FILE_GCTOFFCONF
en fonction des utilisateur ajouter ou suprimer du pc.
en fonction des utilisateurs ajoutés ou supprimés du pc.
-gctalist => Ajoute/Suprime les utilisateurs dans le group ctoff en fonction du fichier de conf.
-gctalist => Ajoute/Supprime les utilisateurs dans le group ctoff en fonction du fichier de conf.
 
 
  "
  "
Ligne 1 566 : Ligne 1 806 :
   -i | --install )
   -i | --install )
       install
       install
      iptablesoff
      iptableson
       exit 0
       exit 0
       ;;
       ;;
   -u | --uninstall )
   -u | --uninstall )
       autoupdateoff  
       autoupdateoff  
      iptablesoff
       dnsmasqoff
       dnsmasqoff
       desactivetimelogin
       desactivetimelogin
Ligne 1 600 : Ligne 1 843 :
   -on | --on )
   -on | --on )
       dnsmasqon
       dnsmasqon
      iptableson
       exit 0
       exit 0
       ;;
       ;;
   -off | --off )
   -off | --off )
  desactivegourpectoff
       autoupdateoff  
       autoupdateoff  
       dnsmasqoff
       dnsmasqoff
      iptablesoff
       exit 0
       exit 0
       ;;
       ;;
Ligne 1 645 : Ligne 1 891 :
     -gcton )
     -gcton )
       activegourpectoff
       activegourpectoff
  iptablesoff
  iptableson
       ;;
       ;;
     -gctoff )
     -gctoff )
  desactivegourpectoff
  desactivegourpectoff
  iptablesoff
  iptableson
       ;;
       ;;
     -gctulist )
     -gctulist )
  updatelistgctoff
  updatelistgctoff
  iptablesoff
  iptableson
       ;;
       ;;
     -gctalist )
     -gctalist )
  applistegctoff
  applistegctoff
  iptablesoff
  iptableson
       ;;
       ;;
     -uctl )
     -uctl )
  # appelé toutes les minutes par cron pour activer désactiver les usagers ayant des restrictions de temps journalier de connexion.
  # apelet toute les minute par cron pour activer desactiver les usagers ayant des restrictions de temps journalier de connection.
  updatetimelogin
  updatetimelogin
       ;;       
       ;;       
Ligne 1 693 : Ligne 1 947 :
   $Language = strtolower(substr(chop($Langue[0]),0,2)); }
   $Language = strtolower(substr(chop($Langue[0]),0,2)); }
if($Language == 'fr'){
if($Language == 'fr'){
$l_selectuser="l'utilisateur selectionné est : ";
$l_userisnotselect="Veuillez selectionner un utilisateur.";
$l_isadmin = "7j/7 24h/24";
$l_valide = "Enregistrer";
$to = " à " ;
$and = " et " ;
$l_select = "Sélectionner";
$l_info1 = "08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00";
$week = array( "lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche");
  $tmaxinfo= "Minutes max /24 heurs";
   $l_switch_LogOFF="Déconnection";
   $l_switch_LogOFF="Déconnection";
   $l_hours_error1="un mauvais format horaire a été trouvé :exemple 8h30 doit s'écrire 08h30";
   $l_hours_error1="un mauvais format horaire a été trouvé :exemple 8h30 doit s'écrire 08h30";
   $l_hours_error2="incohérence horaire : ";
   $l_hours_error2="incohérence horaire : ";
  $l_hours_error3="Vous devez rentrer une valeur entre 1 et 1440 minutes.";
   $l_hours_on = "Les horaires de connexion sont actuellement activés";
   $l_hours_on = "Les horaires de connexion sont actuellement activés";
   $l_hours_off = "Les horaires de connexion sont actuellement désactivés";
   $l_hours_off = "Les horaires de connexion sont actuellement désactivés";
Ligne 1 745 : Ligne 2 010 :
}
}
else {
else {
  $l_userisnotselect="Veuillez sélectionner un utilisateur.";
  $l_selectuser="l'utilisateur sélectionné est : ";
  $l_isadmin = "7j/7 24h/24";
  $l_valide = "Enregistrer";
  $l_select = "Select";
  $to = " to " ;
  $and = " and " ;
  $l_info1 = "08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00";
  $week = array( "lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche");
  $tmaxinfo= "Minutes max /24 heurs";
   $l_switch_LogOFF="Logout";
   $l_switch_LogOFF="Logout";
   $l_hours_error1="Un mauvais format horaire a été trouvé : exemple 8h30 doit s'écrire 08h30";
   $l_hours_error1="Un mauvais format horaire a été trouvé : exemple 8h30 doit s'écrire 08h30";
   $l_hours_error2="incohérence horaire : ";
   $l_hours_error2="incohérence horaire : ";
  $l_hours_error3="Vous devez rentrer une valeur entre 1 et 1440 minutes.";
   $l_hours_on = "Les horaires de connexion sont actuellement activés";
   $l_hours_on = "Les horaires de connexion sont actuellement activés";
   $l_hours_off = "Les horaires de connexion sont actuellement désactivés";
   $l_hours_off = "Les horaires de connexion sont actuellement désactivés";
Ligne 1 892 : Ligne 2 168 :
else  
else  
{
{
if (isset($_POST["tmax"])){fwrite($pointeur,"$selectuser=user=".$_POST["tmax"]."\n"); }
if (isset($_POST["tmax"])){
if ( preg_match( "/^[1-9]$|^[1-9][0-9]$|^[1-9][0-9][0-9]$|^1[0-3][0-9][0-9]$|^14[0-3][0-9]$|^1440$/", $_POST["tmax"] ) == 1  )
{fwrite($pointeur,"$selectuser=user=".$_POST["tmax"]."\n");}
else {fwrite($pointeur,"$selectuser=user=1440"."\n");
  echo "<H3>$l_hours_error3</H3>";}
}
else {fwrite($pointeur,"$selectuser=user=1440"."\n"); }
else {fwrite($pointeur,"$selectuser=user=1440"."\n"); }
foreach ($weeknum as $numday)
foreach ($weeknum as $numday)
Ligne 1 919 : Ligne 2 200 :
{
{
fwrite($pointeur,"$selectuser=$numday=00h00:23h59"."\n");
fwrite($pointeur,"$selectuser=$numday=00h00:23h59"."\n");
echo "<H3>$l_hours_error2 $h1[$numday]>=$h2[$numday]</H3>";
echo "<H3>$week[$numday] : $l_hours_error2 $h1[$numday]>=$h2[$numday]</H3>";
}
}
}
}
Ligne 1 925 : Ligne 2 206 :
{
{
fwrite($pointeur,"$selectuser=$numday=00h00:23h59"."\n");
fwrite($pointeur,"$selectuser=$numday=00h00:23h59"."\n");
echo "<H3>$l_hours_error1</H3>";
echo "<H3>$week[$numday] : $l_hours_error1</H3>";
}
}
}
}
Ligne 1 949 : Ligne 2 230 :
{
{
fwrite($pointeur,"$selectuser=$numday=00h00:23h59"."\n");
fwrite($pointeur,"$selectuser=$numday=00h00:23h59"."\n");
echo "<H3>$l_hours_error2 $h1[$numday]>=$h2[$numday]>=$h3[$numday]>=$h4[$numday]</H3>";
echo "<H3>$week[$numday] : $l_hours_error2 $h1[$numday]>=$h2[$numday]>=$h3[$numday]>=$h4[$numday]</H3>";
}
}
}
}
Ligne 1 955 : Ligne 2 236 :
{
{
fwrite($pointeur,"$selectuser=$numday=00h00:23h59"."\n");
fwrite($pointeur,"$selectuser=$numday=00h00:23h59"."\n");
echo "<H3>$l_hours_error1</H3>";
echo "<H3>$week[$numday] : $l_hours_error1</H3>";
}
}
Ligne 2 041 : Ligne 2 322 :
</BODY>
</BODY>
</HTML>
</HTML>


</code>
</code>
Ligne 2 544 : Ligne 2 826 :
</HTML>
</HTML>
</code>
</code>
[[Catégorie:Scripts]]
[[Catégorie:Scripts]]
199

modifications

Menu de navigation