scripts/gestion/config.py
Daniel STAN a5c5f5fb47 [etat_imprimante] Ajout d'infos sur l'état de l'imprimante
Ignore-this: b01dd62f6ab65c004d9ae75bbafad921

darcs-hash:20120304101358-28565-d54bf820bc61b793ac4375bd6c86f46d8ff0e843.gz
2012-03-04 11:13:58 +01:00

671 lines
21 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- python -*-
# -*- coding: utf-8 -*-
############################################
## Définition du comportement des scripts ##
############################################
from time import localtime
# Fichier généré
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 = 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] < 1):
# 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
# 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'],
'+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'
mac_g = '00:0f:1f:66:e5:92'
## Serveur principal de bcfg2
bcfg2_main = "bcfg2.adm.crans.org"
## Compatibilité inverse
cfengine_main = bcfg2_main
## Fichier de mapping lun/nom de volume iscsi
ISCSI_MAP_FILE = "/usr/scripts/var/iscsi_names.py"
## Impression
class impression:
"""Cette classe contient toutes les variables
de prix concernant l'impression"""
# l'imprimante utilisée
imprimante = "canon"
# Découvert autorisé (en euro)
decouvert = 0.
###### Variables de prix (tout est exprimé en centimes) ######
# Cout 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
# Cout d'une feuille A4
# 21.46 euros les 2500 feuilles
c_a4 = 0.8584 + amm
# Cout d'une feuille A3
# 59.68 euros les 2500 feuilles
c_a3 = 2.387216 + amm
# Cout d'un transparent
# 15.85 euros les 100 transparents
c_trans = 15.85 + amm
c_face_couleur = 9.4484
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
state_msg = [u'Attention ! La gestion des agrafes est actuellement défectueuses. Nous travaillons à la résolution de ce problème.']
## Pour le controle d'upload
class upload:
# liste des exemptations 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
# envoi des mails à disconnect@
disconnect_mail_soft = False
disconnect_mail_hard = True
# expéditeur des mails de déconnexion
expediteur = "disconnect@crans.org"
# textes des mails
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"""
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"""
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"""
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).
--\u0020
Message créé par deconnexion.py"""
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"""
message_demenagement = u"""From: %(from)s
To: %(to)s
Subject: =?iso-8859-1?Q?D=E9m=E9nagement=20non=20d=E9clar=E9?=
Content-Type: text/plain; charset="utf-8"
Bonjour,
Il semble que tu étais inscrit dans la chambre %(chambre), mais un
autre adhérent s'y est inscrit, ce qui suppose que tu n'y es plus.
Pourrais tu nous préciser ta nouvelle chambre ou adresse stp ?
Si tu es parti du campus, souhaites-tu garder tes machines ?
--\u0020
Merci par avance,
Les membres actifs du Crans"""
# Classe pour les paramètres du firewall #
##########################################
class conf_fw:
mark = { 'https-radin': '0x3',
'https-gratuit' : '0x3',
'proxy' : '0x2',
'bittorrent' : '0x1' }
# Valeur du masque utilisé pour créer un arbre dans les filtres
mask = [24]
debit_max = 100 * 1024 / 8 # kbytes per second
# Classe pour la détection des virus #
######################################
class virus:
# Nombre de Flood Par heure
flood = 100
virus = 10
# Classe pour la détection du p2p #
###################################
class p2p :
# 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"
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.
--\u0020
Message créé par deconnexion.py"""
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"""
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"""
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"""
#############################
## 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.
NETs = { 'serveurs' : [ '138.231.136.0/28' ],
'adherents' : [ '138.231.137.0/24',
'138.231.138.0/24',
'138.231.139.0/24',
'138.231.140.0/22' ],
'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' ],
'wifi': [ '138.231.144.0/21' ],
'gratuit': [ '10.42.0.0/21' ],
'personnel-ens': ['10.2.9.0/24' ],
'ens' : ['138.231.135.0/24'],
'all' : [ '138.231.136.0/21', '138.231.148.0/21' ]
}
NETs_regexp = { 'all' : '^138\.231\.1(3[6789]|4[0123456789]|5[01])\.\d+$' }
# Classes de mid
# Merci d'essayer de les faire correspondre avec les réseaux
# ci-dessus...
mid = {
# Mid pour les machines fixes
'fil' : (0, 2047),
# Mid pour les machines fixes ipv6-only
'fil-v6' : (32768, 34815),
# Mid pour les machines wifi
'wifi' : (2048, 4095),
# Mid pour les machines wifi ipv6-only
'wifi-v6' : (34816, 36863),
# Mid pour les machines du vlan adm
'adm' : (51200, 53247),
# Mid pour les machines du vlan gratuit
'gratuit' : (53248, 55295),
# Mid pour les machines des personnels ens
'personnel-ens' : (55296, 55551),
# Mid pour machines spéciales
'special' : (4096, 6143),
}
# mid pour les machines spéciales (classe 'special' ci-dessus)
mid_machines_speciales = {
# freebox.crans.org
4096: '82.225.39.54',
# ovh.crans.org
4097: '91.121.84.138',
# kokarde.crans.org
4098: '88.182.238.172',
}
# Les préfixes ipv6
prefix = { 'subnet' : [ '2a01:240:fe3d::/48' ],
'serveurs' : [ '2a01:240:fe3d:0::/64'],
'fil' : [ '2a01:240:fe3d:4::/64' ],
'adm' : [ '2a01:240:fe3d:c804::/64' ],
'wifi' : [ '2a01:240:fe3d:f7::/64' ],
'sixxs2' : [ '2a01:240:fe00:68::/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
}
filter_policy = { 'komaz' : { 'policy_input' : 'ACCEPT',
'policy_forward' : 'DROP',
'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_upload', 'bloq']
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
#######################
## 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"
Si tu lis ce mail, c'est que ton inscription à l'association est effective !
Toutes les informations concernant l'association sont disponibles sur le
WIKI à l'adresse http://wiki.crans.org
Notamment, il est important de prendre le temps de lire la page :
http://wiki.crans.org/CransPratique
Elle regroupe toutes les informations nécessaires à l'utilisation des
ressources de l'association.
Sans lire attentivement ce document, l'accès au Web peut ne pas
fonctionner.
-----
L'accés aux news et au wiki sont limités à un usage interne au CRANS.
Pour avoir accès au wiki depuis l'extérieur, il faut te créer un compte:
http://wiki.crans.org/?action=newaccount
Pour avoir accès aux news depuis l'extérieur il faut utiliser un mot de
passe:
* Utilisateur  : Vivelapa
* Mot de passe : ranoia!
-----
Sur ce, bienvenue au Cr@ns !
PS: Il t'est conseillé de conserver ce mail à toutes fin utiles
--\u0020
Les membres actifs."""
txt_ajout_droits = """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_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"
}
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"""
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"""