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
|
||||
|
||||
# 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"
|
||||
##### Gestion des câblages
|
||||
# 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
|
||||
|
||||
# Ne modifier que les dates !
|
||||
dat = time.localtime()
|
||||
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
|
||||
# On récupère l'année scolaire à tout besoin
|
||||
__annee = time.localtime()[0]
|
||||
|
||||
# Prochaine période transitoire de l'année
|
||||
gtf_debut_periode_transitoire = "%s0816000000+0200" % (dat[0],)
|
||||
gtf_fin_periode_transitoire = "%s0930235959+0200" % (dat[0],)
|
||||
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"))
|
||||
# Prochaine période transitoire de l'année version generalizedTimeFormat
|
||||
gtf_debut_periode_transitoire = "%s0816000000+0200" % (__annee,)
|
||||
gtf_fin_periode_transitoire = "%s0930235959+0200" % (__annee,)
|
||||
|
||||
#Sursis pour les inscription après le 1/11 pour fournir la carte étudiant
|
||||
sursis_carte=8*24*3600
|
||||
# Version timestampées timezone-naïves
|
||||
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
|
||||
# Les droits ne sont pas retires mais il n'y a plus de sudo
|
||||
|
@ -60,12 +55,13 @@ quota_hard = 10000000
|
|||
fquota_soft = 0
|
||||
fquota_hard = 0
|
||||
# Shell
|
||||
login_shell='/bin/zsh'
|
||||
club_login_shell='/usr/bin/rssh'
|
||||
login_shell = '/bin/zsh'
|
||||
club_login_shell = '/usr/bin/rssh'
|
||||
# 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/dash', # un bash light
|
||||
u'/usr/bin/rc',
|
||||
|
@ -90,59 +86,170 @@ shells_possibles = [u'/bin/csh',
|
|||
u'', # le shell vide pour pouvoir les punis
|
||||
]
|
||||
|
||||
shells_gest_crans_order = ["zsh", "bash", "tcsh", "screen", "rbash", "rssh",
|
||||
"badPassSh", "disconnect_shell"]
|
||||
shells_gest_crans_order = [
|
||||
"zsh",
|
||||
"bash",
|
||||
"tcsh",
|
||||
"screen",
|
||||
"rbash",
|
||||
"rssh",
|
||||
"badPassSh",
|
||||
"disconnect_shell"
|
||||
]
|
||||
|
||||
shells_gest_crans = {
|
||||
"zsh": {"path":"/bin/zsh", "desc":"Le Z SHell, shell par defaut sur zamok"},
|
||||
"bash": {"path":"/bin/bash", "desc":"Le Boune-Again SHell, shell par defaut de la plupart des linux"},
|
||||
"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"},
|
||||
"zsh" : {
|
||||
"path" : "/bin/zsh",
|
||||
"desc" : "Le Z SHell, shell par defaut sur zamok"
|
||||
},
|
||||
"bash" : {
|
||||
"path" : "/bin/bash",
|
||||
"desc" : "Le Boune-Again SHell, shell par defaut de la plupart des linux"
|
||||
},
|
||||
"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 ?
|
||||
droits_groupes = {'adm' : [u'Nounou'],
|
||||
'respbats' : [u'Imprimeur', u'Cableur', u'Nounou'],
|
||||
'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'],
|
||||
}
|
||||
droits_groupes = {
|
||||
'adm' : [
|
||||
u'Nounou',
|
||||
],
|
||||
'respbats' : [
|
||||
u'Imprimeur',
|
||||
u'Cableur',
|
||||
u'Nounou',
|
||||
],
|
||||
'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
|
||||
|
||||
modePaiement = ['liquide', 'paypal', 'solde', 'cheque', 'carte', 'comnpay', 'arbitraire', 'note']
|
||||
modePaiement = [
|
||||
'liquide',
|
||||
'paypal',
|
||||
'solde',
|
||||
'cheque',
|
||||
'carte',
|
||||
'comnpay',
|
||||
'arbitraire',
|
||||
'note',
|
||||
]
|
||||
|
||||
####### Les ML
|
||||
# Le + devant un nom de ML indique une synchronisation
|
||||
# ML <-> fonction partielle : il n'y a pas d'effacement automatique
|
||||
# des abonnés si le droit est retiré
|
||||
droits_mailing_listes = {'roots' : [ u'Nounou', u'Apprenti'],
|
||||
'mailman' : [ u'Nounou'],
|
||||
'+nounou' : [ u'Nounou', u'Apprenti'],
|
||||
'respbats' : [ 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'],
|
||||
droits_mailing_listes = {
|
||||
'roots' : [
|
||||
u'Nounou',
|
||||
u'Apprenti',
|
||||
],
|
||||
'mailman' : [
|
||||
u'Nounou',
|
||||
],
|
||||
'+nounou' : [
|
||||
u'Nounou',
|
||||
u'Apprenti',
|
||||
],
|
||||
'respbats' : [
|
||||
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.
|
||||
'+dsi-crans' : [u'Nounou', u'Bureau'],
|
||||
'+crous-crans' : [u'Nounou', u'Bureau'],
|
||||
|
||||
'+wrc' : [u'Webradio'],
|
||||
}
|
||||
'+dsi-crans' : [
|
||||
u'Nounou',
|
||||
u'Bureau',
|
||||
],
|
||||
'+crous-crans' : [
|
||||
u'Nounou',
|
||||
u'Bureau',
|
||||
],
|
||||
'+wrc' : [
|
||||
u'Webradio',
|
||||
],
|
||||
}
|
||||
|
||||
#: Répertoire de stockage des objets détruits
|
||||
cimetiere = '/home/cimetiere'
|
||||
|
@ -172,7 +279,7 @@ sshfp_algo = {
|
|||
"ecdsa-384" : (3, "ecdsa-sha2-nistp384"),
|
||||
"ecdsa-521" : (3, "ecdsa-sha2-nistp521"),
|
||||
"ecdsa" : (3, "ecdsa-sha2-nistp521"),
|
||||
}
|
||||
}
|
||||
|
||||
sshfs_ralgo = {}
|
||||
for key, value in sshfp_algo.items():
|
||||
|
@ -218,9 +325,16 @@ plage_ens = '138.231.0.0/16'
|
|||
# clefs qui cassent la bijectivité, mais qui peuvent servir.
|
||||
# NETs est l'union des deux
|
||||
NETs_primaires = {
|
||||
'serveurs' : ['138.231.136.0/24'],
|
||||
'adherents' : ['138.231.137.0/24', '138.231.138.0/23', '138.231.140.0/22'],
|
||||
'wifi-adh' : ['138.231.144.0/22',
|
||||
'serveurs' : [
|
||||
'138.231.136.0/24',
|
||||
],
|
||||
'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.64/26',
|
||||
'138.231.148.128/25',
|
||||
|
@ -230,28 +344,55 @@ NETs_primaires = {
|
|||
'bornes' : [
|
||||
'138.231.148.0/27',
|
||||
],
|
||||
'adm' : ['10.231.136.0/24'],
|
||||
'personnel-ens' : ['10.2.9.0/24'],
|
||||
'gratuit' : ['10.42.0.0/16'],
|
||||
'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'],
|
||||
}
|
||||
'adm' : [
|
||||
'10.231.136.0/24'
|
||||
],
|
||||
'personnel-ens' : [
|
||||
'10.2.9.0/24'
|
||||
],
|
||||
'gratuit' : [
|
||||
'10.42.0.0/16'
|
||||
],
|
||||
'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 = {
|
||||
'all' : ['138.231.136.0/21', '138.231.144.0/21'],
|
||||
'wifi': ['138.231.144.0/21'],
|
||||
'fil' : ['138.231.136.0/21'],
|
||||
}
|
||||
'all' : [
|
||||
'138.231.136.0/21',
|
||||
'138.231.144.0/21',
|
||||
],
|
||||
'wifi': [
|
||||
'138.231.144.0/21',
|
||||
],
|
||||
'fil' : [
|
||||
'138.231.136.0/21',
|
||||
],
|
||||
}
|
||||
|
||||
NETs = {}
|
||||
NETs.update(NETs_primaires)
|
||||
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
|
||||
# Merci d'essayer de les faire correspondre avec les réseaux
|
||||
|
@ -288,13 +429,13 @@ rid_primaires = {
|
|||
'personnel-ens' : [(55296, 55551),],
|
||||
# Un unique rid pour les machines multicast
|
||||
'multicast' : [(65535, 65535),],
|
||||
}
|
||||
}
|
||||
|
||||
rid_secondaires = {
|
||||
# Rid pour les machines filaire ipv4
|
||||
'fil' : [(0, 2047),],
|
||||
'wifi' : [(2048, 4095), (34816, 35071),],
|
||||
}
|
||||
}
|
||||
|
||||
rid = {}
|
||||
rid.update(rid_primaires)
|
||||
|
@ -320,24 +461,59 @@ ipv6_machines_speciales = {
|
|||
}
|
||||
|
||||
# Les préfixes ipv6 publics
|
||||
prefix = { 'subnet' : [ '2a01:240:fe3d::/48' ],
|
||||
'serveurs' : [ '2a01:240:fe3d:4::/64' ],
|
||||
'adherents' : [ '2a01:240:fe3d:4::/64' ],
|
||||
'fil' : [ '2a01:240:fe3d:4::/64' ],
|
||||
'adm' : [ '2a01:240:fe3d:c804::/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' ],
|
||||
}
|
||||
prefix = {
|
||||
'subnet' : [
|
||||
'2a01:240:fe3d::/48',
|
||||
],
|
||||
'serveurs' : [
|
||||
'2a01:240:fe3d:4::/64',
|
||||
],
|
||||
'adherents' : [
|
||||
'2a01:240:fe3d:4::/64',
|
||||
],
|
||||
'fil' : [
|
||||
'2a01:240:fe3d:4::/64',
|
||||
],
|
||||
'adm' : [
|
||||
'2a01:240:fe3d:c804::/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)
|
||||
int_prefix = {
|
||||
|
@ -346,10 +522,12 @@ int_prefix = {
|
|||
}
|
||||
|
||||
# Domaines dans lesquels les machines sont placées suivant leur type
|
||||
domains = { 'machineFixe': 'crans.org',
|
||||
domains = {
|
||||
'machineFixe': 'crans.org',
|
||||
'machineCrans': 'crans.org',
|
||||
'machineWifi': 'wifi.crans.org',
|
||||
'borneWifi': 'wifi.crans.org' }
|
||||
'borneWifi': 'wifi.crans.org',
|
||||
}
|
||||
|
||||
# VLans
|
||||
vlans = {
|
||||
|
@ -383,33 +561,45 @@ vlans = {
|
|||
'iscsi': 42,
|
||||
# freebox (pour faire descendre la connexion au 0B)
|
||||
'freebox': 8,
|
||||
}
|
||||
}
|
||||
|
||||
filter_policy = { 'komaz' : { 'policy_input' : 'ACCEPT',
|
||||
filter_policy = {
|
||||
'komaz' : {
|
||||
'policy_input' : 'ACCEPT',
|
||||
'policy_forward' : 'ACCEPT',
|
||||
'policy_output' : 'ACCEPT'
|
||||
'policy_output' : 'ACCEPT',
|
||||
},
|
||||
'zamok' : { 'policy_input' : 'ACCEPT',
|
||||
'zamok' : {
|
||||
'policy_input' : 'ACCEPT',
|
||||
'policy_forward' : 'DROP',
|
||||
'policy_output' : 'ACCEPT'
|
||||
'policy_output' : 'ACCEPT',
|
||||
},
|
||||
'default' : { 'policy_input' : 'ACCEPT',
|
||||
'default' : {
|
||||
'policy_input' : 'ACCEPT',
|
||||
'policy_forward' : 'ACCEPT',
|
||||
'policy_output' : 'ACCEPT'
|
||||
}
|
||||
'policy_output' : 'ACCEPT',
|
||||
}
|
||||
}
|
||||
|
||||
# Cf RFC 4890
|
||||
authorized_icmpv6 = ['echo-request', 'echo-reply', 'destination-unreachable',
|
||||
'packet-too-big', 'ttl-zero-during-transit', 'parameter-problem']
|
||||
authorized_icmpv6 = [
|
||||
'echo-request',
|
||||
'echo-reply',
|
||||
'destination-unreachable',
|
||||
'packet-too-big',
|
||||
'ttl-zero-during-transit',
|
||||
'parameter-problem',
|
||||
]
|
||||
|
||||
output_file = { 4 : '/tmp/ipt_rules',
|
||||
6 : '/tmp/ip6t_rules'
|
||||
}
|
||||
output_file = {
|
||||
4 : '/tmp/ipt_rules',
|
||||
6 : '/tmp/ip6t_rules',
|
||||
}
|
||||
|
||||
file_pickle = { 4 : '/tmp/ipt_pickle',
|
||||
6 : '/tmp/ip6t_pickle'
|
||||
}
|
||||
file_pickle = {
|
||||
4 : '/tmp/ipt_pickle',
|
||||
6 : '/tmp/ip6t_pickle',
|
||||
}
|
||||
|
||||
##################################################################################
|
||||
#: Items de la blackliste
|
||||
|
@ -447,10 +637,24 @@ blacklist_bridage_upload = ['autodisc_upload', 'upload']
|
|||
|
||||
##################################################################################
|
||||
|
||||
adm_users = [ 'root', 'identd', 'daemon', 'postfix', 'freerad', 'amavis',
|
||||
'nut', 'respbats', 'list', 'sqlgrey', 'ntpd', 'lp' ]
|
||||
adm_users = [
|
||||
'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_radin = 1000000
|
||||
|
@ -460,13 +664,83 @@ debit_max_gratuit = 1000000
|
|||
## Vlan accueil et isolement ##
|
||||
###############################
|
||||
accueil_route = {
|
||||
'138.231.136.1':{'tcp':['80','443', '22'],'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']},
|
||||
'138.231.136.1' : {
|
||||
'tcp' : [
|
||||
'80',
|
||||
'443',
|
||||
'22'
|
||||
],
|
||||
'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']
|
||||
|
|
|
@ -21,10 +21,10 @@
|
|||
import sys
|
||||
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 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 ridtools import Rid, find_rid_plage
|
||||
import subprocess
|
||||
|
@ -768,9 +768,13 @@ def blacklist(ipt):
|
|||
if [x for x in sanctions if x in blacklist_sanctions_ipv6]:
|
||||
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:
|
||||
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']:
|
||||
sanctions = target.blacklist_actif()
|
||||
|
|
|
@ -134,7 +134,6 @@ droits_vieux = [u'Nounou', u'Bureau']
|
|||
### Variables internes diverses
|
||||
#isadm = user_tests.isadm()
|
||||
#isdeconnecteur = user_tests.isdeconnecteur()
|
||||
ann_scol = config.ann_scol
|
||||
#script_utilisateur = user_tests.getuser()
|
||||
script_utilisateur = cur_user
|
||||
|
||||
|
@ -159,12 +158,15 @@ def tz(thetz):
|
|||
else:
|
||||
return "%s%04d" % ("+"*(thetz < 0) + "-"*(thetz > 0), abstz)
|
||||
|
||||
def generalizedTimeFormat(stamp):
|
||||
def generalizedTimeFormat(stamp=None):
|
||||
"""Converts a timestamp (local) in a generalized time format
|
||||
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))
|
||||
|
||||
def fromGeneralizedTimeFormat(gtf):
|
||||
|
@ -833,9 +835,13 @@ class CransLdap:
|
|||
# définifif (cf config.py).
|
||||
if config.periode_transitoire:
|
||||
# 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:
|
||||
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 ?
|
||||
# (si période transitoire on ne bloque dans aucun cas)
|
||||
elif champ[1:] == 'blacklist':
|
||||
|
@ -1062,9 +1068,6 @@ class BaseClasseCrans(CransLdap):
|
|||
def connexion(self, update=False, f=None):
|
||||
return 0.0
|
||||
|
||||
def sursis_carte(self):
|
||||
return False
|
||||
|
||||
def chbre(self, new=None):
|
||||
return "????"
|
||||
|
||||
|
|
|
@ -36,7 +36,6 @@ sys.path.append('/usr/scripts/gestion')
|
|||
from affich_tools import tableau, cprint
|
||||
from email_tools import send_email, parse_mail_template
|
||||
from ldap_crans import crans_ldap
|
||||
from config import ann_scol
|
||||
db = crans_ldap()
|
||||
|
||||
import syslog
|
||||
|
@ -212,7 +211,7 @@ comptes_inactifs.py
|
|||
mail = nb_mails_non_lus(login)
|
||||
mail = mail == None and u'?' or mail > 0 and u'X' or u' '
|
||||
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)
|
||||
else:
|
||||
anciens.append(ligne)
|
||||
|
|
|
@ -35,8 +35,6 @@ import gestion.config as config
|
|||
import gestion.affichage as affichage
|
||||
|
||||
from cranslib.decorators import static_var
|
||||
from config import ann_scol
|
||||
|
||||
|
||||
### Appels à LDAP et tri initial sur l'année en cours.
|
||||
DB = shortcuts.lc_ldap_readonly()
|
||||
|
@ -91,7 +89,7 @@ def actions_cableurs():
|
|||
champ = parse_historique(histo_line)[0]
|
||||
champ_action = parse_historique(histo_line)[1]
|
||||
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)
|
||||
|
||||
for facture in factures():
|
||||
|
@ -100,7 +98,7 @@ def actions_cableurs():
|
|||
champ = parse_historique(histo_line)[0]
|
||||
champ_action = parse_historique(histo_line)[1]
|
||||
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)
|
||||
return HISTORIQUE
|
||||
|
||||
|
@ -113,7 +111,7 @@ def score_cableurs():
|
|||
nom = cableur.get(u'nom', None)[0].value
|
||||
prenom = cableur.get(u'prenom', None)[0].value
|
||||
uid = cableur.get(u'uid', None)[0].value
|
||||
for index in range (0, len(HISTORIQUE)):
|
||||
for index in range(0, len(HISTORIQUE)):
|
||||
histo_uid = HISTORIQUE[index][2]
|
||||
histo_action = HISTORIQUE[index][3]
|
||||
if histo_uid == uid and histo_action == u' inscription':
|
||||
|
@ -129,17 +127,17 @@ def score_cableurs():
|
|||
### Tri par score
|
||||
def sort_by_score():
|
||||
"""Tri la liste des câbleurs par ordre de score décroissant de score"""
|
||||
return score_cableurs().sort(key=lambda x:int(x[1]), reverse=True)
|
||||
return score_cableurs().sort(key=lambda x: int(x[1]), reverse=True)
|
||||
|
||||
def sort_by_inverse_score():
|
||||
"""Tri la liste des câbleurs par ordre de score croissant de score"""
|
||||
return score_cableurs().sort(key=lambda x:int(x[1]))
|
||||
return score_cableurs().sort(key=lambda x: int(x[1]))
|
||||
|
||||
def cableurs_utiles():
|
||||
"""Renvoi le nombre de cableurs ayant un score non nul"""
|
||||
useless_cableurs = 0
|
||||
for k in range(0, len(cableurs())):
|
||||
if (SCORES[k][1] == 0):
|
||||
if SCORES[k][1] == 0:
|
||||
useless_cableurs = useless_cableurs + 1
|
||||
return len(cableurs()) - useless_cableurs
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue