Nettoyage des restes de paiement par année scolaire
Ça fait plus d'un an qu'on est passés aux factures avec generalizedTimeFormat
This commit is contained in:
parent
af0e971764
commit
baf79bdda7
13 changed files with 498 additions and 220 deletions
|
@ -10,39 +10,34 @@ import datetime
|
||||||
from config_srv import adm_only, role
|
from config_srv import adm_only, role
|
||||||
|
|
||||||
# Valeur par défaut pour les champs d'études
|
# Valeur par défaut pour les champs d'études
|
||||||
etudes_defaults = [u"Établissement inconnu", u"Année inconnue", u"Domaine d'études inconnu"]
|
etudes_defaults = [
|
||||||
|
u"Établissement inconnu",
|
||||||
|
u"Année inconnue",
|
||||||
|
u"Domaine d'études inconnu"
|
||||||
|
]
|
||||||
|
|
||||||
gtfepoch = "19700101000000Z"
|
gtfepoch = "19700101000000Z"
|
||||||
##### Gestion des câblages
|
##### Gestion des câblages
|
||||||
# Selon la date, on met :
|
# Selon la date, on met :
|
||||||
# -ann_scol : Année scolaire en cours
|
|
||||||
# -periode_transitoire : on accepte ceux qui ont payé l'année dernière
|
# -periode_transitoire : on accepte ceux qui ont payé l'année dernière
|
||||||
|
|
||||||
# Ne modifier que les dates !
|
# On récupère l'année scolaire à tout besoin
|
||||||
dat = time.localtime()
|
__annee = time.localtime()[0]
|
||||||
if dat[1] < 8 or dat[1] == 8 and dat[2] < 16:
|
|
||||||
# Si pas encore début août, on est dans l'année précédente
|
|
||||||
ann_scol = dat[0]-1
|
|
||||||
periode_transitoire = False
|
|
||||||
# sinon on change d'année
|
|
||||||
elif dat[1] < 10:
|
|
||||||
# Si pas encore octobre, les gens ayant payé l'année précédente sont
|
|
||||||
# acceptés
|
|
||||||
ann_scol = dat[0]
|
|
||||||
periode_transitoire = True
|
|
||||||
else:
|
|
||||||
# Seulement ceux qui ont payé cette année sont acceptés
|
|
||||||
ann_scol = dat[0]
|
|
||||||
periode_transitoire = False
|
|
||||||
|
|
||||||
# Prochaine période transitoire de l'année
|
# Prochaine période transitoire de l'année version generalizedTimeFormat
|
||||||
gtf_debut_periode_transitoire = "%s0816000000+0200" % (dat[0],)
|
gtf_debut_periode_transitoire = "%s0816000000+0200" % (__annee,)
|
||||||
gtf_fin_periode_transitoire = "%s0930235959+0200" % (dat[0],)
|
gtf_fin_periode_transitoire = "%s0930235959+0200" % (__annee,)
|
||||||
debut_periode_transitoire = time.mktime(time.strptime("%s/08/16 00:00:00" % (dat[0],), "%Y/%m/%d %H:%M:%S"))
|
|
||||||
fin_periode_transitoire = time.mktime(time.strptime("%s/09/30 23:59:59" % (dat[0],), "%Y/%m/%d %H:%M:%S"))
|
|
||||||
|
|
||||||
#Sursis pour les inscription après le 1/11 pour fournir la carte étudiant
|
# Version timestampées timezone-naïves
|
||||||
sursis_carte=8*24*3600
|
debut_periode_transitoire = time.mktime(time.strptime("%s/08/16 00:00:00" % (__annee,), "%Y/%m/%d %H:%M:%S"))
|
||||||
|
fin_periode_transitoire = time.mktime(time.strptime("%s/09/30 23:59:59" % (__annee,), "%Y/%m/%d %H:%M:%S"))
|
||||||
|
|
||||||
|
# On est en période transitoire si on est dans le bon intervale
|
||||||
|
periode_transitoire = (debut_periode_transitoire <= time.time() <= fin_periode_transitoire)
|
||||||
|
|
||||||
|
ann_scol = __annee
|
||||||
|
if time.time() <= debut_periode_transitoire:
|
||||||
|
ann_scol -= 1
|
||||||
|
|
||||||
# Gel des cableurs pas a jour de cotisation
|
# Gel des cableurs pas a jour de cotisation
|
||||||
# Les droits ne sont pas retires mais il n'y a plus de sudo
|
# Les droits ne sont pas retires mais il n'y a plus de sudo
|
||||||
|
@ -65,7 +60,8 @@ club_login_shell='/usr/bin/rssh'
|
||||||
# Longueur maximale d'un login
|
# Longueur maximale d'un login
|
||||||
maxlen_login = 25
|
maxlen_login = 25
|
||||||
|
|
||||||
shells_possibles = [u'/bin/csh',
|
shells_possibles = [
|
||||||
|
u'/bin/csh',
|
||||||
u'/bin/sh', # tout caca
|
u'/bin/sh', # tout caca
|
||||||
u'/bin/dash', # un bash light
|
u'/bin/dash', # un bash light
|
||||||
u'/usr/bin/rc',
|
u'/usr/bin/rc',
|
||||||
|
@ -90,58 +86,169 @@ shells_possibles = [u'/bin/csh',
|
||||||
u'', # le shell vide pour pouvoir les punis
|
u'', # le shell vide pour pouvoir les punis
|
||||||
]
|
]
|
||||||
|
|
||||||
shells_gest_crans_order = ["zsh", "bash", "tcsh", "screen", "rbash", "rssh",
|
shells_gest_crans_order = [
|
||||||
"badPassSh", "disconnect_shell"]
|
"zsh",
|
||||||
|
"bash",
|
||||||
|
"tcsh",
|
||||||
|
"screen",
|
||||||
|
"rbash",
|
||||||
|
"rssh",
|
||||||
|
"badPassSh",
|
||||||
|
"disconnect_shell"
|
||||||
|
]
|
||||||
|
|
||||||
shells_gest_crans = {
|
shells_gest_crans = {
|
||||||
"zsh": {"path":"/bin/zsh", "desc":"Le Z SHell, shell par defaut sur zamok"},
|
"zsh" : {
|
||||||
"bash": {"path":"/bin/bash", "desc":"Le Boune-Again SHell, shell par defaut de la plupart des linux"},
|
"path" : "/bin/zsh",
|
||||||
"tcsh": {"path":"/bin/tcsh", "desc":"C SHell ++"},
|
"desc" : "Le Z SHell, shell par defaut sur zamok"
|
||||||
"screen":{"path":'/usr/bin/screen', "desc":"Un gestionnaire de fenêtre dans un terminal"},
|
},
|
||||||
"rbash": {"path":"/bin/rbash", "desc":"Un bash très restreint, voir man rbash"},
|
"bash" : {
|
||||||
"rssh": {"path":"/usr/bin/rssh", "desc":"Shell ne permetant que les transferts de fichiers via scp ou sftp"},
|
"path" : "/bin/bash",
|
||||||
"badPassSh":{"path":"/usr/local/bin/badPassSh", "desc":"Demande de changer de mot de passe à la connexion"},
|
"desc" : "Le Boune-Again SHell, shell par defaut de la plupart des linux"
|
||||||
"disconnect_shell":{"path":"/usr/local/bin/disconnect_shell", "desc":"Shell pour les suspensions de compte avec message explicatif"},
|
},
|
||||||
|
"tcsh" : {
|
||||||
|
"path" : "/bin/tcsh",
|
||||||
|
"desc" : "C SHell ++"
|
||||||
|
},
|
||||||
|
"screen" : {
|
||||||
|
"path" : '/usr/bin/screen',
|
||||||
|
"desc" : "Un gestionnaire de fenêtre dans un terminal"
|
||||||
|
},
|
||||||
|
"rbash" : {
|
||||||
|
"path" : "/bin/rbash",
|
||||||
|
"desc" : "Un bash très restreint, voir man rbash"
|
||||||
|
},
|
||||||
|
"rssh" : {
|
||||||
|
"path" : "/usr/bin/rssh",
|
||||||
|
"desc" : "Shell ne permetant que les transferts de fichiers via scp ou sftp"
|
||||||
|
},
|
||||||
|
"badPassSh" : {
|
||||||
|
"path" : "/usr/local/bin/badPassSh",
|
||||||
|
"desc" : "Demande de changer de mot de passe à la connexion"
|
||||||
|
},
|
||||||
|
"disconnect_shell" : {
|
||||||
|
"path" : "/usr/local/bin/disconnect_shell",
|
||||||
|
"desc" : "Shell pour les suspensions de compte avec message explicatif"
|
||||||
|
},
|
||||||
}
|
}
|
||||||
# Quels droits donnent l'appartenance à quel groupe Unix ?
|
# Quels droits donnent l'appartenance à quel groupe Unix ?
|
||||||
droits_groupes = {'adm' : [u'Nounou'],
|
droits_groupes = {
|
||||||
'respbats' : [u'Imprimeur', u'Cableur', u'Nounou'],
|
'adm' : [
|
||||||
'apprentis' : [u'Apprenti'],
|
u'Nounou',
|
||||||
'moderateurs' : [u'Moderateur'],
|
],
|
||||||
'disconnect' : [u'Bureau'],
|
'respbats' : [
|
||||||
'imprimeurs' : [u'Imprimeur', u'Nounou', u'Tresorier'],
|
u'Imprimeur',
|
||||||
'bureau' : [u'Bureau'],
|
u'Cableur',
|
||||||
'webadm' : [u'Webmaster'],
|
u'Nounou',
|
||||||
'webradio' : [u'Webradio'],
|
],
|
||||||
|
'apprentis' : [
|
||||||
|
u'Apprenti',
|
||||||
|
],
|
||||||
|
'moderateurs' : [
|
||||||
|
u'Moderateur',
|
||||||
|
],
|
||||||
|
'disconnect' : [
|
||||||
|
u'Bureau',
|
||||||
|
],
|
||||||
|
'imprimeurs' : [
|
||||||
|
u'Imprimeur',
|
||||||
|
u'Nounou',
|
||||||
|
u'Tresorier',
|
||||||
|
],
|
||||||
|
'bureau' : [
|
||||||
|
u'Bureau',
|
||||||
|
],
|
||||||
|
'webadm' : [
|
||||||
|
u'Webmaster',
|
||||||
|
],
|
||||||
|
'webradio' : [
|
||||||
|
u'Webradio',
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
####### Les modes de paiement accepté par le crans
|
####### Les modes de paiement accepté par le crans
|
||||||
|
|
||||||
modePaiement = ['liquide', 'paypal', 'solde', 'cheque', 'carte', 'comnpay', 'arbitraire', 'note']
|
modePaiement = [
|
||||||
|
'liquide',
|
||||||
|
'paypal',
|
||||||
|
'solde',
|
||||||
|
'cheque',
|
||||||
|
'carte',
|
||||||
|
'comnpay',
|
||||||
|
'arbitraire',
|
||||||
|
'note',
|
||||||
|
]
|
||||||
|
|
||||||
####### Les ML
|
####### Les ML
|
||||||
# Le + devant un nom de ML indique une synchronisation
|
# Le + devant un nom de ML indique une synchronisation
|
||||||
# ML <-> fonction partielle : il n'y a pas d'effacement automatique
|
# ML <-> fonction partielle : il n'y a pas d'effacement automatique
|
||||||
# des abonnés si le droit est retiré
|
# des abonnés si le droit est retiré
|
||||||
droits_mailing_listes = {'roots' : [ u'Nounou', u'Apprenti'],
|
droits_mailing_listes = {
|
||||||
'mailman' : [ u'Nounou'],
|
'roots' : [
|
||||||
'+nounou' : [ u'Nounou', u'Apprenti'],
|
u'Nounou',
|
||||||
'respbats' : [ u'Cableur', u'Nounou', u'Bureau'],
|
u'Apprenti',
|
||||||
'moderateurs' : [ u'Moderateur', u'Bureau'],
|
],
|
||||||
'disconnect' : [ u'Nounou', u'Bureau'],
|
'mailman' : [
|
||||||
'impression' : [ u'Imprimeur'],
|
u'Nounou',
|
||||||
'bureau' : [u'Bureau'],
|
],
|
||||||
'tresorier' : [u'Tresorier'],
|
'+nounou' : [
|
||||||
'apprentis' : [u'Apprenti'],
|
u'Nounou',
|
||||||
'+ca' : [u'Bureau', u'Apprenti', u'Nounou', u'Cableur'],
|
u'Apprenti',
|
||||||
|
],
|
||||||
'+federez' : [u'Bureau', u'Apprenti', u'Nounou'],
|
'respbats' : [
|
||||||
'+install-party' : [u'Bureau', u'Apprenti', u'Nounou'],
|
u'Cableur',
|
||||||
|
u'Nounou',
|
||||||
|
u'Bureau',
|
||||||
|
],
|
||||||
|
'moderateurs' : [
|
||||||
|
u'Moderateur',
|
||||||
|
u'Bureau',
|
||||||
|
],
|
||||||
|
'disconnect' : [
|
||||||
|
u'Nounou',
|
||||||
|
u'Bureau',
|
||||||
|
],
|
||||||
|
'impression' : [
|
||||||
|
u'Imprimeur',
|
||||||
|
],
|
||||||
|
'bureau' : [
|
||||||
|
u'Bureau',
|
||||||
|
],
|
||||||
|
'tresorier' : [
|
||||||
|
u'Tresorier',
|
||||||
|
],
|
||||||
|
'apprentis' : [
|
||||||
|
u'Apprenti',
|
||||||
|
],
|
||||||
|
'+ca' : [
|
||||||
|
u'Bureau',
|
||||||
|
u'Apprenti',
|
||||||
|
u'Nounou',
|
||||||
|
u'Cableur',
|
||||||
|
],
|
||||||
|
'+federez' : [
|
||||||
|
u'Bureau',
|
||||||
|
u'Apprenti',
|
||||||
|
u'Nounou',
|
||||||
|
],
|
||||||
|
'+install-party' : [
|
||||||
|
u'Bureau',
|
||||||
|
u'Apprenti',
|
||||||
|
u'Nounou',
|
||||||
|
],
|
||||||
|
|
||||||
# Correspondance partielle nécessaire... Des adresses non-crans sont inscrites à ces ML.
|
# Correspondance partielle nécessaire... Des adresses non-crans sont inscrites à ces ML.
|
||||||
'+dsi-crans' : [u'Nounou', u'Bureau'],
|
'+dsi-crans' : [
|
||||||
'+crous-crans' : [u'Nounou', u'Bureau'],
|
u'Nounou',
|
||||||
|
u'Bureau',
|
||||||
'+wrc' : [u'Webradio'],
|
],
|
||||||
|
'+crous-crans' : [
|
||||||
|
u'Nounou',
|
||||||
|
u'Bureau',
|
||||||
|
],
|
||||||
|
'+wrc' : [
|
||||||
|
u'Webradio',
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
#: Répertoire de stockage des objets détruits
|
#: Répertoire de stockage des objets détruits
|
||||||
|
@ -218,9 +325,16 @@ plage_ens = '138.231.0.0/16'
|
||||||
# clefs qui cassent la bijectivité, mais qui peuvent servir.
|
# clefs qui cassent la bijectivité, mais qui peuvent servir.
|
||||||
# NETs est l'union des deux
|
# NETs est l'union des deux
|
||||||
NETs_primaires = {
|
NETs_primaires = {
|
||||||
'serveurs' : ['138.231.136.0/24'],
|
'serveurs' : [
|
||||||
'adherents' : ['138.231.137.0/24', '138.231.138.0/23', '138.231.140.0/22'],
|
'138.231.136.0/24',
|
||||||
'wifi-adh' : ['138.231.144.0/22',
|
],
|
||||||
|
'adherents' : [
|
||||||
|
'138.231.137.0/24',
|
||||||
|
'138.231.138.0/23',
|
||||||
|
'138.231.140.0/22',
|
||||||
|
],
|
||||||
|
'wifi-adh' : [
|
||||||
|
'138.231.144.0/22',
|
||||||
'138.231.148.32/27',
|
'138.231.148.32/27',
|
||||||
'138.231.148.64/26',
|
'138.231.148.64/26',
|
||||||
'138.231.148.128/25',
|
'138.231.148.128/25',
|
||||||
|
@ -230,28 +344,55 @@ NETs_primaires = {
|
||||||
'bornes' : [
|
'bornes' : [
|
||||||
'138.231.148.0/27',
|
'138.231.148.0/27',
|
||||||
],
|
],
|
||||||
'adm' : ['10.231.136.0/24'],
|
'adm' : [
|
||||||
'personnel-ens' : ['10.2.9.0/24'],
|
'10.231.136.0/24'
|
||||||
'gratuit' : ['10.42.0.0/16'],
|
],
|
||||||
'accueil' : ['10.51.0.0/16'],
|
'personnel-ens' : [
|
||||||
'federez' : ['10.53.0.0/16'],
|
'10.2.9.0/24'
|
||||||
'isolement' : ['10.52.0.0/16'],
|
],
|
||||||
'evenementiel' : ['10.231.137.0/24'],
|
'gratuit' : [
|
||||||
'multicast' : ['239.0.0.0/8'],
|
'10.42.0.0/16'
|
||||||
'ens' : ['138.231.135.0/24'],
|
],
|
||||||
|
'accueil' : [
|
||||||
|
'10.51.0.0/16'
|
||||||
|
],
|
||||||
|
'federez' : [
|
||||||
|
'10.53.0.0/16'
|
||||||
|
],
|
||||||
|
'isolement' : [
|
||||||
|
'10.52.0.0/16'
|
||||||
|
],
|
||||||
|
'evenementiel' : [
|
||||||
|
'10.231.137.0/24'
|
||||||
|
],
|
||||||
|
'multicast' : [
|
||||||
|
'239.0.0.0/8'
|
||||||
|
],
|
||||||
|
'ens' : [
|
||||||
|
'138.231.135.0/24'
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
NETs_secondaires = {
|
NETs_secondaires = {
|
||||||
'all' : ['138.231.136.0/21', '138.231.144.0/21'],
|
'all' : [
|
||||||
'wifi': ['138.231.144.0/21'],
|
'138.231.136.0/21',
|
||||||
'fil' : ['138.231.136.0/21'],
|
'138.231.144.0/21',
|
||||||
|
],
|
||||||
|
'wifi': [
|
||||||
|
'138.231.144.0/21',
|
||||||
|
],
|
||||||
|
'fil' : [
|
||||||
|
'138.231.136.0/21',
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
NETs = {}
|
NETs = {}
|
||||||
NETs.update(NETs_primaires)
|
NETs.update(NETs_primaires)
|
||||||
NETs.update(NETs_secondaires)
|
NETs.update(NETs_secondaires)
|
||||||
|
|
||||||
NETs_regexp = { 'all' : '^138\.231\.1(3[6789]|4[0123456789]|5[01])\.\d+$' }
|
NETs_regexp = {
|
||||||
|
'all' : r'^138\.231\.1(3[6789]|4[0123456789]|5[01])\.\d+$'
|
||||||
|
}
|
||||||
|
|
||||||
# Classes de rid
|
# Classes de rid
|
||||||
# Merci d'essayer de les faire correspondre avec les réseaux
|
# Merci d'essayer de les faire correspondre avec les réseaux
|
||||||
|
@ -320,23 +461,58 @@ ipv6_machines_speciales = {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Les préfixes ipv6 publics
|
# Les préfixes ipv6 publics
|
||||||
prefix = { 'subnet' : [ '2a01:240:fe3d::/48' ],
|
prefix = {
|
||||||
'serveurs' : [ '2a01:240:fe3d:4::/64' ],
|
'subnet' : [
|
||||||
'adherents' : [ '2a01:240:fe3d:4::/64' ],
|
'2a01:240:fe3d::/48',
|
||||||
'fil' : [ '2a01:240:fe3d:4::/64' ],
|
],
|
||||||
'adm' : [ '2a01:240:fe3d:c804::/64' ],
|
'serveurs' : [
|
||||||
'adm-v6' : [ '2a01:240:fe3d:c804::/64' ],
|
'2a01:240:fe3d:4::/64',
|
||||||
'wifi' : [ '2a01:240:fe3d:c04::/64' ],
|
],
|
||||||
'serveurs-v6' : [ '2a01:240:fe3d:c04::/64' ],
|
'adherents' : [
|
||||||
'adherents-v6' : [ '2a01:240:fe3d:4::/64' ],
|
'2a01:240:fe3d:4::/64',
|
||||||
'wifi-adh-v6' : [ '2a01:240:fe3d:c04::/64' ],
|
],
|
||||||
'personnel-ens' : [ '2a01:240:fe3d:4::/64' ],
|
'fil' : [
|
||||||
'sixxs2' : [ '2a01:240:fe00:68::/64' ],
|
'2a01:240:fe3d:4::/64',
|
||||||
'evenementiel' : [ '2a01:240:fe3d:d2::/64' ],
|
],
|
||||||
'bornes' : [ '2a01:240:fe3d:c04::/64' ],
|
'adm' : [
|
||||||
'bornes-v6' : [ '2a01:240:fe3d:c04::/64' ],
|
'2a01:240:fe3d:c804::/64',
|
||||||
'wifi-adh' : [ '2a01:240:fe3d:c04::/64' ],
|
],
|
||||||
'v6only' : [ '2001:470:c8b9:a4::/64' ],
|
'adm-v6' : [
|
||||||
|
'2a01:240:fe3d:c804::/64',
|
||||||
|
],
|
||||||
|
'wifi' : [
|
||||||
|
'2a01:240:fe3d:c04::/64',
|
||||||
|
],
|
||||||
|
'serveurs-v6' : [
|
||||||
|
'2a01:240:fe3d:c04::/64',
|
||||||
|
],
|
||||||
|
'adherents-v6' : [
|
||||||
|
'2a01:240:fe3d:4::/64',
|
||||||
|
],
|
||||||
|
'wifi-adh-v6' : [
|
||||||
|
'2a01:240:fe3d:c04::/64',
|
||||||
|
],
|
||||||
|
'personnel-ens' : [
|
||||||
|
'2a01:240:fe3d:4::/64',
|
||||||
|
],
|
||||||
|
'sixxs2' : [
|
||||||
|
'2a01:240:fe00:68::/64',
|
||||||
|
],
|
||||||
|
'evenementiel' : [
|
||||||
|
'2a01:240:fe3d:d2::/64',
|
||||||
|
],
|
||||||
|
'bornes' : [
|
||||||
|
'2a01:240:fe3d:c04::/64',
|
||||||
|
],
|
||||||
|
'bornes-v6' : [
|
||||||
|
'2a01:240:fe3d:c04::/64',
|
||||||
|
],
|
||||||
|
'wifi-adh' : [
|
||||||
|
'2a01:240:fe3d:c04::/64',
|
||||||
|
],
|
||||||
|
'v6only' : [
|
||||||
|
'2001:470:c8b9:a4::/64',
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
# Préfixes ipv6 internes (ula)
|
# Préfixes ipv6 internes (ula)
|
||||||
|
@ -346,10 +522,12 @@ int_prefix = {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Domaines dans lesquels les machines sont placées suivant leur type
|
# Domaines dans lesquels les machines sont placées suivant leur type
|
||||||
domains = { 'machineFixe': 'crans.org',
|
domains = {
|
||||||
|
'machineFixe': 'crans.org',
|
||||||
'machineCrans': 'crans.org',
|
'machineCrans': 'crans.org',
|
||||||
'machineWifi': 'wifi.crans.org',
|
'machineWifi': 'wifi.crans.org',
|
||||||
'borneWifi': 'wifi.crans.org' }
|
'borneWifi': 'wifi.crans.org',
|
||||||
|
}
|
||||||
|
|
||||||
# VLans
|
# VLans
|
||||||
vlans = {
|
vlans = {
|
||||||
|
@ -385,30 +563,42 @@ vlans = {
|
||||||
'freebox': 8,
|
'freebox': 8,
|
||||||
}
|
}
|
||||||
|
|
||||||
filter_policy = { 'komaz' : { 'policy_input' : 'ACCEPT',
|
filter_policy = {
|
||||||
|
'komaz' : {
|
||||||
|
'policy_input' : 'ACCEPT',
|
||||||
'policy_forward' : 'ACCEPT',
|
'policy_forward' : 'ACCEPT',
|
||||||
'policy_output' : 'ACCEPT'
|
'policy_output' : 'ACCEPT',
|
||||||
},
|
},
|
||||||
'zamok' : { 'policy_input' : 'ACCEPT',
|
'zamok' : {
|
||||||
|
'policy_input' : 'ACCEPT',
|
||||||
'policy_forward' : 'DROP',
|
'policy_forward' : 'DROP',
|
||||||
'policy_output' : 'ACCEPT'
|
'policy_output' : 'ACCEPT',
|
||||||
},
|
},
|
||||||
'default' : { 'policy_input' : 'ACCEPT',
|
'default' : {
|
||||||
|
'policy_input' : 'ACCEPT',
|
||||||
'policy_forward' : 'ACCEPT',
|
'policy_forward' : 'ACCEPT',
|
||||||
'policy_output' : 'ACCEPT'
|
'policy_output' : 'ACCEPT',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Cf RFC 4890
|
# Cf RFC 4890
|
||||||
authorized_icmpv6 = ['echo-request', 'echo-reply', 'destination-unreachable',
|
authorized_icmpv6 = [
|
||||||
'packet-too-big', 'ttl-zero-during-transit', 'parameter-problem']
|
'echo-request',
|
||||||
|
'echo-reply',
|
||||||
|
'destination-unreachable',
|
||||||
|
'packet-too-big',
|
||||||
|
'ttl-zero-during-transit',
|
||||||
|
'parameter-problem',
|
||||||
|
]
|
||||||
|
|
||||||
output_file = { 4 : '/tmp/ipt_rules',
|
output_file = {
|
||||||
6 : '/tmp/ip6t_rules'
|
4 : '/tmp/ipt_rules',
|
||||||
|
6 : '/tmp/ip6t_rules',
|
||||||
}
|
}
|
||||||
|
|
||||||
file_pickle = { 4 : '/tmp/ipt_pickle',
|
file_pickle = {
|
||||||
6 : '/tmp/ip6t_pickle'
|
4 : '/tmp/ipt_pickle',
|
||||||
|
6 : '/tmp/ip6t_pickle',
|
||||||
}
|
}
|
||||||
|
|
||||||
##################################################################################
|
##################################################################################
|
||||||
|
@ -447,10 +637,24 @@ blacklist_bridage_upload = ['autodisc_upload', 'upload']
|
||||||
|
|
||||||
##################################################################################
|
##################################################################################
|
||||||
|
|
||||||
adm_users = [ 'root', 'identd', 'daemon', 'postfix', 'freerad', 'amavis',
|
adm_users = [
|
||||||
'nut', 'respbats', 'list', 'sqlgrey', 'ntpd', 'lp' ]
|
'root',
|
||||||
|
'identd',
|
||||||
|
'daemon',
|
||||||
|
'postfix',
|
||||||
|
'freerad',
|
||||||
|
'amavis',
|
||||||
|
'nut',
|
||||||
|
'respbats',
|
||||||
|
'list',
|
||||||
|
'sqlgrey',
|
||||||
|
'ntpd',
|
||||||
|
'lp',
|
||||||
|
]
|
||||||
|
|
||||||
open_ports = { 'tcp' : '22' }
|
open_ports = {
|
||||||
|
'tcp' : '22',
|
||||||
|
}
|
||||||
|
|
||||||
# Debit max sur le vlan de la connexion gratuite
|
# Debit max sur le vlan de la connexion gratuite
|
||||||
debit_max_radin = 1000000
|
debit_max_radin = 1000000
|
||||||
|
@ -460,13 +664,83 @@ debit_max_gratuit = 1000000
|
||||||
## Vlan accueil et isolement ##
|
## Vlan accueil et isolement ##
|
||||||
###############################
|
###############################
|
||||||
accueil_route = {
|
accueil_route = {
|
||||||
'138.231.136.1':{'tcp':['80','443', '22'],'hosts':['ssh.crans.org', 'zamok.crans.org']},
|
'138.231.136.1' : {
|
||||||
'138.231.136.67':{'tcp':['80','443'],'hosts':['www.crans.org', 'wiki.crans.org', 'wifi.crans.org']},
|
'tcp' : [
|
||||||
'138.231.136.98':{'tcp':['20','21','80','111','1024:65535'],'udp':['69','1024:65535'], 'hosts':['ftp.crans.org']},
|
'80',
|
||||||
'138.231.136.130':{'tcp':['80','443'],'hosts':['intranet2.crans.org', 'intranet.crans.org']},
|
'443',
|
||||||
'138.231.136.18':{'tcp':['80','443'],'hosts':['cas.crans.org', 'login.crans.org', 'auth.crans.org']},
|
'22'
|
||||||
'213.154.225.236':{'tcp':['80','443'], 'hosts':['crl.cacert.org']},
|
],
|
||||||
'213.154.225.237':{'tcp':['80','443'], 'hosts':['ocsp.cacert.org']},
|
'hosts' : [
|
||||||
|
'ssh.crans.org',
|
||||||
|
'zamok.crans.org',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'138.231.136.67' : {
|
||||||
|
'tcp' : [
|
||||||
|
'80',
|
||||||
|
'443',
|
||||||
|
],
|
||||||
|
'hosts' : [
|
||||||
|
'www.crans.org',
|
||||||
|
'wiki.crans.org',
|
||||||
|
'wifi.crans.org',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'138.231.136.98' : {
|
||||||
|
'tcp' : [
|
||||||
|
'20',
|
||||||
|
'21',
|
||||||
|
'80',
|
||||||
|
'111',
|
||||||
|
'1024:65535',
|
||||||
|
],
|
||||||
|
'udp' : [
|
||||||
|
'69',
|
||||||
|
'1024:65535',
|
||||||
|
],
|
||||||
|
'hosts' : [
|
||||||
|
'ftp.crans.org',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'138.231.136.130' : {
|
||||||
|
'tcp' : [
|
||||||
|
'80',
|
||||||
|
'443',
|
||||||
|
],
|
||||||
|
'hosts' : [
|
||||||
|
'intranet2.crans.org',
|
||||||
|
'intranet.crans.org',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'138.231.136.18' : {
|
||||||
|
'tcp' : [
|
||||||
|
'80',
|
||||||
|
'443',
|
||||||
|
],
|
||||||
|
'hosts' : [
|
||||||
|
'cas.crans.org',
|
||||||
|
'login.crans.org',
|
||||||
|
'auth.crans.org',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'213.154.225.236' : {
|
||||||
|
'tcp' : [
|
||||||
|
'80',
|
||||||
|
'443',
|
||||||
|
],
|
||||||
|
'hosts' : [
|
||||||
|
'crl.cacert.org',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'213.154.225.237' : {
|
||||||
|
'tcp' : [
|
||||||
|
'80',
|
||||||
|
'443',
|
||||||
|
],
|
||||||
|
'hosts' : [
|
||||||
|
'ocsp.cacert.org',
|
||||||
|
],
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
dhcp_servers = ['dhcp.adm.crans.org', 'isc.adm.crans.org']
|
dhcp_servers = ['dhcp.adm.crans.org', 'isc.adm.crans.org']
|
||||||
|
|
|
@ -21,10 +21,10 @@
|
||||||
import sys
|
import sys
|
||||||
import os, re, syslog, cPickle, socket
|
import os, re, syslog, cPickle, socket
|
||||||
|
|
||||||
from ldap_crans import crans_ldap, hostname
|
from ldap_crans import crans_ldap, hostname, generalizedTimeFormat
|
||||||
from commands import getstatusoutput
|
from commands import getstatusoutput
|
||||||
from config import NETs, role, prefix, rid, output_file, filter_policy, rid_primaires
|
from config import NETs, role, prefix, rid, output_file, filter_policy, rid_primaires
|
||||||
from config import blacklist_sanctions, blacklist_sanctions_soft, blacklist_bridage_upload, file_pickle, ann_scol, periode_transitoire
|
from config import blacklist_sanctions, blacklist_sanctions_soft, blacklist_bridage_upload, file_pickle, periode_transitoire, gtf_debut_periode_transitoire
|
||||||
from iptools import AddrInNet
|
from iptools import AddrInNet
|
||||||
from ridtools import Rid, find_rid_plage
|
from ridtools import Rid, find_rid_plage
|
||||||
import subprocess
|
import subprocess
|
||||||
|
@ -768,9 +768,13 @@ def blacklist(ipt):
|
||||||
if [x for x in sanctions if x in blacklist_sanctions_ipv6]:
|
if [x for x in sanctions if x in blacklist_sanctions_ipv6]:
|
||||||
blcklst.extend(target.machines())
|
blcklst.extend(target.machines())
|
||||||
|
|
||||||
s = db.search('mblacklist=*&paiement=%s' % ann_scol)
|
s = db.search('mblacklist=*&finConnexion>=%(fin)s&finAdhesion>=%(fin)s' % {
|
||||||
|
'fin': generalizedTimeFormat(),
|
||||||
|
})
|
||||||
if periode_transitoire:
|
if periode_transitoire:
|
||||||
s['machine'].extend(db.search('mblacklist=*&paiement=%s' % (ann_scol-1))['machine'])
|
s['machine'].extend(db.search('mblacklist=*&finConnexion>=%(fin)s&finAdhsion>=%(fin)s' % {
|
||||||
|
'fin': gtf_debut_periode_transitoire,
|
||||||
|
})['machine'])
|
||||||
|
|
||||||
for target in s['machine']:
|
for target in s['machine']:
|
||||||
sanctions = target.blacklist_actif()
|
sanctions = target.blacklist_actif()
|
||||||
|
|
|
@ -134,7 +134,6 @@ droits_vieux = [u'Nounou', u'Bureau']
|
||||||
### Variables internes diverses
|
### Variables internes diverses
|
||||||
#isadm = user_tests.isadm()
|
#isadm = user_tests.isadm()
|
||||||
#isdeconnecteur = user_tests.isdeconnecteur()
|
#isdeconnecteur = user_tests.isdeconnecteur()
|
||||||
ann_scol = config.ann_scol
|
|
||||||
#script_utilisateur = user_tests.getuser()
|
#script_utilisateur = user_tests.getuser()
|
||||||
script_utilisateur = cur_user
|
script_utilisateur = cur_user
|
||||||
|
|
||||||
|
@ -159,12 +158,15 @@ def tz(thetz):
|
||||||
else:
|
else:
|
||||||
return "%s%04d" % ("+"*(thetz < 0) + "-"*(thetz > 0), abstz)
|
return "%s%04d" % ("+"*(thetz < 0) + "-"*(thetz > 0), abstz)
|
||||||
|
|
||||||
def generalizedTimeFormat(stamp):
|
def generalizedTimeFormat(stamp=None):
|
||||||
"""Converts a timestamp (local) in a generalized time format
|
"""Converts a timestamp (local) in a generalized time format
|
||||||
for LDAP
|
for LDAP
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if stamp is None:
|
||||||
|
stamp = time.time()
|
||||||
|
|
||||||
return "%s%s" % (time.strftime("%Y%m%d%H%M%S", time.localtime(stamp)), tz(time.altzone/3600))
|
return "%s%s" % (time.strftime("%Y%m%d%H%M%S", time.localtime(stamp)), tz(time.altzone/3600))
|
||||||
|
|
||||||
def fromGeneralizedTimeFormat(gtf):
|
def fromGeneralizedTimeFormat(gtf):
|
||||||
|
@ -833,9 +835,13 @@ class CransLdap:
|
||||||
# définifif (cf config.py).
|
# définifif (cf config.py).
|
||||||
if config.periode_transitoire:
|
if config.periode_transitoire:
|
||||||
# Pour la période transitoire année précédente ok
|
# Pour la période transitoire année précédente ok
|
||||||
el = "(|(paiement=%d)(paiement=%d)(finAdhesion>=%s))" % (config.ann_scol, config.ann_scol-1, generalizedTimeFormat(time.time()))
|
el = "(&(finAdhesion>=%(fin)s)(finConnexion>=%(fin)s))" % {
|
||||||
|
'fin': config.gtf_debut_periode_transitoire,
|
||||||
|
}
|
||||||
else:
|
else:
|
||||||
el = "(|(paiement=%s)(finAdhesion>=%s))" % (config.ann_scol, generalizedTimeFormat(time.time()))
|
el = "(&(finAdhesion>=%(fin)s)(finConnexion>=%(fin)s))" % {
|
||||||
|
'fin': generalizedTimeFormat(),
|
||||||
|
}
|
||||||
# Doit-on bloquer en cas de manque de la carte d'etudiant ?
|
# Doit-on bloquer en cas de manque de la carte d'etudiant ?
|
||||||
# (si période transitoire on ne bloque dans aucun cas)
|
# (si période transitoire on ne bloque dans aucun cas)
|
||||||
elif champ[1:] == 'blacklist':
|
elif champ[1:] == 'blacklist':
|
||||||
|
@ -1062,9 +1068,6 @@ class BaseClasseCrans(CransLdap):
|
||||||
def connexion(self, update=False, f=None):
|
def connexion(self, update=False, f=None):
|
||||||
return 0.0
|
return 0.0
|
||||||
|
|
||||||
def sursis_carte(self):
|
|
||||||
return False
|
|
||||||
|
|
||||||
def chbre(self, new=None):
|
def chbre(self, new=None):
|
||||||
return "????"
|
return "????"
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,6 @@ sys.path.append('/usr/scripts/gestion')
|
||||||
from affich_tools import tableau, cprint
|
from affich_tools import tableau, cprint
|
||||||
from email_tools import send_email, parse_mail_template
|
from email_tools import send_email, parse_mail_template
|
||||||
from ldap_crans import crans_ldap
|
from ldap_crans import crans_ldap
|
||||||
from config import ann_scol
|
|
||||||
db = crans_ldap()
|
db = crans_ldap()
|
||||||
|
|
||||||
import syslog
|
import syslog
|
||||||
|
@ -212,7 +211,7 @@ comptes_inactifs.py
|
||||||
mail = nb_mails_non_lus(login)
|
mail = nb_mails_non_lus(login)
|
||||||
mail = mail == None and u'?' or mail > 0 and u'X' or u' '
|
mail = mail == None and u'?' or mail > 0 and u'X' or u' '
|
||||||
ligne = (a.id(), login, a.Nom(), date, forward, mail)
|
ligne = (a.id(), login, a.Nom(), date, forward, mail)
|
||||||
if ann_scol in a.paiement() or a.adhesion() > time():
|
if a.adhesion() > time():
|
||||||
inscrits.append(ligne)
|
inscrits.append(ligne)
|
||||||
else:
|
else:
|
||||||
anciens.append(ligne)
|
anciens.append(ligne)
|
||||||
|
|
|
@ -35,8 +35,6 @@ import gestion.config as config
|
||||||
import gestion.affichage as affichage
|
import gestion.affichage as affichage
|
||||||
|
|
||||||
from cranslib.decorators import static_var
|
from cranslib.decorators import static_var
|
||||||
from config import ann_scol
|
|
||||||
|
|
||||||
|
|
||||||
### Appels à LDAP et tri initial sur l'année en cours.
|
### Appels à LDAP et tri initial sur l'année en cours.
|
||||||
DB = shortcuts.lc_ldap_readonly()
|
DB = shortcuts.lc_ldap_readonly()
|
||||||
|
@ -91,7 +89,7 @@ def actions_cableurs():
|
||||||
champ = parse_historique(histo_line)[0]
|
champ = parse_historique(histo_line)[0]
|
||||||
champ_action = parse_historique(histo_line)[1]
|
champ_action = parse_historique(histo_line)[1]
|
||||||
date = parse_historique(histo_line)[2]
|
date = parse_historique(histo_line)[2]
|
||||||
if (u' inscription' in champ_action or u'Adhesion+' in champ_action) and date > datetime.date(ann_scol, 8, 1):
|
if (u' inscription' in champ_action or u'Adhesion+' in champ_action) and date > datetime.date(config.ann_scol, 8, 1):
|
||||||
HISTORIQUE.append(champ)
|
HISTORIQUE.append(champ)
|
||||||
|
|
||||||
for facture in factures():
|
for facture in factures():
|
||||||
|
@ -100,7 +98,7 @@ def actions_cableurs():
|
||||||
champ = parse_historique(histo_line)[0]
|
champ = parse_historique(histo_line)[0]
|
||||||
champ_action = parse_historique(histo_line)[1]
|
champ_action = parse_historique(histo_line)[1]
|
||||||
date = parse_historique(histo_line)[2]
|
date = parse_historique(histo_line)[2]
|
||||||
if u'controle' in champ_action and date > datetime.date(ann_scol, 8, 1):
|
if u'controle' in champ_action and date > datetime.date(config.ann_scol, 8, 1):
|
||||||
HISTORIQUE.append(champ)
|
HISTORIQUE.append(champ)
|
||||||
return HISTORIQUE
|
return HISTORIQUE
|
||||||
|
|
||||||
|
@ -139,7 +137,7 @@ def cableurs_utiles():
|
||||||
"""Renvoi le nombre de cableurs ayant un score non nul"""
|
"""Renvoi le nombre de cableurs ayant un score non nul"""
|
||||||
useless_cableurs = 0
|
useless_cableurs = 0
|
||||||
for k in range(0, len(cableurs())):
|
for k in range(0, len(cableurs())):
|
||||||
if (SCORES[k][1] == 0):
|
if SCORES[k][1] == 0:
|
||||||
useless_cableurs = useless_cableurs + 1
|
useless_cableurs = useless_cableurs + 1
|
||||||
return len(cableurs()) - useless_cableurs
|
return len(cableurs()) - useless_cableurs
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue