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

Aller à la navigation Aller à la recherche
update v 3.80
Aucun résumé des modifications
(update v 3.80)
Ligne 12 : Ligne 12 :
# This script is distributed under the Gnu General Public License (GPL)
# This script is distributed under the Gnu General Public License (GPL)
arg1=${1}
arg1=${1}
if [ $# -ge 1 ];then
if [ $arg1 != "-listusers" ] ; then
if [ $arg1 != "-listusers" ] ; then
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.
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
fi
fi
fi
fi
fi
Ligne 58 : Ligne 60 :
DIR_CONF="/usr/local/etc/CTparental"
DIR_CONF="/usr/local/etc/CTparental"
FILE_CONF="$DIR_CONF/CTparental.conf"
FILE_CONF="$DIR_CONF/CTparental.conf"
FILE_GCTOFFCONF="$DIR_CONF/GCToff.conf"
FILE_HCOMPT="$DIR_CONF/CThourscompteur"
FILE_HCONF="$DIR_CONF/CThours.conf"
FILE_HCONF="$DIR_CONF/CThours.conf"
if [ ! -f $FILE_CONF ] ; then
if [ ! -f $FILE_CONF ] ; then
Ligne 67 : Ligne 71 :
AUTOUPDATE=OFF
AUTOUPDATE=OFF
HOURSCONNECT=OFF
HOURSCONNECT=OFF
GCTOFF=OFF
EOF
EOF
fi
fi




Ligne 77 : Ligne 84 :


tempDIR="/tmp/alcasar"
tempDIR="/tmp/alcasar"
tempDIRRamfs="/tmp/alcasarRamfs"
if [ ! -d $tempDIRRamfs ] ; then
mkdir $tempDIRRamfs
fi
RougeD="\033[1;31m"
RougeD="\033[1;31m"
BleuD="\033[1;36m"
BleuD="\033[1;36m"
Ligne 95 : Ligne 106 :
#### COMMANDES de services par DEFAULT #####
#### COMMANDES de services par DEFAULT #####
CMDSERVICE=${CMDSERVICE:="service "}
CMDSERVICE=${CMDSERVICE:="service "}
CRONstart=${CRONstart:="$CMDSERVICE crond start "}
CRONstart=${CRONstart:="$CMDSERVICE cron start "}
CRONstop=${CRONstop:="$CMDSERVICE crond stop "}
CRONstop=${CRONstop:="$CMDSERVICE cron stop "}
CRONrestart=${CRONrestart:="$CMDSERVICE crond restart "}
CRONrestart=${CRONrestart:="$CMDSERVICE cron restart "}
LIGHTTPDstart=${LIGHTTPDstart:="$CMDSERVICE lighttpd start "}
LIGHTTPDstart=${LIGHTTPDstart:="$CMDSERVICE lighttpd start "}
LIGHTTPDstop=${LIGHTTPDstop:="$CMDSERVICE lighttpd stop "}
LIGHTTPDstop=${LIGHTTPDstop:="$CMDSERVICE lighttpd stop "}
Ligne 131 : Ligne 142 :
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


if [ $(yum help | wc -l ) -ge 50 ] ; then
 
XLOGONSCRIPTE=${XLOGONSCRIPTE:="$LOGONDDIR/10x11-CTparentalLogin"}
XLOGONSCRIPTEALT=${XLOGONSCRIPTEALT:="/usr/local/bin/10x11-CTparentalLogin"}
ADDUSERTOGROUP=${ADDUSERTOGROUP:="gpasswd -a "}
DELUSERTOGROUP=${DELUSERTOGROUP:="gpasswd -d "}
if [ $(yum help 2> /dev/null | wc -l ) -ge 50 ] ; then
   ## "Distribution basée sur yum exemple redhat, fedora..."
   ## "Distribution basée sur yum exemple redhat, fedora..."
   CMDINSTALL=${CMDINSTALL:="yum install "}
   CMDINSTALL=${CMDINSTALL:="yum install "}
Ligne 159 : Ligne 188 :




interface_WAN=$(ip route | awk '/^default via/{print $5}') # suppose que la passerelle est la route par default
interface_WAN=$(ip route | awk '/^default via/{print $5}' | sort -u ) # suppose que la passerelle est la route par default


if [ -f $DIR_CONF/resolv.conf.sav ];then
if [ -f $DIR_CONF/resolv.conf.sav ];then
Ligne 170 : Ligne 199 :


PRIVATE_IP="127.0.0.10"
PRIVATE_IP="127.0.0.10"
FILE_tmp="$tempDIR/filetmp.txt"
 
FILE_tmp=${FILE_tmp:="$tempDIRRamfs/filetmp.txt"}
FILE_tmpSizeMax=${FILE_tmpSizeMax:="128M"}  # 70 Min, Recomend 128M
LOWRAM=${LOWRAM:=0}
if [ $LOWRAM -eq 0 ] ; then
MFILEtmp="mount -t tmpfs -o size=$FILE_tmpSizeMax tmpfs $tempDIRRamfs"
UMFILEtmp="umount $tempDIRRamfs"
else
MFILEtmp=""
UMFILEtmp=""
fi
BL_SERVER="dsi.ut-capitole.fr"
BL_SERVER="dsi.ut-capitole.fr"
CATEGORIES_ENABLED="$DIR_CONF/categories-enabled"
CATEGORIES_ENABLED="$DIR_CONF/categories-enabled"
Ligne 267 : Ligne 306 :
}
}
adapt() {
adapt() {
  echo adapt
  date +%H:%M:%S
   dnsmasqoff
   dnsmasqoff
  $MFILEtmp
   if [ ! -f $DNS_FILTER_OSSI ] ; then
   if [ ! -f $DNS_FILTER_OSSI ] ; then
             echo > $DNS_FILTER_OSSI
             echo > $DNS_FILTER_OSSI
Ligne 300 : Ligne 342 :
             echo -n "."
             echo -n "."
             # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
             # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
             egrep  -v "([0-9]{1,3}\.){3}[0-9]{1,3}" $tempDIR/blacklists/$DOMAINE/domains > $FILE_tmp
             cp -f $tempDIR/blacklists/$DOMAINE/domains $FILE_tmp
            $SED "/[äâëêïîöôüû]/d" $FILE_tmp
            $SED -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/d' $FILE_tmp
            $SED "/^#.*/d" $FILE_tmp
    $SED "/[äâëêïîöôüû]/d" $FILE_tmp
    $SED "/^#.*/d" $FILE_tmp
             $SED "/^$/d" $FILE_tmp
             $SED "/^$/d" $FILE_tmp
             $SED "s/\.\{2,10\}/\./g" $FILE_tmp # supprime les suite de "." exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
             $SED "s/\.\{2,10\}/\./g" $FILE_tmp # supprime les suite de "." exemple: address=/fucking-big-tits..com/127.0.0.10 devient address=/fucking-big-tits.com/127.0.0.10
Ligne 318 : Ligne 361 :
         echo -n "."
         echo -n "."
  # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
  # suppression des @IP, de caractères acccentués et des lignes commentées ou vide
         egrep  -v "([0-9]{1,3}\.){3}[0-9]{1,3}" $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 "/[äâëêïîöôüû]/d" $FILE_tmp  
         $SED "/[äâëêïîöôüû]/d" $FILE_tmp  
         $SED "/^#.*/d" $FILE_tmp  
         $SED "/^#.*/d" $FILE_tmp  
Ligne 327 : Ligne 371 :
   fi     
   fi     
   echo
   echo
  $UMFILEtmp
   rm -rf $tempDIR
   rm -rf $tempDIR
date +%H:%M:%S
}
}
catChoice() {
catChoice() {
Ligne 351 : Ligne 397 :


reabdomaine () {
reabdomaine () {
echo reabdomaine
date +%H:%M:%S
$MFILEtmp
if [ ! -f $DREAB ] ; then
if [ ! -f $DREAB ] ; then
cat << EOF > $DREAB
cat << EOF > $DREAB
  www.google.com
www.google.com
  www.google.fr
www.google.fr
EOF
EOF
fi
fi
Ligne 369 : Ligne 418 :
for DOMAINE in `cat  $DREAB`
for DOMAINE in `cat  $DREAB`
do
do
    $SED "/$DOMAINE/d" $DIR_DNS_BLACKLIST_ENABLED/$CATEGORIE.conf
    cp -f $DIR_DNS_BLACKLIST_ENABLED/$CATEGORIE.conf $FILE_tmp
    $SED "/$DOMAINE/d" $FILE_tmp
                    cp -f $FILE_tmp $DIR_DNS_BLACKLIST_ENABLED/$CATEGORIE.conf
done
done
         fi
         fi
Ligne 376 : Ligne 427 :
cat $DREAB | sed -e "s? ??g" | sed -e "s?.*?server=/&/#?g" >  $DIR_DNS_WHITELIST_ENABLED/whiteliste.ossi.conf
cat $DREAB | sed -e "s? ??g" | sed -e "s?.*?server=/&/#?g" >  $DIR_DNS_WHITELIST_ENABLED/whiteliste.ossi.conf
echo
echo
$UMFILEtmp
rm -f $FILE_tmp
date +%H:%M:%S
}
}


Ligne 533 : Ligne 587 :
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d":" -f1)
USERHTTPD=$(cat /etc/passwd | grep /var/www | cut -d":" -f1)
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d":" -f1)
GROUPHTTPD=$(cat /etc/group | grep $USERHTTPD | cut -d":" -f1)
chmod 640 $FILE_CONF
chmod 644 $FILE_CONF
chown root:$GROUPHTTPD $FILE_CONF
chown root:$GROUPHTTPD $FILE_CONF
cat << EOF > $MAINCONFHTTPD
cat << EOF > $MAINCONFHTTPD
Ligne 695 : Ligne 749 :
chmod 660 $CATEGORIES_ENABLED
chmod 660 $CATEGORIES_ENABLED
chmod 660 /etc/sudoers
chmod 660 /etc/sudoers
is_sudo_ok=`grep $USERHTTPD /etc/sudoers |wc -l`
 
        if [ $is_sudo_ok -ge "1" ] ; then
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
 
sudotest=`grep "$USERHTTPD ALL=" /etc/sudoers |wc -l`
if [ $sudotest -ge "1" ] ; then
    $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
else
    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
$SED "s?^Defaults:$USERHTTPD.*requiretty.*?Defaults:$USERHTTPD    \!requiretty?g" /etc/sudoers
 
$SED "s?^$USERHTTPD.*?$USERHTTPD ALL=(ALL) NOPASSWD:/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
sudotest=`grep %ctoff /etc/sudoers |wc -l`
        else
if [ $sudotest -ge "1" ] ; then
echo "Defaults:$USERHTTPD    !requiretty" >> /etc/sudoers
  $SED "s?^%ctoff.*?%ctoff ALL=(ALL) NOPASSWD:/usr/local/bin/CTparental.sh -off,/usr/local/bin/CTparental.sh -on?g" /etc/sudoers
        echo "$USERHTTPD ALL=(ALL) NOPASSWD:/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
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
chmod 440 /etc/sudoers
if [ ! -f $FILE_HCONF ] ; then  
if [ ! -f $FILE_HCONF ] ; then  
Ligne 710 : Ligne 785 :
chown root:$GROUPHTTPD $FILE_HCONF
chown root:$GROUPHTTPD $FILE_HCONF
chmod 660 $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
chown -R root:$GROUPHTTPD $DIRHTML
chown -R root:$GROUPHTTPD $DIRHTML
chown -R root:$GROUPHTTPD $DIRadminHTML
chown -R root:$GROUPHTTPD $DIRadminHTML
Ligne 722 : Ligne 806 :


install () {
install () {
groupadd ctoff
if [ $nomanuel -eq 0 ]; then  
if [ $nomanuel -eq 0 ]; then  
vim -h 2&> /dev/null
vim -h 2&> /dev/null
Ligne 842 : Ligne 928 :
fi
fi
}
}
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
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


uninstall () {
exit 0
  rm -f /etc/cron.d/CTparental*
EOF
  $DNSMASQrestart
chmod 755 $STARTUPLIGHTDM
  $LIGHTTPDstop
chown root:root $STARTUPLIGHTDM
  rm -f /var/www/index.lighttpd.html
fi
  rm -rf $tempDIR
if [ $NOXSESSIOND -eq 1 ];then
  rm -rf $DIRHTML
$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


  rm -rf /usr/local/share/CTparental
fi
  rm -rf /usr/share/lighttpd/*
cat << EOF > $XLOGONSCRIPTEALT
  rm -f $CTPARENTALCONFHTTPD
#!/bin/bash
  rm -rf $DIRadminHTML
sleep 10
  if [ $NORESOLVCONF -eq 1 ] ; then
USERSCONECT=\$(who | awk '//{print \$1}' | sort -u)
chattr -i /etc/resolv.conf
childloginon=0
cat $DIR_CONF/resolv.conf.sav > /etc/resolv.conf
for USERCT in \$USERSCONECT
dhclient -r
do     
dhclient
        if [ \$(groups \$USERCT | grep -v -c ctoff ) -eq 1 ] ;then
  else
        childloginon=1
  rm -f $RESOLVDNSMASQ
        fi
  resolvconf -u
done
  fi
        if [ \$childloginon -eq 1 ];then
  if [ -f /etc/NetworkManager/NetworkManager.conf ];then
                if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 1 ];then
$SED "s/^#dns=dnsmasq/dns=dnsmasq/g" /etc/NetworkManager/NetworkManager.conf
                /usr/local/bin/CTparental.sh -on > /dev/null
$NWMANAGERrestart
                fi
  sleep 5
        else
  fi
                if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 0 ];then
  rm -rf $DIR_CONF
                /usr/local/bin/CTparental.sh -off > /dev/null
  if [ $noinstalldep = "0" ]; then
                fi
  $CMDREMOVE $DEPENDANCES
        fi
  fi
EOF
}


choiblenabled () {
cat << EOF > $XLOGONSCRIPTE
echo -n > $CATEGORIES_ENABLED
#!/bin/bash
clear
USERSCONECT=\$(who | awk '//{print \$1}' | sort -u)
echo "Voulez-vous filtrer par Blacklist ou Whitelist :"
childloginon=0
echo -n " B/W :"
for USERCT in \$USERSCONECT
while (true); do
do
        read choi
if [ \$(groups \$USERCT | grep -v -c ctoff ) -eq 1 ] ;then
        case $choi in
        childloginon=1
        B | b )
fi
        echo "Vous allez maintenant choisir les \"Black listes\" à appliquer."
done
for CATEGORIE in `cat $BL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
if [ \$childloginon -eq 1 ];then
do 
if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 1 ];then
      clear
sudo /usr/local/bin/CTparental.sh -on > /dev/null
      echo "Voulez vous activer la categorie :"
fi
      echo -n "$CATEGORIE  O/N :"
else
      while (true); do
if [ \$(cat $FILE_CONF | grep -c DNSMASQ=OFF ) -eq 0 ];then
read choi
sudo /usr/local/bin/CTparental.sh -off > /dev/null
case $choi in
fi
O | o )
fi
echo $CATEGORIE >> $CATEGORIES_ENABLED
EOF
break
chown root:root $XLOGONSCRIPTEALT
;;
chmod 755 $XLOGONSCRIPTEALT
N | n )
chown root:root $XLOGONSCRIPTE
break
chmod 655 $XLOGONSCRIPTE
;;
$SED "s?^GCTOFF.*?GCTOFF=ON?g" $FILE_CONF
      esac
applistegctoff
      done
}
done
 
         break
desactivegourpectoff () {
        ;;
if [ $NOXSESSIOND -eq 1 ];then
        W | w )
$SED "$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d" $STARTUPLIGHTDM
         echo "Vous allez maintenant choisir les \"White listes\" à appliquer."
$SED "$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d" $STARTUPKDM
for CATEGORIE in `cat  $WL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
$SED "$(echo $XLOGONSCRIPTEALT | sed -e 's|\/|\\/|g' | sed -e 's|\.|\\.|g')/d" $STARTUPGDM
fi
  rm -f $XLOGONSCRIPTEALT
  rm -f $XLOGONSCRIPTE
  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 [ $NORESOLVCONF -eq 1 ] ; then
chattr -i /etc/resolv.conf
cat $DIR_CONF/resolv.conf.sav > /etc/resolv.conf
dhclient -r
dhclient
  else
  rm -f $RESOLVDNSMASQ
  resolvconf -u
  fi
  if [ -f /etc/NetworkManager/NetworkManager.conf ];then
$SED "s/^#dns=dnsmasq/dns=dnsmasq/g" /etc/NetworkManager/NetworkManager.conf
$NWMANAGERrestart
  sleep 5
  fi
  rm -rf $DIR_CONF
  if [ $noinstalldep = "0" ]; then
  $CMDREMOVE $DEPENDANCES
  fi
}
 
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 928 : Ligne 1 113 :
         break
         break
         ;;
         ;;
       esac
        W | w )
done
        echo "Vous allez maintenant choisir les \"White listes\" à appliquer."
for CATEGORIE in `cat  $WL_CATEGORIES_AVAILABLE`  # pour chaque catégorie
do 
      clear
      echo "Voulez vous activer la categorie :"
      echo -n "$CATEGORIE  O/N :"
      while (true); do
read choi
case $choi in
O | o )
echo $CATEGORIE >> $CATEGORIES_ENABLED
break
;;
N | n )
break
;;
      esac
      done
done
        break
        ;;
       esac
done
}
}


Ligne 966 : Ligne 1 173 :
echo "$MAlert $Halert * * ${DAYSCRON[$D]}"
echo "$MAlert $Halert * * ${DAYSCRON[$D]}"
}
}
updatetimelogin () {
USERSCONECT=$(who | awk '//{print $1}' | sort -u)
  if [ $(cat $FILE_HCOMPT | grep -c $(date +%D)) -eq 1 ] ; then
# on incrément le conteur de temps de connection. pour chaque utilisateur connecter
for PCUSER in $USERSCONECT
do
if [ $(cat $FILE_HCONF | grep -c ^$PCUSER=user= ) -eq 1 ] ;then
  if [ $(cat $FILE_HCOMPT | grep -c ^$PCUSER= ) -eq 0 ] ;then
echo "$PCUSER=1" >> $FILE_HCOMPT
  else
count=$(($(cat $FILE_HCOMPT | grep ^$PCUSER= | cut -d"=" -f2) + 1 ))
$SED "s?^$PCUSER=.*?$PCUSER=$count?g" $FILE_HCOMPT
temprest=$(($(cat $FILE_HCONF | grep ^$PCUSER=user= | cut -d "=" -f3 ) - $count ))
echo $temprest
# 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
/usr/bin/skill -KILL -u$PCUSER
passwd -l $PCUSER
else
if [ $temprest -le 5 ];then
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 connection restent est de $temprest minutes "
fi
fi
  fi
 
else
# on efface les ligne relative a cette utilisateur
$SED "/^$PCUSER$/d" $FILE_HCOMPT
fi


activetimelogin () {
done
else
# on réactivent tous les comptes
for PCUSER in `listeusers`
do
passwd -u $PCUSER
done
# on remait tous les compteurs a zero.
echo "date=$(date +%D)" > $FILE_HCOMPT
fi
}
activetimelogin () {
   TESTGESTIONNAIRE=""
   TESTGESTIONNAIRE=""
   for FILE in `echo $GESTIONNAIREDESESSIONS`
   for FILE in `echo $GESTIONNAIREDESESSIONS`
Ligne 991 : Ligne 1 242 :
   for NumDAY in 0 1 2 3 4 5 6
   for NumDAY in 0 1 2 3 4 5 6
   do
   do
   echo  > /etc/cron.d/CTparental${DAYS[$NumDAY]}
   echo "PATH=$PATH" > /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   done
   for PCUSER in `listeusers`
   for PCUSER in `listeusers`
Ligne 1 009 : Ligne 1 260 :
N| n )
N| n )
         alltime="N"
         alltime="N"
         echo "$PCUSER=user=" >> $FILE_HCONF
        clear
  break
        echo -e "$PCUSER est autorisé a se connecter X minutes par jours"
        echo -e -n "X (1 a 1440) = "
        while (true); do
        read choi
        if [ $choi -ge 1 ];then
if [ $choi -le 1440 ];then
break
fi
fi
        echo " X doit prendre un valeur entre 1 et 1440 "
        done
         echo "$PCUSER=user=$choi" >> $FILE_HCONF
break
         ;;
         ;;
   esac
   esac
Ligne 1 048 : Ligne 1 311 :
for count in 1 2 3 4 5
for count in 1 2 3 4 5
do
do
                         echo "$(timecronalert $count $h2 $m2 $NumDAY) root 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]}
done
done
                         break
                         break
Ligne 1 074 : Ligne 1 337 :
      for count in 1 2 3 4 5
      for count in 1 2 3 4 5
      do
      do
                               echo "$(timecronalert $count $h2 $m2 $NumDAY) root 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]}
                               echo "$(timecronalert $count $h4 $m4 $NumDAY) root 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 $h4 $m4 $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]}
      done
      done
                              
                              
Ligne 1 110 : Ligne 1 373 :
   done
   done
   echo >> $FILE_HCONF
   echo >> $FILE_HCONF
echo "PATH=$PATH"  > /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 124 : Ligne 1 389 :
   rm -f /etc/cron.d/CTparental${DAYS[$NumDAY]}
   rm -f /etc/cron.d/CTparental${DAYS[$NumDAY]}
done
done
rm -f /etc/cron.d/CTparentalmaxtimelogin
$SED "s?^HOURSCONNECT.*?HOURSCONNECT=OFF?g" $FILE_CONF
$SED "s?^HOURSCONNECT.*?HOURSCONNECT=OFF?g" $FILE_CONF
 
for PCUSER in `listeusers`
do
passwd -u $PCUSER
done
# on remait tous les compteurs a zero.
echo "date=$(date +%D)" > $FILE_HCOMPT
echo > $FILE_HCONF
$CRONrestart
$CRONrestart
}
}
Ligne 1 166 : Ligne 1 438 :
   for NumDAY in 0 1 2 3 4 5 6
   for NumDAY in 0 1 2 3 4 5 6
   do
   do
   echo > /etc/cron.d/CTparental${DAYS[$NumDAY]}
   echo "PATH=$PATH" > /etc/cron.d/CTparental${DAYS[$NumDAY]}
   done
   done
    
    
Ligne 1 200 : Ligne 1 472 :
for count in 1 2 3 4 5
for count in 1 2 3 4 5
do
do
echo "$(timecronalert $count $h2 $m2 $NumDAY) root 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]}
echo "$(timecronalert $count $h4 $m4 $NumDAY) root 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 $h4 $m4 $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]}
userisconfigured="1"
userisconfigured="1"
done
done
Ligne 1 213 : Ligne 1 485 :
for count in 1 2 3 4 5
for count in 1 2 3 4 5
do
do
echo "$(timecronalert $count $h2 $m2 $NumDAY) root 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]}
done
done
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]}
Ligne 1 229 : Ligne 1 501 :
fi
fi
   done
   done
 
echo "PATH=$PATH"  > /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 272 : Ligne 1 545 :
-nomanuel => utiliser uniquement pour le scripte de postinst et prerm  
-nomanuel => utiliser uniquement pour le scripte de postinst et prerm  
             du deb.
             du deb.
-gcton   => créer un group de privilégier ne subisent pas le filtrage.
mais ralenti les ouvertures de sessions, quant on passe d'un user restraint a un qui ne l'est pas
est inversement.
exemple:CTparental.sh -gctulist
editer $FILE_GCTOFFCONF et y commanter tous les utilisateurs que l'on veut filtrer.
CTparental.sh -gctalist
(note temps qu'un utilisateur non privilégier restera connecter le filtrage sera actif!!)
-gctoff  => suprime le group de privilégier .
tous les utilisateurs du system subisse le filtrages!!
-gctulist => Mes a jour le fichier de conf du group , $FILE_GCTOFFCONF
en fonction des utilisateur ajouter ou suprimer du pc.
-gctalist => Ajoute/Suprime les utilisateurs dans le group ctoff en fonction du fichier de conf.
  "
  "
case $arg1 in
case $arg1 in
Ligne 1 357 : Ligne 1 643 :
       listeusers
       listeusers
       ;;
       ;;
    -gcton )
      activegourpectoff
      ;;
    -gctoff )
  desactivegourpectoff
      ;;
    -gctulist )
  updatelistgctoff
      ;;
    -gctalist )
  applistegctoff
      ;;
    -uctl )
  # apelet toute les minute par cron pour activer desactiver les usagers ayant des restrictions de temps journalier de connection.
  updatetimelogin
      ;;     
        
        
   *)
   *)
Ligne 1 364 : Ligne 1 666 :
       ;;
       ;;
esac
esac


</code>
</code>
Ligne 1 373 : Ligne 1 674 :
<HEAD>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<TITLE>ALCASAR DNS filtering</TITLE>
<TITLE>CTparental DNS filtering</TITLE>
<link rel="stylesheet" href="/CTadmin/css/style.css" type="text/css">
<link rel="stylesheet" href="/CTadmin/css/style.css" type="text/css">
</HEAD>
</HEAD>
Ligne 1 431 : Ligne 1 732 :
   $l_rehabilitated_dns_explain_wl="2-Entrez ici des noms de domaine autorisés en plus de ceux <BR> de la liste blanche de Toulouse.";
   $l_rehabilitated_dns_explain_wl="2-Entrez ici des noms de domaine autorisés en plus de ceux <BR> de la liste blanche de Toulouse.";
   $l_add_to_bl="Noms de domaine ajoutés à la liste noire";
   $l_add_to_bl="Noms de domaine ajoutés à la liste noire";
  $l_record="Enregistrer les modifications";
  $l_record="Enregistrer les modifications";
   $l_wait="Une fois validées, 30 secondes sont nécessaires pour traiter vos modifications";
   $l_wait="Une fois validées, 30 secondes sont nécessaires pour traiter vos modifications";
  $l_title_gctoff="Groupe privilégié";
  $l_gctoff_explain="Cocher des utilisateurs ne devant pas subir de filtrage";
  $l_gctoff_username="Nom d'utilisateur";
  $l_gctoff_username_comment="Commentaires";
  $l_switch_gctoff_on="Activer le groupe de privilégiés.";
  $l_switch_gctoff_off="Désactiver le groupe de privilégiés.";
  $l_gctoff_on = "Le Groupe privilégié est actuellement activés";
  $l_gctoff_off = "Le Groupe privilégié est actuellement désactivés";
}
}
else {
else {
Ligne 1 476 : Ligne 1 786 :
   $l_record="Save changes";
   $l_record="Save changes";
   $l_wait="Once validated, 30 seconds is necessary to compute your modifications";
   $l_wait="Once validated, 30 seconds is necessary to compute your modifications";
  $l_title_gctoff="Groupe privilégié";
  $l_gctoff_explain="Cocher des utilisateurs ne devant pas subir de filtrage";
  $l_gctoff_username="Username";
  $l_gctoff_username_comment="Comments";
  $l_switch_gctoff_on="Activer le groupe de privilégiés.";
  $l_switch_gctoff_off="Désactiver le groupe de privilégiés.";
  $l_gctoff_on = "Le Groupe privilégié est actuellement activés";
  $l_gctoff_off = "Le Groupe privilégié est actuellement désactivés";
  }
  }
$weeknum = array( 0,1,2,3,4,5,6);
$weeknum = array( 0,1,2,3,4,5,6);
Ligne 1 481 : Ligne 1 800 :
$bl_categories_enabled="/usr/local/etc/CTparental/categories-enabled";
$bl_categories_enabled="/usr/local/etc/CTparental/categories-enabled";
$conf_file="/usr/local/etc/CTparental/CTparental.conf";
$conf_file="/usr/local/etc/CTparental/CTparental.conf";
$conf_ctoff_file="/usr/local/etc/CTparental/GCToff.conf";
$hconf_file="/usr/local/etc/CTparental/CThours.conf";
$hconf_file="/usr/local/etc/CTparental/CThours.conf";
$wl_domains="/usr/local/etc/CTparental/domaine-rehabiliter";
$wl_domains="/usr/local/etc/CTparental/domaine-rehabiliter";
Ligne 1 490 : Ligne 1 810 :
switch ($choix)
switch ($choix)
{
{
case 'gct_Off' :
exec ("sudo -u root /usr/local/bin/CTparental.sh -gctoff");
break;
case 'gct_On' :
exec ("sudo -u root /usr/local/bin/CTparental.sh -gcton");
break;
case 'LogOFF' :
case 'LogOFF' :
header('HTTP/1.0 401 Unauthorized');
header('HTTP/1.0 401 Unauthorized');
Ligne 1 566 : Ligne 1 892 :
else  
else  
{
{
fwrite($pointeur,"$selectuser=user="."\n");  
if (isset($_POST["tmax"])){fwrite($pointeur,"$selectuser=user=".$_POST["tmax"]."\n"); }
else {fwrite($pointeur,"$selectuser=user=1440"."\n"); }
foreach ($weeknum as $numday)
foreach ($weeknum as $numday)
{
{
Ligne 1 639 : Ligne 1 966 :
exec ("sudo -u root /usr/local/bin/CTparental.sh -trf");
exec ("sudo -u root /usr/local/bin/CTparental.sh -trf");
break;
break;
 
case 'change_user' :
$tab=file($conf_ctoff_file);
if ($tab)
{
$pointeur=fopen($conf_ctoff_file,"w+");
foreach ($tab as $ligne)
{
$CONF_CTOFF1 = str_replace('#','',$ligne);
$actif = False ;
foreach ($_POST as $key => $value)
{
if (strstr($key,'chk-'))
{
$CONF_CTOFF2 = str_replace('chk-','',$key);
if ( trim($CONF_CTOFF1) == trim($CONF_CTOFF2) )
{
$actif = True;
break;
}
}
}
 
if (! $actif) { $line="#$CONF_CTOFF1";}
else { $line="$CONF_CTOFF1";}
fwrite($pointeur,$line);
}
fclose($pointeur);
}
exec ("sudo -u root /usr/local/bin/CTparental.sh -gctalist");
break;
 
}
}


Ligne 1 666 : Ligne 2 025 :
if ($field[0] == "AUTOUPDATE") {$AUTOUPDATE=trim($field[1]);}
if ($field[0] == "AUTOUPDATE") {$AUTOUPDATE=trim($field[1]);}
if ($field[0] == "HOURSCONNECT") {$HOURSCONNECT=trim($field[1]);}
if ($field[0] == "HOURSCONNECT") {$HOURSCONNECT=trim($field[1]);}
                       
            if ($field[0] == "GCTOFF") {$GCTOFF=trim($field[1]);}           
}
}
}
}
}
}
else { echo "$l_error_open_file $conf_file";}
else { echo "$l_error_open_file $conf_file";}
include 'dns.php';
include 'hours.php';
include 'gctoff.php';
//echo "</td></tr>";
?>
</BODY>
</HTML>
</code>
'''dns.php'''
<code php>
<?php
if ($DNSMASQ <> "OFF")
if ($DNSMASQ <> "OFF")
{
{
Ligne 1 677 : Ligne 2 053 :
echo "<input type=hidden name='choix' value=\"BL_Off\">";
echo "<input type=hidden name='choix' value=\"BL_Off\">";
echo "<input type=submit value=\"$l_switch_filtering_off\">";
echo "<input type=submit value=\"$l_switch_filtering_off\">";
}
echo "</FORM>";
else
 
if (isset($_GET['filtragemode'])){ $filtragemode=$_GET['filtragemode']; } else {$filtragemode=$DNSMASQ;}
if ($filtragemode == 'WHITE')
{
{
echo "<CENTER><H3>$l_dnsfilter_off</H3></CENTER>";
$bl_categories="/usr/local/etc/CTparental/wl-categories-available";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<input type=hidden name='choix' value=\"BL_On\">";
echo "<input type=submit value=\"$l_switch_filtering_on\">";
}
}
echo "</FORM>";
else { $bl_categories="/usr/local/etc/CTparental/bl-categories-available";}
 
$filtragemode = urlencode($filtragemode);
echo "<table border=0 width=400 cellpadding=0 cellspacing=2>";
echo "<tr valign=top>";
echo "<td align=center"; if ( $filtragemode == "BLACK" ) { echo " bgcolor=\"#FFCC66\"";} echo ">";
echo "<a href=\"$_SERVER[PHP_SELF]?filtragemode=BLACK\" title=\"\"><font color=\"black\"><b>$l_fmenu_black</b></font></a></td>";
echo "<td align=center"; if ( $filtragemode == "WHITE" ) { echo " bgcolor=\"#FFCC66\"";} echo ">";
echo "<a href=\"$_SERVER[PHP_SELF]?filtragemode=WHITE\" title=\"\"><font color=\"black\"><b>$l_fmenu_white</b></font></a></td>";
echo "</tr>";
echo" </table>";
echo "</td></tr>";
 


if ( $DNSMASQ<>"OFF"){
function echo_file ($filename)
include 'dns.php';
{
}
if (file_exists($filename))
echo "</TABLE>";
{
echo "<TABLE width='100%' border=0 cellspacing=0 cellpadding=0>";
if (filesize($filename) != 0)
echo "<tr><th>$l_hours1</th></tr>";
{
echo "<tr bgcolor='#FFCC66'><td><img src='/images/pix.gif' width=1 height=2></td></tr>";
$pointeur=fopen($filename,"r");
echo "</TABLE>";
$tampon = fread($pointeur, filesize($filename));
echo "<TABLE width='100%' border=1 cellspacing=0 cellpadding=0>";
fclose($pointeur);
echo "<tr><td valign='middle' align='left'>";
echo $tampon;
if ($HOURSCONNECT == "ON")
}
{
}
echo "<CENTER><H3>$l_hours_on</H3></CENTER>";
else
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
{
echo "<input type=hidden name='choix' value=\"H_Off\">";
echo "$l_error_openfile $filename";
echo "<input type=submit value=\"$l_switch_hours_off\">";
}
}
}
else
 
{
echo "<TABLE width='100%' border=1 cellspacing=0 cellpadding=1>";
echo "<CENTER><H3>$l_hours_off</H3></CENTER>";
echo "<CENTER><H3>$l_main_bl</H3></CENTER>";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<tr><td valign='middle' align='left' colspan=10>";
echo "<input type=hidden name='choix' value=\"H_On\">";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<input type=submit value=\"$l_switch_hours_on\">";
echo "<center>$l_bl_version $LASTUPDATE";
echo "</center><BR>";
echo "<input type='hidden' name='choix' value='Download_bl'>";
echo "<input type='submit' value='$l_download_bl'>";
echo " ($l_warning)";
 
echo "</FORM>";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<input type='hidden' name='choix' value='INIT_BL'>";
echo "<input type='submit' value='$l_switch_Init_bl'>";
echo "</FORM>";
if ($AUTOUPDATE == "ON")
{
echo "<CENTER><H3>$l_auto_update_on</H3></CENTER>";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<input type=hidden name='choix' value=\"AUP_Off\">";
echo "<input type=submit value=\"$l_switch_auto_update_off\">";
}
}
echo "</FORM>";
else
{
echo "<CENTER><H3>$l_auto_update_off</H3></CENTER>";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<input type=hidden name='choix' value=\"AUP_On\">";
echo "<input type=submit value=\"$l_switch_auto_update_on\">";
}
echo "</FORM>";
echo "</td></tr>";
echo "<tr><td valign=\"middle\" align=\"left\" colspan=10>";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<input type='hidden' name='choix' value='MAJ_cat'>";
if ($filtragemode == "BLACK"){echo "<center>$l_bl_categories_bl</center></td></tr>";}
else {echo "<center>$l_bl_categories_wl</center></td></tr>";}


if ($HOURSCONNECT == "ON")
//on lit et on interprète le fichier de catégories
{
$cols=1;  
include 'hours.php';
if (file_exists($bl_categories))
}
{
echo "</td></tr>";
$pointeur=fopen($bl_categories,"r");
?>
while (!feof ($pointeur))
</BODY>
</HTML>
</code>
'''dns.php'''
<code php>
<?php
if (isset($_GET['filtragemode'])){ $filtragemode=$_GET['filtragemode']; } else {$filtragemode=$DNSMASQ;}
if ($filtragemode == 'WHITE')
{
$bl_categories="/usr/local/etc/CTparental/wl-categories-available";
}
else { $bl_categories="/usr/local/etc/CTparental/bl-categories-available";}
 
$filtragemode = urlencode($filtragemode);
echo "<table border=0 width=400 cellpadding=0 cellspacing=2>";
echo "<tr valign=top>";
echo "<td align=center"; if ( $filtragemode == "BLACK" ) { echo " bgcolor=\"#FFCC66\"";} echo ">";
echo "<a href=\"$_SERVER[PHP_SELF]?filtragemode=BLACK\" title=\"\"><font color=\"black\"><b>$l_fmenu_black</b></font></a></td>";
echo "<td align=center"; if ( $filtragemode == "WHITE" ) { echo " bgcolor=\"#FFCC66\"";} echo ">";
echo "<a href=\"$_SERVER[PHP_SELF]?filtragemode=WHITE\" title=\"\"><font color=\"black\"><b>$l_fmenu_white</b></font></a></td>";
echo "</tr>";
echo" </table>";
echo "</td></tr>";
 
 
function echo_file ($filename)
{
if (file_exists($filename))
{
if (filesize($filename) != 0)
{
{
$pointeur=fopen($filename,"r");
$ligne=fgets($pointeur, 4096);
$tampon = fread($pointeur, filesize($filename));
if ($ligne)
fclose($pointeur);
{
echo $tampon;
if ($cols == 1) { echo "<tr>";}
$categorie=trim(basename($ligne));
echo "<td><a href='bl_categories_help.php?cat=$categorie' target='cat_help' onclick=window.open('bl_categories_help.php','cat_help','width=600,height=150,toolbar=no,scrollbars=no,resizable=yes') title='categories help page'>$categorie</a><br>";
echo "<input type='checkbox' name='chk-$categorie'";
// la catégorie n'existe pas dans le fichier de catégorie activé -> categorie non selectionnée
$str = file_get_contents($bl_categories_enabled);
if (strpos($str, $categorie)===false) { echo ">";}
else { echo "checked>"; }
echo "</td>";
$cols++;
if ($cols > 10) {
echo "</tr>";
$cols=1; }
}
}
}
fclose($pointeur);
}
}
else
else {
{
echo "$l_error_open_file $bl_categories";
echo "$l_error_openfile $filename";
}
}
echo "</td></tr>";
echo "<tr><td valign='middle' align='left' colspan=10></td></tr>";
echo "<tr><td colspan=5 align=center>";
if ($filtragemode == "BLACK"){echo "<H3>$l_rehabilitated_dns</H3>$l_rehabilitated_dns_explain_bl<BR>$l_one_dns<BR>";}
else {echo "<H3>$l_rehabilitated_dns</H3>$l_rehabilitated_dns_explain_wl<BR>$l_one_dns<BR>";}
echo "<textarea name='OSSI_wl_domains' rows=5 cols=40>";
echo_file ($wl_domains);
echo "</textarea></td>";
if ( $filtragemode == "BLACK" ) {
echo "<td colspan=5 align=center>";
echo "<H3>$l_forbidden_dns</H3>$l_forbidden_dns_explain<BR>";
echo "<textarea name='OSSI_bl_domains' rows=5 cols=40>";
echo_file ($bl_domains);
echo "</textarea></td>";
}
}
echo "</tr><tr><td colspan=10>";
echo "<input type='submit' value='$l_record'>";
echo "</form> ($l_wait)";
echo "</td></tr>";
echo "</TABLE>";
echo "</TABLE>";


echo "<TABLE width='100%' border=1 cellspacing=0 cellpadding=1>";
echo "<CENTER><H3>$l_main_bl</H3></CENTER>";
echo "<tr><td valign='middle' align='left' colspan=10>";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<center>$l_bl_version $LASTUPDATE";
echo "</center><BR>";
echo "<input type='hidden' name='choix' value='Download_bl'>";
echo "<input type='submit' value='$l_download_bl'>";
echo " ($l_warning)";


echo "</FORM>";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<input type='hidden' name='choix' value='INIT_BL'>";
echo "<input type='submit' value='$l_switch_Init_bl'>";
echo "</FORM>";
if ($AUTOUPDATE == "ON")
{
echo "<CENTER><H3>$l_auto_update_on</H3></CENTER>";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<input type=hidden name='choix' value=\"AUP_Off\">";
echo "<input type=submit value=\"$l_switch_auto_update_off\">";
}
}
else
else
{
{
echo "<CENTER><H3>$l_auto_update_off</H3></CENTER>";
echo "<CENTER><H3>$l_dnsfilter_off</H3></CENTER>";
  echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
  echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<input type=hidden name='choix' value=\"AUP_On\">";
echo "<input type=hidden name='choix' value=\"BL_On\">";
echo "<input type=submit value=\"$l_switch_auto_update_on\">";
echo "<input type=submit value=\"$l_switch_filtering_on\">";
echo "</FORM>";
echo "</td></tr>";
}
}
echo "</FORM>";
echo "</td></tr>";
echo "<tr><td valign=\"middle\" align=\"left\" colspan=10>";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<input type='hidden' name='choix' value='MAJ_cat'>";
if ($filtragemode == "BLACK"){echo "<center>$l_bl_categories_bl</center></td></tr>";}
else {echo "<center>$l_bl_categories_wl</center></td></tr>";}


//on lit et on interprète le fichier de catégories
$cols=1;
if (file_exists($bl_categories))
{
$pointeur=fopen($bl_categories,"r");
while (!feof ($pointeur))
{
$ligne=fgets($pointeur, 4096);
if ($ligne)
{
if ($cols == 1) { echo "<tr>";}
$categorie=trim(basename($ligne));
echo "<td><a href='bl_categories_help.php?cat=$categorie' target='cat_help' onclick=window.open('bl_categories_help.php','cat_help','width=600,height=150,toolbar=no,scrollbars=no,resizable=yes') title='categories help page'>$categorie</a><br>";
echo "<input type='checkbox' name='chk-$categorie'";
// la catégorie n'existe pas dans le fichier de catégorie activé -> categorie non selectionnée
                        $str = file_get_contents($bl_categories_enabled);
if (strpos($str, $categorie)===false) { echo ">";}
else { echo "checked>"; }
echo "</td>";
$cols++;
if ($cols > 10) {
echo "</tr>";
$cols=1; }
}
}
fclose($pointeur);
}
else {
echo "$l_error_open_file $bl_categories";
}
echo "</td></tr>";
echo "<tr><td valign='middle' align='left' colspan=10></td></tr>";
echo "<tr><td colspan=5 align=center>";
if ($filtragemode == "BLACK"){echo "<H3>$l_rehabilitated_dns</H3>$l_rehabilitated_dns_explain_bl<BR>$l_one_dns<BR>";}
else {echo "<H3>$l_rehabilitated_dns</H3>$l_rehabilitated_dns_explain_wl<BR>$l_one_dns<BR>";}
echo "<textarea name='OSSI_wl_domains' rows=5 cols=40>";
echo_file ($wl_domains);
echo "</textarea></td>";
if ( $filtragemode == "BLACK" ) {
echo "<td colspan=5 align=center>";
echo "<H3>$l_forbidden_dns</H3>$l_forbidden_dns_explain<BR>";
echo "<textarea name='OSSI_bl_domains' rows=5 cols=40>";
echo_file ($bl_domains);
echo "</textarea></td>";
}
echo "</tr><tr><td colspan=10>";


echo "<input type='submit' value='$l_record'>";
echo "</form> ($l_wait)";


echo "</td></tr>";
 
echo "</TABLE>";
?>
?>
</code>
</code>
'''hours.php'''
'''hours.php'''
Ligne 1 857 : Ligne 2 205 :


<?php
<?php
# Choice of language
echo "<TABLE width='100%' border=0 cellspacing=0 cellpadding=0>";
$Language = 'en';
echo "<tr><th>$l_hours1</th></tr>";
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
echo "<tr bgcolor='#FFCC66'><td><img src='/images/pix.gif' width=1 height=2></td></tr>";
  $Langue = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo "</TABLE>";
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
echo "<TABLE width='100%' border=1 cellspacing=0 cellpadding=0>";
if($Language == 'fr'){
echo "<tr><td valign='middle' align='left'>";
  $l_selectuser="l'utilisateur selectionné est : ";
if ($HOURSCONNECT == "ON")
  $l_userisnotselect="Veuillez selectionner un utilisateur.";
{
  $l_isadmin = "7j/7 24h/24";
echo "<CENTER><H3>$l_hours_on</H3></CENTER>";
  $l_valide = "Enregistrer";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
  $to = " à " ;
echo "<input type=hidden name='choix' value=\"H_Off\">";
  $and = " et " ;
echo "<input type=submit value=\"$l_switch_hours_off\">";
  $l_select = "Sélectionner";
echo "</FORM>";
  $l_info1 = "08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00";
# Choice of language
  $week = array( "lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche");
$Language = 'en';
}
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
else {
  $Langue = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
  $l_userisnotselect="Veuillez sélectionner un utilisateur.";
  $Language = strtolower(substr(chop($Langue[0]),0,2)); }
  $l_selectuser="l'utilisateur sélectionné est : ";
if($Language == 'fr'){
  $l_isadmin = "7j/7 24h/24";
  $l_selectuser="l'utilisateur selectionné est : ";
  $l_valide = "Enregistrer";
  $l_userisnotselect="Veuillez selectionner un utilisateur.";
  $l_select = "Select";
  $l_isadmin = "7j/7 24h/24";
  $to = " to " ;
  $l_valide = "Enregistrer";
  $and = " and " ;
  $to = " à " ;
  $l_info1 = "08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00";
  $and = " et " ;
  $week = array( "lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche");
  $l_select = "Sélectionner";
}
  $l_info1 = "08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00";
if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }
  $week = array( "lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche");
 
  $tmaxinfo= "Minutes max /24 heurs";
 
}
### on lit est on interprète le fichier CTparental.conf
else {
echo "<TABLE width='100%' border=0 cellspacing=0 cellpadding=0>";
  $l_userisnotselect="Veuillez sélectionner un utilisateur.";
exec ("/usr/local/bin/CTparental.sh -listusers 2> /dev/null",$USERSPC); # récupération des utilisateurs du poste.(UID >= 1000)
  $l_selectuser="l'utilisateur sélectionné est : ";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
  $l_isadmin = "7j/7 24h/24";
echo "<select name=\"selectuser\">";
  $l_valide = "Enregistrer";
if ($selectuser){echo "<option value=\"$selectuser\">$selectuser\n"; }
  $l_select = "Select";
        else {echo "<option value=\"\">\n"; }
  $to = " to " ;
foreach ($USERSPC as $USERSELECT){echo "<option value=\"$USERSELECT\">$USERSELECT\n";}
  $and = " and " ;
echo " </select>";
  $l_info1 = "08h00 à 24h00 ou 08h00 à 12h00 et 14h00 à 24h00";
echo "<input type=\"submit\" value=\"$l_select\">";
  $week = array( "lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche");
echo "</FORM>";
  $tmaxinfo= "Minutes max /24 heurs";
if (isset($selectuser)) {
}
echo "</TABLE>";
if (isset($_POST['selectuser'])){ $selectuser=$_POST['selectuser']; }
echo "<TABLE width='400' border=0 cellspacing=0 cellpadding=0>";
 
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
 
echo "<CENTER><H3>$l_selectuser $selectuser</H3></CENTER>";
### on lit est on interprète le fichier CTparental.conf
echo "<TABLE width='100%' border=0 cellspacing=0 cellpadding=0>";
if (is_file ($hconf_file))
exec ("/usr/local/bin/CTparental.sh -listusers 2> /dev/null",$USERSPC); # récupération des utilisateurs du poste.(UID >= 1000)
{
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
$tab=file($hconf_file);
echo "<select name=\"selectuser\">";
if ($tab)
if ($selectuser){echo "<option value=\"$selectuser\">$selectuser\n"; }
{
else {echo "<option value=\"\">\n"; }
foreach ($tab as $line)
foreach ($USERSPC as $USERSELECT){echo "<option value=\"$USERSELECT\">$USERSELECT\n";}
{
echo " </select>";
                $field=explode("=", $line);
echo "<input type=\"submit\" value=\"$l_select\">";
                if ( $field[0] == $selectuser ){
echo "</FORM>";
        $field2=explode(":", $field[2]);
if (isset($selectuser)) {
$numday=$field[1];
echo "</TABLE>";
$isconfigured=1;
echo "<TABLE width='600' border=0 cellspacing=0 cellpadding=0>";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
                        if ( $numday == "admin") { echo "<tr><td>$l_isadmin : </td><td><input type='checkbox' name='isadmin' checked></td></tr>";}
echo "<CENTER><H3>$l_selectuser $selectuser</H3></CENTER>";
elseif ( $numday == "user") {echo "<tr><td>$l_isadmin : </td><td><input type='checkbox' name='isadmin' ></td></tr>";}
else {
if (is_file ($hconf_file))
echo"<tr><td>$week[$numday]:</td><td><INPUT type=\"text\" size=5 maxlength=5 value=\"$field2[0]\"  name=\"h1$numday\"></td>";
{
                echo" <td>$to <INPUT type=\"text\" size=5 maxlength=5 value=\"$field2[1]\" name=\"h2$numday\"></td>";
$tab=file($hconf_file);
                echo" <td>$and <INPUT type=\"text\" size=5 maxlength=5 value=\"$field2[2]\" name=\"h3$numday\"></td>";
if ($tab)
echo" <td>$to <INPUT type=\"text\" size=5 maxlength=5 value=\"$field2[3]\" name=\"h4$numday\"></td></tr>";
{
}
foreach ($tab as $line)
           
{
}
$field=explode("=", $line);
       
if ( $field[0] == $selectuser ){
}
$field2=explode(":", $field[2]);
$numday=$field[1];
}
$isconfigured=1;
}
if ( $numday == "admin") { echo "<tr><td>$l_isadmin : <input type='checkbox' name='isadmin' checked></td></tr>";}
else { echo "$l_error_open_file $hconf_file";}
elseif ( $numday == "user") {echo "<tr><td>$l_isadmin : <input type='checkbox' name='isadmin' ></td></tr>";
 
if ( intval ($field[2]) == 0 ) { $field[2]="1440"; }
if (isset($isconfigured)==0){
echo"<tr><td>$tmaxinfo<td><INPUT type=\"text\" size=4 maxlength=4 value=\"$field[2]\"  name=\"tmax\">/1440<td</tr>";
echo "<tr><td>$l_isadmin : </td><td><input type='checkbox' name='isadmin' checked=\"checked\"></td></tr>";
}
else {
echo"<tr><td>$week[$numday]:</td><td><INPUT type=\"text\" size=5 maxlength=5 value=\"$field2[0]\"  name=\"h1$numday\"></td>";
echo" <td>$to <INPUT type=\"text\" size=5 maxlength=5 value=\"$field2[1]\" name=\"h2$numday\"></td>";
echo" <td>$and <INPUT type=\"text\" size=5 maxlength=5 value=\"$field2[2]\" name=\"h3$numday\"></td>";
echo" <td>$to <INPUT type=\"text\" size=5 maxlength=5 value=\"$field2[3]\" name=\"h4$numday\"></td></tr>";
}
}
}
}
}
else { echo "$l_error_open_file $hconf_file";}
 
if (isset($isconfigured)==0){
echo "<tr><td>$l_isadmin : <input type='checkbox' name='isadmin' checked=\"checked\"></td></tr>";
}
 
 
echo "</TABLE>";
echo "<input type=hidden name='selectuser' value=\"$selectuser\">";
echo "<input type=hidden name='choix' value=\"MAJ_H\">";
echo "<input type=\"submit\" value=\"$l_valide\">";
echo "</FORM>";
}
else { echo "<CENTER><H3>$l_userisnotselect</H3></CENTER>";}
 
}
else
{
echo "<CENTER><H3>$l_hours_off</H3></CENTER>";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<input type=hidden name='choix' value=\"H_On\">";
echo "<input type=submit value=\"$l_switch_hours_on\">";
echo "</FORM>";
}
 
 
 
?>
 
</code>
'''gctoff.php'''
<code php>
<?php
echo "<TABLE width='100%' border=0 cellspacing=0 cellpadding=0>";
echo "<tr><th>$l_title_gctoff</th></tr>";
echo "<tr bgcolor='#FFCC66'><td><img src='/images/pix.gif' width='1' height='2'></td></tr>";
echo "</table>";
echo "<table width='100%' border=1 cellspacing=0 cellpadding=1>";
if ($GCTOFF == "ON")
{
echo "<CENTER><H3>$l_gctoff_on</H3></CENTER>";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<input type=hidden name='choix' value=\"gct_Off\">";
echo "<input type=submit value=\"$l_switch_gctoff_off\">";
echo "</FORM>";
 
echo "<tr><td colspan=2 align='center'>";
echo "$l_gctoff_explain</td></tr>";
echo "<tr><td align='center' valign='middle'>";
echo "<FORM action='$_SERVER[PHP_SELF]' method='POST'>";
echo "<table cellspacing=2 cellpadding=2 border=1>";
echo "<tr><th>$l_gctoff_username<th>$l_blocked</tr>";
// Read the "CTOFF.conf" file
exec ("sudo /usr/local/bin/CTparental.sh -gctulist");
$tab=file($conf_ctoff_file);
if ($tab)  # the file isn't empty
{
foreach ($tab as $line)
{
if (trim($line) != '') # the line isn't empty
{
$user_lignes=explode(" ", $line);
$userx=trim($user_lignes[0],"#");
echo "<tr><td>$userx";
echo "<td><input type='checkbox' name='chk-$userx'";
if (preg_match('/^#/',$line, $r)) {
echo ">";}
else {
echo "checked>";}
echo "</tr>";
}
}
}
echo "</table>";
echo "<input type='hidden' name='choix' value='change_user'>";
echo "<input type='submit' value='$l_record'>";
echo "</form>";
}
else
{
echo "<CENTER><H3> $l_gctoff_off</H3></CENTER>";
echo "<FORM action='$_SERVER[PHP_SELF]' method=POST>";
echo "<input type=hidden name='choix' value=\"gct_On\">";
echo "<input type=submit value=\"$l_switch_gctoff_on\">";
echo "</FORM>";
}
}
echo "</TABLE>";
echo "<input type=hidden name='selectuser' value=\"$selectuser\">";
        echo "<input type=hidden name='choix' value=\"MAJ_H\">";
echo "<input type=\"submit\" value=\"$l_valide\">";
echo "</FORM>";
}
else { echo "<CENTER><H3>$l_userisnotselect</H3></CENTER>";}
?>


</code>
</code>
199

modifications

Menu de navigation