88 lines
2.5 KiB
Python
Executable file
88 lines
2.5 KiB
Python
Executable file
#! /usr/bin/env python
|
|
# -*- coding: iso-8859-15 -*-
|
|
|
|
""" Génération de la configuration pour squid sur sila """
|
|
|
|
import sys
|
|
sys.path.append('/usr/scripts/gestion')
|
|
from gen_confs import gen_config
|
|
from ldap_crans import crans_ldap, ann_scol
|
|
from time import localtime
|
|
from config import bl_carte_et_actif
|
|
|
|
class squid(gen_config) :
|
|
db = crans_ldap()
|
|
restart_cmd = '/etc/init.d/squid reload'
|
|
|
|
def __str__(self) :
|
|
return str(self.__class__).replace('_','-').split('.')[2]
|
|
|
|
def _gen(self) :
|
|
self._mklist()
|
|
|
|
def _mklist(self) :
|
|
fic = self._open_conf(self.FICHIER)
|
|
# recherche_bl :
|
|
# 1 : search sur champ blacklist et clubs compris
|
|
# 0 : search plus général et clubs exclus
|
|
if self.recherche_bl==1:
|
|
liste = self.db.search("paiement=ok&blacklist=*%s*"%self.chaine)
|
|
l_proprio = liste["adherent"]+liste["club"]
|
|
else:
|
|
l_proprio = self.db.search('paiement=ok&' + self.chaine)["adherent"]
|
|
self.anim.iter=len(l_proprio)
|
|
for proprio in l_proprio :
|
|
self.anim.cycle()
|
|
if self.recherche_bl==0 or self.chaine in proprio.blacklist_actif():
|
|
# Pas la peine de renvoyer les machines complètement bloqués
|
|
for m in proprio.machines():
|
|
if not 'bloq' in m.blacklist_actif():
|
|
fic.write(m.Nom()+'\n')
|
|
fic.close()
|
|
|
|
|
|
class squid_upload(squid) :
|
|
""" Genère le fichier blacklist-upload pour squid """
|
|
FICHIER = "/etc/squid/blacklist_upload"
|
|
chaine = "upload"
|
|
recherche_bl = 1
|
|
|
|
class squid_virus(squid) :
|
|
""" Genère le fichier blacklist-virus pour squid """
|
|
#FICHIER = "/etc/squid/blacklist_infectes"
|
|
# on ne fait rien pour l'instant, non géré par LDAP
|
|
chaine = "virus"
|
|
def _gen(self) :
|
|
pass
|
|
recherche_bl = 1
|
|
|
|
class squid_warez(squid) :
|
|
""" Genère le fichier blacklist-warez pour squid """
|
|
FICHIER = "/etc/squid/blacklist_warez"
|
|
chaine = "warez"
|
|
recherche_bl = 1
|
|
|
|
class squid_carte(squid) :
|
|
""" Genère le fichier blacklist-carte pour squid """
|
|
FICHIER = "/etc/squid/blacklist_carte_et"
|
|
chaine = "carteEtudiant!=%i"%ann_scol
|
|
recherche_bl = 0
|
|
|
|
if not bl_carte_et_actif :
|
|
# Inutile de relancer squid si la blacklist n'est pas activée
|
|
restart_cmd = ''
|
|
|
|
def _gen(self) :
|
|
# Liste vide si la blacklist n'est pas activée
|
|
if not bl_carte_et_actif :
|
|
fic = self._open_conf(self.FICHIER)
|
|
# on vide la blackliste
|
|
fic.close()
|
|
return
|
|
self._mklist()
|
|
|
|
class squid_chbre(squid) :
|
|
""" Genère le fichier blacklist-chbre pour squid """
|
|
FICHIER = "/etc/squid/blacklist_chbre"
|
|
chaine = "chbre=????"
|
|
recherche_bl = 0
|