Éclatement de config.py. Quand on git add les fichiers, c'est mieux.
This commit is contained in:
parent
076f466fdb
commit
e042224b6b
17 changed files with 1013 additions and 0 deletions
0
gestion/__init__.py
Normal file
0
gestion/__init__.py
Normal file
5
gestion/config/__init__.py
Normal file
5
gestion/config/__init__.py
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from config import *
|
||||||
|
|
300
gestion/config/config.py
Normal file
300
gestion/config/config.py
Normal file
|
@ -0,0 +1,300 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
""" Définition de variables de configuration et de comportement des scripts Cr@ns """
|
||||||
|
|
||||||
|
import time
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
# Fichier généré à partir de bcfg2
|
||||||
|
from config_srv import adm_only, role
|
||||||
|
|
||||||
|
##### 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 or (dat[1] == 10 and dat[2] < 4):
|
||||||
|
# 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
|
||||||
|
|
||||||
|
|
||||||
|
## Bloquage si carte d'étudiants manquante pour l'année en cours
|
||||||
|
# /!\ Par sécurité, ces valeurs sont considérées comme False si
|
||||||
|
# periode_transitoire est True
|
||||||
|
# Soft (au niveau du Squid)
|
||||||
|
bl_carte_et_actif = True
|
||||||
|
# Hard (l'adhérent est considéré comme paiement pas ok)
|
||||||
|
bl_carte_et_definitif = True
|
||||||
|
|
||||||
|
#Sursis pour les inscription après le 1/11 pour fournir la carte étudiant
|
||||||
|
sursis_carte=8*24*3600
|
||||||
|
|
||||||
|
# Gel des cableurs pas a jour de cotisation
|
||||||
|
# Les droits ne sont pas retires mais il n'y a plus de sudo
|
||||||
|
bl_vieux_cableurs = False
|
||||||
|
|
||||||
|
##Création de comptes
|
||||||
|
# Gid des comptes créés
|
||||||
|
gid=100
|
||||||
|
club_gid=120
|
||||||
|
# Shell
|
||||||
|
login_shell='/bin/zsh'
|
||||||
|
club_login_shell='/usr/bin/rssh'
|
||||||
|
# Longueur maximale d'un login
|
||||||
|
maxlen_login=15
|
||||||
|
|
||||||
|
# Quels droits donnent l'appartenance à quel groupe Unix ?
|
||||||
|
droits_groupes = {'adm' : [u'Nounou'],
|
||||||
|
'respbats' : [u'Imprimeur', u'Cableur', u'Nounou'],
|
||||||
|
'moderateurs' : [u'Moderateur'],
|
||||||
|
'disconnect' : [u'Bureau'],
|
||||||
|
'imprimeurs' : [u'Imprimeur', u'Nounou', u'Tresorier'],
|
||||||
|
'bureau' : [u'Bureau'],
|
||||||
|
'webadm' : [u'Webmaster'],
|
||||||
|
'webradio' : [u'Webradio'],
|
||||||
|
}
|
||||||
|
|
||||||
|
####### 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'],
|
||||||
|
'+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'],
|
||||||
|
}
|
||||||
|
|
||||||
|
#: Répertoire de stockage des objets détruits
|
||||||
|
cimetiere = '/home/cimetiere'
|
||||||
|
|
||||||
|
#: Adresses mac utiles
|
||||||
|
mac_komaz = '00:19:BB:31:3B:80'
|
||||||
|
mac_wifi = '00:0f:1f:66:e0:e8'
|
||||||
|
mac_titanic = 'aa:73:65:63:6f:76'
|
||||||
|
|
||||||
|
#: Serveur principal de bcfg2
|
||||||
|
bcfg2_main = "bcfg2.adm.crans.org"
|
||||||
|
|
||||||
|
#: Fichier de mapping lun/nom de volume iscsi
|
||||||
|
ISCSI_MAP_FILE = "/usr/scripts/var/iscsi_names.py"
|
||||||
|
ISCSI_MAP_FILE_TEMPLATE = "/usr/scripts/var/iscsi_names_%s.py"
|
||||||
|
|
||||||
|
#: Algorithmes de hashage pour le champ SSHFP
|
||||||
|
# format : { algorithm : (IANA_id, ssh_algo) }
|
||||||
|
# où algorithm est tel qu'il apparait dans les fichiers /etc/ssh/ssh_host_%s_key.pub % algorithm
|
||||||
|
# IANA_id correspond à l'entier attribué par l'IANA pour l'algorithm dans les champs DNS SSHFP
|
||||||
|
# ssh_algo correspond a la première chaine de caractères donnant le nom de l'algorithme de chiffrement lorsque la clef ssh est dans le format openssh (algo key comment)
|
||||||
|
sshfp_algo = {
|
||||||
|
"rsa" : (1, "ssh-rsa"),
|
||||||
|
"dsa" : (2, "ssh-dss"),
|
||||||
|
}
|
||||||
|
|
||||||
|
sshkey_max_age=2*(365.25*24*3600)
|
||||||
|
sshkey_size = {
|
||||||
|
'rsa':4096,
|
||||||
|
'dsa':1024,
|
||||||
|
}
|
||||||
|
|
||||||
|
#: Nombre de jours après le passage en chambre ???? où on supprime les machines
|
||||||
|
demenagement_delai = 8
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#############################
|
||||||
|
## Paramètres des machines ##
|
||||||
|
#############################
|
||||||
|
|
||||||
|
## >>>>>>>>>>>>>>> La modification des paramètres suivants doit se
|
||||||
|
## >> ATTENTION >> faire avec précaution, il faut mettre la base à
|
||||||
|
## >>>>>>>>>>>>>>> jour en parralèle de ces modifs.
|
||||||
|
|
||||||
|
# Sous réseaux alloués à chaque type de machine ou bâtiment
|
||||||
|
# Pour la zone wifi, il faut penser à modifier le /etc/network/interfaces
|
||||||
|
# de sable, zamok et komaz pour ajouter les zones en plus (et de
|
||||||
|
# faire en sorte qu'ils prennent effet immédiatement ; c'est important pour
|
||||||
|
# komaz car c'est la route par défaut mais aussi pour zamok et sable
|
||||||
|
# à cause de leur firewall et de leur patte wifi.
|
||||||
|
_filaire_adh = [ '138.231.137.0/24', '138.231.138.0/24', '138.231.139.0/24','138.231.140.0/22' ]
|
||||||
|
|
||||||
|
NETs = { 'serveurs' : [ '138.231.136.0/24' ],
|
||||||
|
'adherents' : _filaire_adh,
|
||||||
|
'bornes' : [ '138.231.148.0/24' ],
|
||||||
|
'adm' : [ '10.231.136.0/24' ],
|
||||||
|
'wifi-adh' : [ '138.231.144.0/24', '138.231.145.0/24', '138.231.146.0/24',
|
||||||
|
'138.231.147.0/24', '138.231.149.0/24', '138.231.150.0/24', '138.231.151.0/24' ],
|
||||||
|
'fil' : [ '138.231.136.0/21' ],
|
||||||
|
'gratuit': [ '10.42.0.0/16' ],
|
||||||
|
'wifi': [ '138.231.144.0/21' ],
|
||||||
|
'accueil': ['10.51.0.0/16' ],
|
||||||
|
'isolement': ['10.52.0.0/16' ],
|
||||||
|
'personnel-ens': ['10.2.9.0/24' ],
|
||||||
|
'ens' : ['138.231.135.0/24'],
|
||||||
|
'all' : [ '138.231.136.0/21', '138.231.144.0/21' ],
|
||||||
|
'multicast' : ['239.0.0.0/8'],
|
||||||
|
}
|
||||||
|
|
||||||
|
NETs_regexp = { 'all' : '^138\.231\.1(3[6789]|4[0123456789]|5[01])\.\d+$' }
|
||||||
|
|
||||||
|
# Classes de rid
|
||||||
|
# Merci d'essayer de les faire correspondre avec les réseaux
|
||||||
|
# ci-dessus...
|
||||||
|
rid = {
|
||||||
|
# Rid pour les machines fixes
|
||||||
|
'fil' : (256, 2047),
|
||||||
|
# Rid pour les machines wifi
|
||||||
|
'wifi' : (2048, 4095),
|
||||||
|
# Rid pour les machines du vlan adm
|
||||||
|
'adm' : (51200, 53247),
|
||||||
|
# Rid pour les machines des personnels ens
|
||||||
|
'personnel-ens' : (55296, 55551),
|
||||||
|
# Mid pour les machines du vlan gratuit
|
||||||
|
'gratuit' : (53248, 55295),
|
||||||
|
# Rid pour machines spéciales
|
||||||
|
'special' : (4096, 6143),
|
||||||
|
# Rid pour les filaires v6-only
|
||||||
|
'fil-v6' : (16384, 24575),
|
||||||
|
# Rid pour les wifi v6-only
|
||||||
|
'wifi-v6' : (24576, 32767),
|
||||||
|
# Rid pour les serveurs
|
||||||
|
'serveurs' : (0, 255),
|
||||||
|
}
|
||||||
|
|
||||||
|
# rid pour les machines spéciales (classe 'special' ci-dessus)
|
||||||
|
rid_machines_speciales = {
|
||||||
|
# freebox.crans.org
|
||||||
|
4096: '82.225.39.54',
|
||||||
|
# ovh.crans.org
|
||||||
|
4097: '91.121.84.138',
|
||||||
|
}
|
||||||
|
|
||||||
|
ipv6_machines_speciales = {
|
||||||
|
# freebox
|
||||||
|
4096: 'fe80::210:5aff:feaf:a979',
|
||||||
|
# ovh
|
||||||
|
4097: 'fe80::219:d1ff:fea2:b611',
|
||||||
|
}
|
||||||
|
|
||||||
|
# Les préfixes ipv6
|
||||||
|
prefix = { 'subnet' : [ '2a01:240:fe3d::/48' ],
|
||||||
|
'serveurs' : [ '2a01:240:fe3d:4::/64'],
|
||||||
|
'fil' : [ '2a01:240:fe3d:4::/64' ],
|
||||||
|
'adm' : [ '2a01:240:fe3d:c804::/64' ],
|
||||||
|
'wifi' : [ '2a01:240:fe3d:c04::/64' ],
|
||||||
|
'fil-v6' : [ '2a01:240:fe3d:4::/64' ],
|
||||||
|
'wifi-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' ],
|
||||||
|
}
|
||||||
|
|
||||||
|
# Domaines dans lesquels les machines sont placées suivant leur type
|
||||||
|
domains = { 'machineFixe': 'crans.org',
|
||||||
|
'machineCrans': 'crans.org',
|
||||||
|
'machineWifi': 'wifi.crans.org',
|
||||||
|
'borneWifi': 'wifi.crans.org' }
|
||||||
|
|
||||||
|
# VLans
|
||||||
|
vlans = {
|
||||||
|
# VLan d'administration
|
||||||
|
'adm' : 2,
|
||||||
|
# VLan pour le wifi
|
||||||
|
'wifi' : 3,
|
||||||
|
# VLan pour le wifi de l'ens
|
||||||
|
'hotspot' : 4,
|
||||||
|
# VLan des gens qui paient
|
||||||
|
'adherent' : 1,
|
||||||
|
# VLan des inconnus
|
||||||
|
'accueil' : 7,
|
||||||
|
# VLan de la connexion gratuite
|
||||||
|
'gratuit' : 6,
|
||||||
|
'radin' : 6,
|
||||||
|
# Vlan isolement
|
||||||
|
'isolement' : 9,
|
||||||
|
# Vlan de tests de chiffrement DSI
|
||||||
|
'chiffrement': 11,
|
||||||
|
# VLan des appartements de l'ENS
|
||||||
|
'appts': 21,
|
||||||
|
# Vlan evenementiel (install-party, etc)
|
||||||
|
'event': 10,
|
||||||
|
# Vlan zone routeur ens (zrt)
|
||||||
|
'zrt': 1132
|
||||||
|
}
|
||||||
|
|
||||||
|
filter_policy = { 'komaz' : { 'policy_input' : 'ACCEPT',
|
||||||
|
'policy_forward' : 'ACCEPT',
|
||||||
|
'policy_output' : 'ACCEPT'
|
||||||
|
},
|
||||||
|
'zamok' : { 'policy_input' : 'ACCEPT',
|
||||||
|
'policy_forward' : 'DROP',
|
||||||
|
'policy_output' : 'ACCEPT'
|
||||||
|
},
|
||||||
|
'default' : { 'policy_input' : 'ACCEPT',
|
||||||
|
'policy_forward' : 'ACCEPT',
|
||||||
|
'policy_output' : 'ACCEPT'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cf RFC 4890
|
||||||
|
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'
|
||||||
|
}
|
||||||
|
|
||||||
|
file_pickle = { 4 : '/tmp/ipt_pickle',
|
||||||
|
6 : '/tmp/ip6t_pickle'
|
||||||
|
}
|
||||||
|
|
||||||
|
blacklist_sanctions = ['upload', 'warez', 'p2p', 'autodisc_p2p','autodisc_virus','virus','autodisc_upload', 'bloq']
|
||||||
|
blacklist_sanctions_soft = ['autodisc_virus','ipv6_ra','mail_invalide','virus',
|
||||||
|
'upload', 'warez', 'p2p', 'autodisc_p2p', 'autodisc_upload', 'bloq','carte_etudiant','chambre_invalide']
|
||||||
|
|
||||||
|
adm_users = [ 'root', 'identd', 'daemon', 'postfix', 'freerad', 'amavis',
|
||||||
|
'nut', 'respbats', 'list', 'sqlgrey', 'ntpd', 'lp' ]
|
||||||
|
|
||||||
|
open_ports = { 'tcp' : '22' }
|
||||||
|
|
||||||
|
# Debit max sur le vlan de la connexion gratuite
|
||||||
|
debit_max_radin = 1000000
|
||||||
|
debit_max_gratuit = 1000000
|
||||||
|
|
||||||
|
###############################
|
||||||
|
## Vlan accueil et isolement ##
|
||||||
|
###############################
|
||||||
|
accueil_route = {
|
||||||
|
'138.231.136.1':{'tcp':['80','443'],'hosts':['intranet.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']},
|
||||||
|
'138.231.136.18':{'tcp':['80','443'],'hosts':['cas.crans.org', 'login.crans.org', 'auth.crans.org']},
|
||||||
|
}
|
9
gestion/config/config_srv.py
Normal file
9
gestion/config/config_srv.py
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# -*- python -*-
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Généré par gestion/extractionbcfg2.py sur bcfg2, à partir de Metadata/groups.xml
|
||||||
|
# Fichier obsolète (backward comp ftw)
|
||||||
|
|
||||||
|
adm_only = []
|
||||||
|
|
||||||
|
role = {'zamok': ['adherents-server'], 'dyson': ['sniffer'], 'titanic': ['failover-proxy'], 'komaz': ['wifi-router', 'appt-proxy', 'main-router'], 'dhcp': ['appt-proxy'], 'ovh': ['externe'], 'routeur': ['appt-proxy']}
|
43
gestion/config/dns.py
Normal file
43
gestion/config/dns.py
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
""" Variables de configuration pour la gestion du DNS """
|
||||||
|
|
||||||
|
#: ariane et ariane2 pour la zone parente
|
||||||
|
parents = [
|
||||||
|
'138.231.176.4',
|
||||||
|
'138.231.176.54',
|
||||||
|
]
|
||||||
|
#: DNS master
|
||||||
|
master = '10.231.136.9'
|
||||||
|
#: DNS slaves (ovh et titanic /aka/ freebox)
|
||||||
|
slaves = [
|
||||||
|
'10.231.136.8', # ovh
|
||||||
|
'10.231.136.14', # titanic aka freebox
|
||||||
|
]
|
||||||
|
#: DNS master de la zone tv
|
||||||
|
master_tv = master
|
||||||
|
#: DNS slaves de la zone tv
|
||||||
|
slaves_tv = slaves
|
||||||
|
|
||||||
|
#: DNS en connexion de secours
|
||||||
|
secours_relay='10.231.136.14';
|
||||||
|
|
||||||
|
# résolution directe
|
||||||
|
zones_direct = [ 'crans.org', 'crans.ens-cachan.fr', 'wifi.crans.org', 'ferme.crans.org' , 'clubs.ens-cachan.fr', 'adm.crans.org','crans.eu','wifi.crans.eu', 'tv.crans.org' ]
|
||||||
|
# Zones signée par opendnssec sur le serveur master
|
||||||
|
zones_dnssec = [
|
||||||
|
'crans.org', 'v6.crans.org', 'wifi.crans.org', 'wifi.v6.crans.org', 'adm.crans.org', 'adm.v6.crans.org', 'ferme.crans.org', 'ferme.v6.crans.org',
|
||||||
|
'tv.crans.org', 'crans.eu','wifi.crans.eu','v6.crans.eu','wifi.v6.crans.eu'
|
||||||
|
]
|
||||||
|
# Zones alias pour les enregistrements A AAAA CNAME TXT et SSHFP
|
||||||
|
zone_alias = {
|
||||||
|
'crans.org' : ['crans.eu'],
|
||||||
|
'wifi.crans.org' : ['wifi.crans.eu'],
|
||||||
|
}
|
||||||
|
|
||||||
|
# Résolution inverse
|
||||||
|
zones_reverse = NETs["all"] + NETs["adm"] + NETs["personnel-ens"] + NETs['multicast']
|
||||||
|
zones_reverse_v6 = prefix['fil'] + prefix['wifi'] + prefix ['adm'] + prefix['personnel-ens'] # à modifier aussi dans bind.py
|
||||||
|
|
||||||
|
recursiv = ['138.231.136.98', '138.231.136.247'] # charybde et gordon
|
67
gestion/config/extractionbcfg2.py
Executable file
67
gestion/config/extractionbcfg2.py
Executable file
|
@ -0,0 +1,67 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# © Olivier Huber, 2010
|
||||||
|
# Licence MIT
|
||||||
|
""" Ce script va chercher la correspondance entre des attributs et des serveurs"""
|
||||||
|
|
||||||
|
from lxml import etree
|
||||||
|
|
||||||
|
template = """# -*- python -*-
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Généré par gestion/extractionbcfg2.py sur bcfg2, à partir de Metadata/groups.xml
|
||||||
|
|
||||||
|
adm_only = %(adm_list)s
|
||||||
|
|
||||||
|
role = %(role_dict)s
|
||||||
|
"""
|
||||||
|
|
||||||
|
srvDict = { 'external' : [],
|
||||||
|
'connection-main' : [],
|
||||||
|
'failover-proxy-server' : [],
|
||||||
|
'vlan-ens' : [],
|
||||||
|
'users' : [],
|
||||||
|
'sniffer' : [],
|
||||||
|
'router-wifi' : []
|
||||||
|
}
|
||||||
|
|
||||||
|
tr = { 'external' : 'externe',
|
||||||
|
'connection-main' : 'main-router',
|
||||||
|
'vlan-ens' : 'appt-proxy',
|
||||||
|
'failover-proxy-server' : 'failover-proxy',
|
||||||
|
'router-wifi' : 'wifi-router',
|
||||||
|
'users' : 'adherents-server',
|
||||||
|
'sniffer' : 'sniffer'
|
||||||
|
}
|
||||||
|
|
||||||
|
fin = open('/var/lib/bcfg2/Metadata/groups.xml')
|
||||||
|
|
||||||
|
# La gestion des exceptions est laissée en exercice pour ceux qui vont
|
||||||
|
# casser Metadata/groups.xml
|
||||||
|
parsedGroups = etree.parse(fin)
|
||||||
|
|
||||||
|
for key in srvDict.keys():
|
||||||
|
srvDict[key] = parsedGroups.xpath('//Group[@name="%s"]/../@name' % key)
|
||||||
|
if srvDict[key] == []:
|
||||||
|
print "Erreur, il n'y a pas de serveur associé à l'attribut %s" % key
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
# On cherche les serveurs qui sont seulement sur le vlan adm
|
||||||
|
admOnly = parsedGroups.xpath('//Group[@name="adm-only"]/../@name')
|
||||||
|
|
||||||
|
fin.close()
|
||||||
|
|
||||||
|
out = {}
|
||||||
|
for key, values in srvDict.items():
|
||||||
|
for value in values:
|
||||||
|
if value in out.keys():
|
||||||
|
out[value].append(tr[key])
|
||||||
|
else:
|
||||||
|
out[value] = [tr[key]]
|
||||||
|
|
||||||
|
fout = open('/usr/scripts/gestion/config_srv.py', 'w')
|
||||||
|
|
||||||
|
fout.write(template % {'adm_list': admOnly.__str__(), 'role_dict' : out.__str__()})
|
||||||
|
|
||||||
|
fout.close()
|
30
gestion/config/firewall.py
Normal file
30
gestion/config/firewall.py
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
""" Variables de configuration pour le firewall """
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
#: Pour marquer les paquets
|
||||||
|
mark = { 'https-radin': '0x3',
|
||||||
|
'https-gratuit' : '0x3',
|
||||||
|
'proxy' : '0x2',
|
||||||
|
'secours' : '0x4',
|
||||||
|
'bittorrent' : '0x1' }
|
||||||
|
|
||||||
|
#: Valeur du masque utilisé pour créer un arbre dans les filtres
|
||||||
|
mask = [24]
|
||||||
|
|
||||||
|
# Empiriquement, 95 correspond à un débit de 100Mbit/s
|
||||||
|
# sur des outils tels que munin
|
||||||
|
now=datetime.datetime.now()
|
||||||
|
if now.hour >= 6 and now.hour < 19 and now.weekday() < 5:
|
||||||
|
#: Débit maximal autorisé
|
||||||
|
debit_max = 95 * 1024 / 8 # kbytes per second en connexion de jour
|
||||||
|
#: Est-ce qu'on est en connexion de jour ou de nuit/week-end ?
|
||||||
|
debit_jour = True
|
||||||
|
else:
|
||||||
|
#: Débit maximal autorisé
|
||||||
|
debit_max = 500 * 1024 / 8 # connexion de nuit et du week-end
|
||||||
|
#: Est-ce qu'on est en connexion de jour ou de nuit/week-end ?
|
||||||
|
debit_jour = False
|
43
gestion/config/impression.py
Normal file
43
gestion/config/impression.py
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
""" Définition des variables d'impression utilisées par les scripts, l'intranet… """
|
||||||
|
|
||||||
|
#: L'imprimante utilisée
|
||||||
|
imprimante = "canon"
|
||||||
|
|
||||||
|
#: Découvert autorisé (en euro)
|
||||||
|
decouvert = 0.
|
||||||
|
|
||||||
|
## Variables de prix (tout est exprimé en centimes)
|
||||||
|
|
||||||
|
#: Coût de l'imprimante : 2024 euros pour 30 mois - 19136 euros de partenariat.
|
||||||
|
#:
|
||||||
|
#: 5 000 pages par mois.
|
||||||
|
#: Donc ammortissement : 1.3493 centimes par pages.
|
||||||
|
amm = 1.3493
|
||||||
|
|
||||||
|
#: Coût d'une feuille A4 : 25.06 euros les 2500 feuilles
|
||||||
|
c_a4 = 1.0024 + amm
|
||||||
|
|
||||||
|
#: Coût d'une feuille A3 : 53.76 euros les 2500 feuilles
|
||||||
|
c_a3 = 2.1504 + amm
|
||||||
|
|
||||||
|
#: Coût d'un transparent : 15.85 euros les 100 transparents
|
||||||
|
c_trans = 15.85 + amm
|
||||||
|
|
||||||
|
#: Coût d'impression d'une face en couleur
|
||||||
|
c_face_couleur = 9.4484
|
||||||
|
#: Coût d'impression d'une face en noir & blanc
|
||||||
|
c_face_nb = 0.9568
|
||||||
|
|
||||||
|
|
||||||
|
#: Prix d'une agrafe : 200 euros les 15 000
|
||||||
|
c_agrafe = 1.3333
|
||||||
|
|
||||||
|
### Fin des variables de prix
|
||||||
|
|
||||||
|
#: L'adresse mail de l'imprimante
|
||||||
|
From_imprimante = 'impression@crans.org'
|
||||||
|
|
||||||
|
#: Informations supplémentaires sur l'état de l'imprimante, affichée sur l'intranet
|
||||||
|
state_msg = [u"L'impression recto/verso (ou livret) A3 est déconseillée"]
|
52
gestion/config/mac_prise.py
Normal file
52
gestion/config/mac_prise.py
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
""" Variables de configuration pour mac_prises. """
|
||||||
|
|
||||||
|
#: Pour spammer, mettre à true.
|
||||||
|
hargneux = True
|
||||||
|
|
||||||
|
#: Si pour une chambre donnée, il y a plus de 300 entrées filaires
|
||||||
|
#: n'appartenant pas à l'adhérent propriétaire de la mac, on prévient.
|
||||||
|
max_inconnues_par_jour = 300
|
||||||
|
|
||||||
|
#: Titre utilisé dans le corps du message
|
||||||
|
titre_mac_inconnue = u"Repérage de macs potentiellement non désirées dans les chambres suivantes."
|
||||||
|
|
||||||
|
#: Pour la recherche dans postgres
|
||||||
|
delay = { 'instant': '2 min',
|
||||||
|
'heuristique': '30 min',
|
||||||
|
'journalier': '1 day',
|
||||||
|
}
|
||||||
|
|
||||||
|
#: Contient trois dictionnaire. Le paramètre mac signifie "combien de chambres doivent voir la même mac pour que ça soit suspect"
|
||||||
|
#: Le paramètre chambre signifie "combien de macs doivent traverser une même chambre pour que ça soit suspect"
|
||||||
|
suspect = { 'instant':{'mac': 2, 'chambre': 2},
|
||||||
|
'heuristique':{'mac': 2, 'chambre': 2},
|
||||||
|
'journalier':{'mac': 2, 'chambre': 2},
|
||||||
|
}
|
||||||
|
|
||||||
|
#: Contient trois dictionnaire. Le paramètre mac signifie "combien de chambres doivent voir la même mac pour que ça soit très suspect"
|
||||||
|
#: Le paramètre chambre signifie "combien de macs doivent traverser une même chambre pour que ça soit très suspect"
|
||||||
|
tres_suspect = { 'instant':{'mac': 3, 'chambre': 3},
|
||||||
|
'heuristique':{'mac': 3, 'chambre': 3},
|
||||||
|
'journalier':{'mac': 3, 'chambre': 3},
|
||||||
|
}
|
||||||
|
|
||||||
|
#: Le point central des analyses.
|
||||||
|
rapport_suspect = { 'instant':{'mac': 0.51, 'chambre': 0.51},
|
||||||
|
'heuristique':{'mac': 0.4, 'chambre': 0.55},
|
||||||
|
'journalier':{'mac': 0.2, 'chambre': 0.58},
|
||||||
|
}
|
||||||
|
|
||||||
|
#: Titre des paragraphes suspects
|
||||||
|
titre_suspect = { 'instant':{'mac': u"Macs se baladant un peu trop entre les chambres (instantanné)", 'chambre': u"Chambres avec un peu trop de macs (instantanné)"},
|
||||||
|
'heuristique':{'mac': u"Macs se baladant un peu trop entre les chambres (délai moyen)", 'chambre': u"Chambres avec un peu trop de macs (délai moyen)"},
|
||||||
|
'journalier':{'mac': u"Macs s'étant peut-être un peu trop baladées aujourd'hui", 'chambre': u"Chambres avec un peu trop de macs sur un jour"},
|
||||||
|
}
|
||||||
|
|
||||||
|
#: Titre des paragraphes très suspects
|
||||||
|
titre_tres_suspect = { 'instant':{'mac': u"/!\ Spoof potentiel des macs suivantes dans les chambres ci-après (instantanné)", 'chambre': u"/!\ Les chambres ci-après contiennent étrangement trop de macs inconnues ! (instantanné)"},
|
||||||
|
'heuristique':{'mac': u"/!\ Spoof potentiel des macs suivantes dans les chambres ci-après (délai moyen)", 'chambre': u"/!\ Les chambres ci-après contiennent étrangement trop de macs inconnues ! (délai moyen)"},
|
||||||
|
'journalier':{'mac': u"/!\ Spoof probable des macs suivantes dans les chambres ci-après aujourd'hui !!", 'chambre': u"/!\ Les chambres suivantes contiennent trop de macs inconnues (sur un jour)"},
|
||||||
|
}
|
4
gestion/config/mails/__init__.py
Normal file
4
gestion/config/mails/__init__.py
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from mails import *
|
35
gestion/config/mails/demenagement.py
Normal file
35
gestion/config/mails/demenagement.py
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
""" Template de mail envoyé en cas de déménagement mais présence de machines. """
|
||||||
|
|
||||||
|
import email.Header
|
||||||
|
|
||||||
|
message_demenagement = u"""From: %%(from)s
|
||||||
|
To: %%(to)s
|
||||||
|
Subject: %s
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
Bonjour,
|
||||||
|
|
||||||
|
Un adhérent au Cr@ns a déclaré résider dans la chambre %%(chambre)s,
|
||||||
|
que tu occupais précédemment. Cela signifie que nous ne disposons
|
||||||
|
plus d'informations de résidence valides à ton sujet.
|
||||||
|
|
||||||
|
Si tu souhaites conserver ton accès au Cr@ns :
|
||||||
|
- et que tu as déménagé hors du campus : il te suffit de nous préciser
|
||||||
|
ta nouvelle adresse, ton déménagement sera pris en compte.
|
||||||
|
- et que tu as déménagé vers une chambre du campus : tu dois passer
|
||||||
|
à une permanence pour signer une autorisation de câblage pour ta nouvelle
|
||||||
|
chambre.
|
||||||
|
|
||||||
|
Si tu ne souhaites pas conserver ton accès au Cr@ns, un simple message de
|
||||||
|
ta part et nous supprimerons les machines que tu possèdes de notre base de données.
|
||||||
|
Cette suppression aura automatiquement lieu dans %%(jours)s jours en l'absence de
|
||||||
|
réponse.
|
||||||
|
|
||||||
|
S'il s'agit d'une erreur de notre part, préviens-nous au plus vite afin que nous
|
||||||
|
puissions corriger le problème.
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Les membres actifs du Crans""" % email.Header.make_header([("Déménagement non déclaré", "utf8")])
|
139
gestion/config/mails/mails.py
Normal file
139
gestion/config/mails/mails.py
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
""" Templates de mails. """
|
||||||
|
|
||||||
|
|
||||||
|
#: Mail de bienvenue
|
||||||
|
#:
|
||||||
|
#: (From est respbats@crans.org)
|
||||||
|
txt_mail_bienvenue = u"""From: Crans <%(From)s>
|
||||||
|
To: %(To)s
|
||||||
|
Subject: [CRANS] Bienvenue au Cr@ns !
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
Bienvenue !
|
||||||
|
|
||||||
|
Si tu lis ce mail, c'est que ton inscription à l'association
|
||||||
|
s'est déroulée correctement.
|
||||||
|
|
||||||
|
Le CR@NS est une association gérée, autant d'un point de vue
|
||||||
|
administratif que technique, par des étudiants bénévoles pour les
|
||||||
|
étudiants résidant sur le campus.
|
||||||
|
|
||||||
|
Ses membres actifs s'occupent de la maintenance du réseau, et des adhésions
|
||||||
|
(câblages), ainsi que de plusieurs services mis à la
|
||||||
|
disposition de tous ses adhérents :
|
||||||
|
* La connexion à Internet en filaire et en wifi
|
||||||
|
<https://wiki.crans.org/WiFi>
|
||||||
|
* Un wiki, regroupant plein d'informations diverses concernant la vie ici.
|
||||||
|
<https://wiki.crans.org>
|
||||||
|
* Les news, fora de discussion abordant divers thèmes
|
||||||
|
<https://wiki.crans.org/VieCrans/ForumNews>
|
||||||
|
* Un canal IRC <https://wiki.crans.org/VieCrans/UtiliserIrc>
|
||||||
|
* Un client de messagerie instantanée Jabber
|
||||||
|
<https://wiki.crans.org/VieCrans/UtiliserJabber>
|
||||||
|
* Un service de messagerie : une adresse mail @crans.org disponible à
|
||||||
|
vie, fiable, et avec possibilité d'installer des filtres très précis**
|
||||||
|
* Un espace personnel *de 2Go sur le serveur des adhérents *
|
||||||
|
<https://wiki.crans.org/VieCrans/GestionCompte>
|
||||||
|
* Un service d'impression, 24h/24 7j/7, A3 ou A4, couleur ou noir et
|
||||||
|
blanc, avec ou sans agrafe, à prix coûtant
|
||||||
|
<https://wiki.crans.org/VieCrans/Intranet>
|
||||||
|
* La télévision par le réseau <https://wiki.crans.org/TvReseau>
|
||||||
|
|
||||||
|
Afin *d'assurer le bon fonctionnement de ces services*, il est
|
||||||
|
nécessaire que chaque membre respecte la charte signée lors de son
|
||||||
|
inscription. <https://wiki.crans.org/CransAdministratif/CharteDuCrans>
|
||||||
|
|
||||||
|
La notice d'utilisation des services du CR@NS est disponible ici :
|
||||||
|
https://wiki.crans.org/CransPratique. Nous conseillons vivement de s'y reporter
|
||||||
|
aussi bien pour apprendre à utiliser les différents services que pour
|
||||||
|
résoudre les problèmes éventuellement rencontrés.
|
||||||
|
* Chaque membre intéressé par le fonctionnement de l'association peut par
|
||||||
|
exemple contacter l'équipe technique à nounous@crans.org ou l'équipe
|
||||||
|
administrative à ca@crans.org et/ou se rendre aux réunions publiques du
|
||||||
|
CR@NS. <https://wiki.crans.org/CompteRendusCrans>. Aucune
|
||||||
|
connaissance technique préalable n'est requise pour participer ! *
|
||||||
|
|
||||||
|
*A noter* : l'accès aux news et au wiki est limité à un usage interne
|
||||||
|
au campus.
|
||||||
|
Pour accéder depuis l'extérieur
|
||||||
|
* au wiki, il faut se créer un compte
|
||||||
|
<http://wiki.crans.org/?action=newaccount>
|
||||||
|
* aux news, il faut s'identifier
|
||||||
|
(Utilisateur : Vivelapa / Mot de passe : ranoia!)
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Les membres actifs.
|
||||||
|
|
||||||
|
PS: Il t'est conseillé de conserver ce mail à toutes fins utiles
|
||||||
|
"""
|
||||||
|
|
||||||
|
#: Mail envoyé à un adhérent qui obtient de nouveaux droits.
|
||||||
|
txt_ajout_droits = u"""From: Crans <%(From)s>
|
||||||
|
To: %(To)s
|
||||||
|
Subject: [CRANS] Ajout des droits %(Droit)s
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
Bonjour,
|
||||||
|
|
||||||
|
Tu viens d'être doté des droits %(Droit)s au Cr@ns.
|
||||||
|
Une description de ces droits et de la manière
|
||||||
|
de les utiliser est disponible sur la page :
|
||||||
|
|
||||||
|
%(Page)s
|
||||||
|
|
||||||
|
Si tu as des questions, n'hésite pas à les poser
|
||||||
|
à d'autres câbleurs ou aux nounous.
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Les nounous"""
|
||||||
|
|
||||||
|
#: Pages wiki explicatives sur les droits
|
||||||
|
pages_infos_droits = { "Cableur" : "https://wiki.crans.org/%C3%8AtreC%C3%A2bleur",
|
||||||
|
"Imprimeur" : "https://wiki.crans.org/%C3%8AtreC%C3%A2bleur/%C3%8AtreImprimeur",
|
||||||
|
"Bureau" : "https://wiki.crans.org/%C3%8AtreC%C3%A2bleur/%C3%8AtreLeBureau",
|
||||||
|
"Moderateur" : "https://wiki.crans.org/CransTechnique/ModerationDesNews"
|
||||||
|
}
|
||||||
|
|
||||||
|
#: Mail de rappel envoyé à un adhérent ayant des droits mais n'ayant pas encore signé sa charte membre actifs
|
||||||
|
txt_charte_MA = u"""From: Crans <%(From)s>
|
||||||
|
To: %(To)s
|
||||||
|
Subject: [CRANS] Charte des membres actifs
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
Bonjour,
|
||||||
|
|
||||||
|
Il semble que tu es membre actif du CRANS et que tu n'as pas
|
||||||
|
signé la charte des membres actifs. Si tu n'es pas membre actif
|
||||||
|
ou si tu as signé la charte des membres actifs, merci de nous le
|
||||||
|
signaler. Sinon, il faudrait signer la charte et nous la rendre
|
||||||
|
rapidement. Tu peux l'imprimer à partir du fichier suivant :
|
||||||
|
|
||||||
|
https://wiki.crans.org/CransAdministratif?action=AttachFile&do=get&target=charte_ma.pdf
|
||||||
|
|
||||||
|
Merci par avance,
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Le bureau du CRANS"""
|
||||||
|
|
||||||
|
#: Mail envoyé à un adhérent à qui on a retiré ses droits.
|
||||||
|
txt_menage_cableurs = u"""From: Crans <%(From)s>
|
||||||
|
To: %(To)s
|
||||||
|
Subject: [CRANS] Suppression de droits
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
Bonjour,
|
||||||
|
|
||||||
|
Les droits que tu avais sur ton compte CRANS ont été retirés
|
||||||
|
car tu ne cotises pas cette année et que tes droits ne semblent
|
||||||
|
pas être utiles pour une utilisation à distance. Si nous avons
|
||||||
|
commis une erreur, nous te prions de nous en excuser. Si tu
|
||||||
|
souhaites par la suite retrouver des droits, nous serons bien sûr
|
||||||
|
heureux de te les remettre.
|
||||||
|
|
||||||
|
Cordialement,
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Le bureau du CRANS"""
|
93
gestion/config/mails/p2p.py
Normal file
93
gestion/config/mails/p2p.py
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
""" Templates des mails envoyés en cas de p2p. """
|
||||||
|
|
||||||
|
#: Envoyé à la ML disconnect@ en cas de déconnexion pour p2p
|
||||||
|
avertissement = u"""From: %(From)s
|
||||||
|
To: %(To)s
|
||||||
|
Subject: =?iso-8859-1?Q?D=E9tection?= de p2p sur la machine %(hostname)s
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
La machine %(hostname)s a été déconnectée pendant 24h pour
|
||||||
|
utilisation du protocole %(protocole)s.
|
||||||
|
Nombre de paquets : %(nb_paquets)s paquets depuis le %(datedebut)s.
|
||||||
|
Chambre (si machine fixe) : %(chambre)s
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Message créé par deconnexion.py"""
|
||||||
|
|
||||||
|
#: Envoyé à l'adhérent en cas de déconnexion pour p2p
|
||||||
|
deconnexion = u"""From: %(From)s
|
||||||
|
To: %(To)s
|
||||||
|
Subject: Avis de =?iso-8859-15?Q?D=E9connexion?=
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
Bonjour,
|
||||||
|
Nous avons détecté que ta machine, %(hostname)s utilisait le
|
||||||
|
*protocole* %(protocole)s.
|
||||||
|
|
||||||
|
Cela signifie :
|
||||||
|
- Ou bien que tu utilises le logiciel qui a le même nom
|
||||||
|
que ce protocole,
|
||||||
|
- Ou bien que tu utilises un logiciel qui utilise le
|
||||||
|
protocole en question pour partager des fichiers.
|
||||||
|
|
||||||
|
Or l'usage de *protocoles* de type peer to peer est interdit
|
||||||
|
sur notre réseau, conformément aux documents que tu as acceptés
|
||||||
|
en adhérant au CR@NS.
|
||||||
|
|
||||||
|
Lorsqu'un seul des adhérents du CR@NS utilise des protocoles interdits,
|
||||||
|
il pénalise l'ensemble des adhérents de l'association.
|
||||||
|
|
||||||
|
Tu seras donc déconnecté 24h.
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Disconnect Team"""
|
||||||
|
|
||||||
|
#: Envoyé à l'adhérent en cas de détection de p2p
|
||||||
|
avertissement_bt = u"""From: %(From)s
|
||||||
|
To: %(To)s
|
||||||
|
Subject: Avertissement d'utilisation du protocole Bittorrent
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
Bonjour,
|
||||||
|
Nous avons détecté que ta machine, %(hostname)s utilisait le
|
||||||
|
*protocole* %(protocole)s.
|
||||||
|
|
||||||
|
*Ce message t'est envoyé à titre informatif, il ne te sanctionne pas.*
|
||||||
|
|
||||||
|
Cela signifie :
|
||||||
|
- Ou bien que tu utilises le logiciel qui a le même nom
|
||||||
|
que ce protocole,
|
||||||
|
- Ou bien que tu utilises un logiciel qui utilise le
|
||||||
|
protocole en question pour partager des fichiers.
|
||||||
|
|
||||||
|
Or l'usage de *protocoles* de type peer to peer est interdit
|
||||||
|
sur notre réseau, conformément aux documents que tu as acceptés
|
||||||
|
en adhérant au CR@NS.
|
||||||
|
|
||||||
|
Nous empêchons donc ce trafic Bittorrent de sortir du réseau Cr@ns,
|
||||||
|
rendant inopérant les logiciels l'utilisant.
|
||||||
|
|
||||||
|
Si tu es à l'origine de ce trafic, merci de couper les logiciels en
|
||||||
|
question. Sinon, il est possible qu'un logiciel malveillant en soit la
|
||||||
|
cause, nous te conseillons d'installer un anti-virus et un pare-feu afin
|
||||||
|
d'arrêter la source de ce trafic.
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Disconnect Team"""
|
||||||
|
|
||||||
|
#: Envoyé à la ML disconnect@ en cas de déconnexion pour p2p plusieurs fois
|
||||||
|
message_disconnect_multi = u"""From: %(from)s
|
||||||
|
To: %(to)s
|
||||||
|
Subject: %(proprio)s a =?iso-8859-15?Q?=E9t=E9=20d=E9connect=E9?= %(nbdeco)d fois pour p2p en un an !
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
L'adhérent %(proprio)s a été déconnecté %(nbdeco)d fois pour p2p en un an !
|
||||||
|
|
||||||
|
Le PS a été généré et se trouve sur zamok :
|
||||||
|
%(ps)s
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Message créé par deconnexion.py"""
|
114
gestion/config/mails/upload.py
Normal file
114
gestion/config/mails/upload.py
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
""" Templates des mails envoyés en cas d'upload. """
|
||||||
|
|
||||||
|
#: Envoyé à l'adhérent en cas de dépassement de la limite soft
|
||||||
|
message_soft = u"""From: %(from)s
|
||||||
|
To: %(to)s
|
||||||
|
Subject: [CRANS] Attention !!
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
Bonjour %(proprio)s,
|
||||||
|
|
||||||
|
Nous t'informons que ta (tes) machine(s) envoie(nt) une quantité
|
||||||
|
importante de données vers l'extérieur (%(upload)s Mo en 24 heures).
|
||||||
|
|
||||||
|
*Ce message t'est envoyé à titre informatif, il ne te sanctionne pas.*
|
||||||
|
|
||||||
|
Il signifie que tu as envoyé plus de 300 Mo au cours des dernières 24
|
||||||
|
heures. Cela peut venir du fait que, *par exemple*, tu essaies
|
||||||
|
d'envoyer des fichiers de grosse taille à l'extérieur de la zone
|
||||||
|
crans, ou encore que tu as fait une utilisation importante de
|
||||||
|
logiciels envoyant une très grande quantité de petites données
|
||||||
|
(vidéo-conférence par exemple). Il peut y avoir d'autres raisons.
|
||||||
|
|
||||||
|
|
||||||
|
Si cela continuait, et que tu dépassais la limite acceptable des 4096
|
||||||
|
Mo sur 24 heures, tu serais automatiquement déconnecté du réseau pour
|
||||||
|
une durée de 24 heures. Il t'appartient donc de surveiller cela de
|
||||||
|
plus près et de faire en sorte que tes machines n'uploadent pas de
|
||||||
|
manière excessive à l'avenir.
|
||||||
|
|
||||||
|
|
||||||
|
Pour plus d'informations, tu peux consulter la page:
|
||||||
|
http://wiki.crans.org/VieCrans/DéconnexionPourUpload
|
||||||
|
|
||||||
|
Si tu as des questions, contacte disconnect@crans.org
|
||||||
|
|
||||||
|
N.B. : L'upload consiste en l'envoi de données vers des machines n'étant
|
||||||
|
pas branchées sur le CRANS.
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Disconnect team"""
|
||||||
|
|
||||||
|
#: Envoyé à l'adhérent en cas de dépassement de la limite hard
|
||||||
|
message_hard = u"""From: %(from)s
|
||||||
|
To: %(to)s
|
||||||
|
Subject: [CRANS] =?iso-8859-1?Q?D=E9connexion?= temporaire
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
Bonjour %(proprio)s,
|
||||||
|
|
||||||
|
Tu as temporairement été déconnecté du réseau en raison de l'envoi trop
|
||||||
|
important de données vers l'extérieur (%(upload)s Mo en 24h).
|
||||||
|
|
||||||
|
Tu as toujours accès au web ainsi qu'à tes mails crans mais tous les
|
||||||
|
autres services te sont suspendus. Si cela devait se renouveler trop
|
||||||
|
souvent, tu serais déconnecté complètement pour une durée plus
|
||||||
|
importante. Il t'appartient donc de surveiller cela de plus près et de
|
||||||
|
faire en sorte que ta machine n'uploade plus de manière excessive à
|
||||||
|
l'avenir.
|
||||||
|
|
||||||
|
Pour plus d'informations, tu peux consulter la page :
|
||||||
|
http://wiki.crans.org/VieCrans/DéconnexionPourUpload
|
||||||
|
|
||||||
|
Si tu as des questions, contacte disconnect@crans.org
|
||||||
|
|
||||||
|
N.B. : L'upload consiste en l'envoi de données vers des machines n'étant
|
||||||
|
pas branchées sur le CRANS.
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Disconnect team"""
|
||||||
|
|
||||||
|
#: Envoyé à la ML disconnect@ en cas de dépassement de la limite soft (désactivé)
|
||||||
|
message_disconnect_soft = u"""From: %(from)s
|
||||||
|
To: %(to)s
|
||||||
|
Subject: %(proprio)s uploade
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
%(proprio)s uploade actuellement %(upload)s Mo.
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Message créé par deconnexion.py"""
|
||||||
|
|
||||||
|
#: Envoyé à la ML disconnect@ en cas de dépassement de la limite hard
|
||||||
|
message_disconnect_hard = u"""From: %(from)s
|
||||||
|
To: %(to)s
|
||||||
|
Subject: %(proprio)s a =?iso-8859-1?Q?=E9t=E9=20d=E9connect=E9?=
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
%(proprio)s a été déconnecté pour upload (%(upload)s Mo).
|
||||||
|
|
||||||
|
Ses machines ont été aperçues pour la dernière fois à ces endroits :
|
||||||
|
%(mdc)s
|
||||||
|
|
||||||
|
La chambre de l'adhérent est %(chambre)s.
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Message créé par deconnexion.py"""
|
||||||
|
|
||||||
|
#: Envoyé à la ML disconnect@ en cas de dépassement de la limite hard plusieurs fois
|
||||||
|
message_disconnect_multi = u"""From: %(from)s
|
||||||
|
To: %(to)s
|
||||||
|
Subject: %(proprio)s a =?iso-8859-1?Q?=E9t=E9=20d=E9connect=E9?=
|
||||||
|
%(nbdeco)d fois pour upload en un mois !
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
L'adhérent %(proprio)s a été déconnecté %(nbdeco)d fois pour upload en un mois !
|
||||||
|
|
||||||
|
Le PS a été généré et se trouve sur zamok :
|
||||||
|
%(ps)s
|
||||||
|
|
||||||
|
--\u0020
|
||||||
|
Message créé par deconnexion.py"""
|
48
gestion/config/p2p.py
Normal file
48
gestion/config/p2p.py
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
|
""" Variables de configuration pour la détection du peer-to-peer """
|
||||||
|
|
||||||
|
#: Le traffic udp vers les ip (v4 et v6) des hotes dans cette liste est bloqué
|
||||||
|
udp_torrent_tracker = [
|
||||||
|
'tracker.openbittorrent.com',
|
||||||
|
'tracker.ccc.de',
|
||||||
|
'tracker.istole.it',
|
||||||
|
'tracker.publicbt.com',
|
||||||
|
'tracker.1337x.org',
|
||||||
|
'fr33domtracker.h33t.com',
|
||||||
|
'tracker.torrentbox.com',
|
||||||
|
'11.rarbg.com',
|
||||||
|
'exodus.desync.com',
|
||||||
|
'fr33dom.h33t.com',
|
||||||
|
'torrentbay.to',
|
||||||
|
'tracker.ex.ua',
|
||||||
|
'tracker.ilibr.org',
|
||||||
|
'tracker.prq.to',
|
||||||
|
'tracker.publichd.eu',
|
||||||
|
'tracker.yify-torrents.com',
|
||||||
|
]
|
||||||
|
|
||||||
|
#: Limite de débit pour l'ensemble du p2p classifié, en octets/s
|
||||||
|
#: identique en upload et download
|
||||||
|
debit_max = 1000000 # = 1 Mb/s = 125 ko/s
|
||||||
|
debit_adh = 12000 # = 12 Kb/s = 1500 o/s (>= MTU [1500 bytes])
|
||||||
|
|
||||||
|
#: Limite de paquets acceptés par protocole P2P en deux heures
|
||||||
|
limite = {'Bittorrent': 100,
|
||||||
|
'AppleJuice': 50,
|
||||||
|
'SoulSeek': 500,
|
||||||
|
'WinMX': 50,
|
||||||
|
'eDonkey': 50,
|
||||||
|
'DirectConnect': 50,
|
||||||
|
'KaZaa': 50,
|
||||||
|
'Ares': 50,
|
||||||
|
'GNUtella': 50 }
|
||||||
|
|
||||||
|
#: Envoi des mails à disconnect@
|
||||||
|
disconnect_mail = True
|
||||||
|
|
||||||
|
#: Expéditeur des mails de déconnexion
|
||||||
|
expediteur = "disconnect@crans.org"
|
||||||
|
|
22
gestion/config/upload.py
Normal file
22
gestion/config/upload.py
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
""" Définitions des variables pour le contrôle d'upload. """
|
||||||
|
|
||||||
|
#: liste des exemptions générales
|
||||||
|
exempt = [ ['138.231.136.0/21', '138.231.0.0/16'],
|
||||||
|
['138.231.148.0/22', '138.231.0.0/16'] ]
|
||||||
|
|
||||||
|
#: limite soft
|
||||||
|
soft = 300
|
||||||
|
|
||||||
|
#: limite hard
|
||||||
|
hard = 4096
|
||||||
|
|
||||||
|
#: envoyer des mails à disconnect@ en cas de dépassement soft ?
|
||||||
|
disconnect_mail_soft = False
|
||||||
|
#: envoyer des mails à disconnect@ en cas de dépassement hard ?
|
||||||
|
disconnect_mail_hard = True
|
||||||
|
|
||||||
|
#: expéditeur des mails de déconnexion
|
||||||
|
expediteur = "disconnect@crans.org"
|
9
gestion/config/virus.py
Normal file
9
gestion/config/virus.py
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
""" Définitions des variables pour la détection des virus. """
|
||||||
|
|
||||||
|
#: Nombre de flood par heure pour déclencher une entrée dans la base
|
||||||
|
flood = 100
|
||||||
|
#: Nombre d'entrées dans la base pour détecter un virus
|
||||||
|
virus = 10
|
Loading…
Add table
Add a link
Reference in a new issue