Encodage en UTF-8 : Il reste encore beaucoup de boulot.
This commit is contained in:
parent
fc9ac609fc
commit
5fb0ee8bd5
16 changed files with 138 additions and 138 deletions
|
@ -23,21 +23,21 @@ set -e
|
|||
|
||||
case "$1" in
|
||||
start)
|
||||
echo -n "Démarrage de $NAME"
|
||||
echo -n "Démarrage de $NAME"
|
||||
/sbin/start-stop-daemon --start --quiet --pidfile $PIDF --exec $BIN $ARGS
|
||||
echo "."
|
||||
;;
|
||||
stop)
|
||||
echo -n "Arrêt de $NAME"
|
||||
echo -n "Arrêt de $NAME"
|
||||
/sbin/start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDF
|
||||
echo "."
|
||||
;;
|
||||
|
||||
restart)
|
||||
echo -n "Redémarrage (arrêt) de $NAME"
|
||||
echo -n "Redémarrage (arrêt) de $NAME"
|
||||
/sbin/start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDF
|
||||
/bin/sleep 1
|
||||
echo -n "Redémarrage (démarrage) de $NAME"
|
||||
echo -n "Redémarrage (démarrage) de $NAME"
|
||||
/sbin/start-stop-daemon --start --quiet --pidfile $PIDF --exec $BIN $ARGS
|
||||
echo "."
|
||||
;;
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
-- Fichier permttant de reconstituer la base de données de filtrage des logs
|
||||
-- Fichier permttant de reconstituer la base de données de filtrage des logs
|
||||
-- de net-acct et du firewall
|
||||
-- Pour regénérer la base :
|
||||
-- Pour regénérer la base :
|
||||
-- Dropper la bose en tant qu'utilisateur postgres : dropdb filtrage
|
||||
-- Créer la base avec l'utilisateur crans (par exemple) :
|
||||
-- Créer la base avec l'utilisateur crans (par exemple) :
|
||||
-- createdb -O crans filtrage
|
||||
-- exécuter en tant qu'utilisateur :
|
||||
-- exécuter en tant qu'utilisateur :
|
||||
-- psql filtrage -U crans < filtrage.sql
|
||||
|
||||
|
||||
BEGIN;
|
||||
-- Création de la table de protocole de type udp .. : index(1,16,17) | nom (,tcp,udp)
|
||||
-- Création de la table de protocole de type udp .. : index(1,16,17) | nom (,tcp,udp)
|
||||
CREATE TABLE protocole (
|
||||
id integer NOT NULL,
|
||||
nom text NOT NULL,
|
||||
CONSTRAINT id_protocole PRIMARY KEY (id));
|
||||
|
||||
|
||||
-- Création de la table de protocole p2p : (1,2,3,...)|(eMule,SoulSeak, ...)
|
||||
-- Création de la table de protocole p2p : (1,2,3,...)|(eMule,SoulSeak, ...)
|
||||
CREATE TABLE protocole_p2p (
|
||||
id_p2p serial NOT NULL,
|
||||
nom text NOT NULL,
|
||||
|
@ -103,19 +103,19 @@ CREATE TABLE flood (
|
|||
date timestamp NOT NULL,
|
||||
ip_crans inet NOT NULL);
|
||||
|
||||
-- Table des infectes
|
||||
-- Table des seedeurs
|
||||
CREATE TABLE avertis_p2p (
|
||||
date timestamp NOT NULL,
|
||||
ip_crans inet NOT NULL,
|
||||
protocole text NOT NULL);
|
||||
|
||||
-- Table des sanctionnés pour upload :
|
||||
-- Table des sanctionnés pour upload :
|
||||
CREATE TABLE sanctions (
|
||||
date timestamp NOT NULL,
|
||||
ip_crans inet NOT NULL,
|
||||
upload bigint NOT NULL);
|
||||
|
||||
-- Table des exemptés :
|
||||
-- Table des exemptés :
|
||||
CREATE TABLE exemptes (
|
||||
ip_crans inet NOT NULL,
|
||||
ip_dest inet NOT NULL);
|
||||
|
@ -180,7 +180,7 @@ CREATE TABLE flood (
|
|||
INSERT INTO protocole_p2p (nom) VALUES ('GNUtella');
|
||||
|
||||
|
||||
-- Création des index
|
||||
-- Création des index
|
||||
CREATE INDEX date_virus_idx ON virus (date);
|
||||
CREATE INDEX ip_src_virux_idx ON virus (ip_src);
|
||||
CREATE INDEX id_virus_idx ON virus (id);
|
||||
|
|
|
@ -6,21 +6,21 @@ exit 0
|
|||
|
||||
case "$1" in
|
||||
start)
|
||||
echo -n "Démarrage du script de parsage des logs du netacct"
|
||||
echo -n "Démarrage du script de parsage des logs du netacct"
|
||||
start-stop-daemon --start --quiet --background --make-pidfile --pidfile /var/run/filtrage_netacct.pid --exec /usr/scripts/surveillance/filtrage_netacct.py
|
||||
echo "."
|
||||
;;
|
||||
stop)
|
||||
echo -n "Arrêt du parsage des logs du netacct"
|
||||
echo -n "Arrêt du parsage des logs du netacct"
|
||||
start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile /var/run/filtrage_netacct.pid
|
||||
echo "."
|
||||
;;
|
||||
|
||||
restart)
|
||||
echo -n "Redémarrage du parsage des logs du netacct"
|
||||
echo -n "Redémarrage du parsage des logs du netacct"
|
||||
start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile /var/run/filtrage_netacct.pid
|
||||
sleep 1
|
||||
echo -n "Démarrage du script de parsage des logs du netacct"
|
||||
echo -n "Démarrage du script de parsage des logs du netacct"
|
||||
start-stop-daemon --start --quiet --background --make-pidfile --pidfile /var/run/filtrage_netacct.pid --exec /usr/scripts/surveillance/filtrage_netacct.py
|
||||
echo "."
|
||||
;;
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
-----------------------------------------------------------------
|
||||
-- Maintenance de la base netacct-ng sur pgsql, lancé par cron
|
||||
-- Maintenance de la base netacct-ng sur pgsql, lancé par cron
|
||||
-----------------------------------------------------------------
|
||||
|
||||
-- effacement des vieux enregistrements
|
||||
DELETE FROM upload where date< timestamp 'now' - interval '2 days';
|
||||
|
||||
-- suppression complète des entrées
|
||||
-- suppression complète des entrées
|
||||
VACUUM;
|
||||
|
||||
-- réindexation des tables
|
||||
-- réindexation des tables
|
||||
REINDEX TABLE upload;
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
-----------------------------------------------------------------
|
||||
-- Maintenance de la base pgsql sur thot, lancé par cron
|
||||
-- Maintenance de la base pgsql sur thot, lancé par cron
|
||||
-----------------------------------------------------------------
|
||||
|
||||
-- effacement des vieux enregistrements
|
||||
DELETE FROM upload where date< timestamp 'now' - interval '5 days';
|
||||
-- la même pour upload6
|
||||
-- la même pour upload6
|
||||
DELETE FROM upload6 WHERE date< timestamp 'now' - interval '5 days';
|
||||
-- On ne blackliste plus pour virus, on droppe seulement
|
||||
-- DELETE FROM virus where date< timestamp 'now' - interval '2 days';
|
||||
-- Idem pour flood
|
||||
-- DELETE FROM flood where date< timestamp 'now' - interval '2 days';
|
||||
|
||||
-- suppression complète des entrées
|
||||
-- suppression complète des entrées
|
||||
VACUUM;
|
||||
|
||||
-- réindexation des tables
|
||||
-- réindexation des tables
|
||||
REINDEX TABLE upload;
|
||||
REINDEX TABLE upload6;
|
||||
-- REINDEX TABLE virus;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# $Id: monit-ovh,v 1.1 2007/05/26 01:17:37 dimino Exp $
|
||||
#
|
||||
# Récupère la sortie du monit status sur ovh
|
||||
# Récupère la sortie du monit status sur ovh
|
||||
|
||||
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#! /usr/bin/env python
|
||||
# -*- coding: iso-8859-15 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Pour envoyer effectivement des mails, il faut désactiver le debug
|
||||
# Pour envoyer effectivement des mails, il faut désactiver le debug
|
||||
debug = 1
|
||||
|
||||
import os,sys
|
||||
|
@ -19,9 +19,9 @@ for i in range(5):
|
|||
sys.exit(1)
|
||||
|
||||
|
||||
# On définit ici une liste d'adresse mail qui ne sont pas à prévenir
|
||||
# à utiliser par exemple si on a commencé à prévenir des adhérents mais que
|
||||
# tous ne l'ont pas été
|
||||
# On définit ici une liste d'adresse mail qui ne sont pas à prévenir
|
||||
# à utiliser par exemple si on a commencé à prévenir des adhérents mais que
|
||||
# tous ne l'ont pas été
|
||||
try :
|
||||
exempts = []
|
||||
file = open('/home/salles/mails_envoyes',"r")
|
||||
|
@ -33,25 +33,25 @@ try :
|
|||
except :
|
||||
print "Aucune exemption d'adresses mails ne sera prise en compte"
|
||||
|
||||
# On définit ici la liste des mails perdus et qui sont inscrits dans les logs
|
||||
# Dans le cas du 11/09/2007, les mails perdus étaient identifiables avec
|
||||
# On définit ici la liste des mails perdus et qui sont inscrits dans les logs
|
||||
# Dans le cas du 11/09/2007, les mails perdus étaient identifiables avec
|
||||
# le message "too many hops"
|
||||
# On a donc créé le fichier mails_perdus avec la commande suivante :
|
||||
# On a donc créé le fichier mails_perdus avec la commande suivante :
|
||||
# cat /var/log/mail.log | grep "too many hops" | grep '(!) FWD via SMTP' | awk -F ' ' '{print $1 " " $2 " " $3 " " $11 " " $12 " " $13}' | tr \[:upper:\] \[:lower:\] | sed 's/,$//g' > mails_perdus
|
||||
# Le fichier se présente alors sous la forme :
|
||||
# Le fichier se présente alors sous la forme :
|
||||
# Mois Jour Heure <emetteur@adresse.mail> -> <recepteur@adresse.mail.2>
|
||||
file = open('/home/salles/mails_perdus',"r")
|
||||
|
||||
# On crée les 2 dictionnaire qui vont contenir les 2 types d'avertissemnts à
|
||||
# On crée les 2 dictionnaire qui vont contenir les 2 types d'avertissemnts à
|
||||
# communiquer :
|
||||
# - les messages envoyés par des adhérents au serveur mais qui ne sont pas
|
||||
# - les messages envoyés par des adhérents au serveur mais qui ne sont pas
|
||||
#partis vers leur destinataire
|
||||
unsend = {}
|
||||
# - les messages reçus par le serveur mais non distribués aux adhérents
|
||||
# - les messages reçus par le serveur mais non distribués aux adhérents
|
||||
unreceived = {}
|
||||
|
||||
def is_crans(mail) :
|
||||
""" Détermine si l'adresse mail concerne un adhérent"""
|
||||
""" Détermine si l'adresse mail concerne un adhérent"""
|
||||
# Je remarque que les adresses de clubs et de mailings-listes ne sont
|
||||
# pas pris en compte @lists.crans.
|
||||
if mail.find('@crans.') > 0 :
|
||||
|
@ -61,16 +61,16 @@ def is_crans(mail) :
|
|||
|
||||
|
||||
def append(dict, chain, value, date) :
|
||||
""" Définit une méthode pour ajouter un mail perdu dans l'un des
|
||||
""" Définit une méthode pour ajouter un mail perdu dans l'un des
|
||||
dictionnaires.
|
||||
Les dictionnaires ont pour clés l'adresse mail d'un adhérent aux quelles
|
||||
sont associés une liste des mails perdus sur la forme ['adresse_mail2', 'date']
|
||||
Les dictionnaires ont pour clés l'adresse mail d'un adhérent aux quelles
|
||||
sont associés une liste des mails perdus sur la forme ['adresse_mail2', 'date']
|
||||
"""
|
||||
if not dict.has_key(chain) :
|
||||
# Si la clé n'existe pas : initialisation
|
||||
# Si la clé n'existe pas : initialisation
|
||||
dict[chain] = [ [value, date] ]
|
||||
else :
|
||||
# Sinon on ajoute le nouveau mail perdu à la liste existante
|
||||
# Sinon on ajoute le nouveau mail perdu à la liste existante
|
||||
dict[chain].append([value, date])
|
||||
|
||||
# On traite maintenant la liste des mails perdus
|
||||
|
@ -78,9 +78,9 @@ line = file.readline()
|
|||
# Pour chaque mail perdu
|
||||
while line:
|
||||
datas = line.split()
|
||||
# Il pourrait y avoir plusieurs expéditeurs pour le même mail
|
||||
# Il pourrait y avoir plusieurs expéditeurs pour le même mail
|
||||
senders = datas[3].split(",")
|
||||
# Il peut y avoir plusieurs destinataires pour un mail (ça c'est sur)
|
||||
# Il peut y avoir plusieurs destinataires pour un mail (ça c'est sur)
|
||||
receivers = datas[5].split(",")
|
||||
# On tente d'enlever les adresses nulles de ces 2 listes
|
||||
try :
|
||||
|
@ -95,7 +95,7 @@ while line:
|
|||
# On reformate le champ date en inversant Jour et Mois
|
||||
date = u"%s %s %s" % (datas[1], datas[0], datas[2])
|
||||
|
||||
# Pour chaque couple de mail perdu associé à une source et un destinataire
|
||||
# Pour chaque couple de mail perdu associé à une source et un destinataire
|
||||
for sender in senders :
|
||||
for receiver in receivers :
|
||||
# L'expediteur et le receveur sont du crans ?
|
||||
|
@ -109,14 +109,14 @@ while line:
|
|||
if is_crans(receiver) and not is_crans(sender) :
|
||||
append(unreceived, receiver, sender, date)
|
||||
|
||||
# On passe à la ligne suivante
|
||||
# On passe à la ligne suivante
|
||||
line = file.readline()
|
||||
|
||||
file.close()
|
||||
|
||||
|
||||
# On traite le formatage des mails pour indiquer aux adhérents les
|
||||
# mails qui ne leur ont pas été délivrés
|
||||
# On traite le formatage des mails pour indiquer aux adhérents les
|
||||
# mails qui ne leur ont pas été délivrés
|
||||
for adh in unreceived.keys() :
|
||||
text = u"""From: CRANS (Nounous) <nounous@crans.org>
|
||||
To: %s
|
||||
|
@ -125,30 +125,30 @@ Content-Type: text/plain; charset="iso-8859-15"
|
|||
|
||||
Bonjour,
|
||||
|
||||
Nous t'informons que suite à une erreur sur le serveur de mail
|
||||
de l'association, il est fort probable que nous ayons égaré des
|
||||
messages te concernant dans la période allant du lundi 10/09/2007
|
||||
23h00 à ce mardi 11/09/2007 9h50.
|
||||
Nous t'informons que suite à une erreur sur le serveur de mail
|
||||
de l'association, il est fort probable que nous ayons égaré des
|
||||
messages te concernant dans la période allant du lundi 10/09/2007
|
||||
23h00 à ce mardi 11/09/2007 9h50.
|
||||
|
||||
Tu trouveras ci-dessous le détail des messages que tu n'as pas pu
|
||||
Tu trouveras ci-dessous le détail des messages que tu n'as pas pu
|
||||
recevoir et/ou envoyer.\n""" % adh
|
||||
for unrecv in unreceived[adh] :
|
||||
text += u""" - mail non reçu : envoyé par %s avant le %s\n""" % (unrecv[0], unrecv[1])
|
||||
text += u""" - mail non reçu : envoyé par %s avant le %s\n""" % (unrecv[0], unrecv[1])
|
||||
text += u"""Nous te conseillons de contacter les personnes qui figurent dans
|
||||
cette liste si tu souhaites recevoir leur message, car elles n'ont
|
||||
pas été informé de cette erreur de livraison.
|
||||
pas été informé de cette erreur de livraison.
|
||||
"""
|
||||
# Au passage, on vérifie s'il n'y a pas des mails que l'adhérents auraient
|
||||
# Au passage, on vérifie s'il n'y a pas des mails que l'adhérents auraient
|
||||
# voulu envoyer qui se seraient aussi perdus
|
||||
if unsend.has_key(adh) :
|
||||
text += u"""
|
||||
"""
|
||||
for unsnd in unsend[adh] :
|
||||
text += u""" - mail non envoyé : adressé à %s le %s\n""" % (unsnd[0], unsnd[1])
|
||||
text += u""" - mail non envoyé : adressé à %s le %s\n""" % (unsnd[0], unsnd[1])
|
||||
|
||||
text += u"""Pour les mails que tu as pu essayé d'envoyer, et si ce n'est pas
|
||||
déjà le cas, il te faut les réexpédier si tu souhaites que tes
|
||||
destinataires les reçoivent.
|
||||
text += u"""Pour les mails que tu as pu essayé d'envoyer, et si ce n'est pas
|
||||
déjà le cas, il te faut les réexpédier si tu souhaites que tes
|
||||
destinataires les reçoivent.
|
||||
"""
|
||||
|
||||
text += u"""
|
||||
|
@ -167,8 +167,8 @@ Les nounous du CRANS"""
|
|||
pass
|
||||
|
||||
|
||||
# Le message est légèrement différent dans le cas où l'adhérent n'a perdu
|
||||
# des mails qu'à l'envoi.
|
||||
# Le message est légèrement différent dans le cas où l'adhérent n'a perdu
|
||||
# des mails qu'à l'envoi.
|
||||
for adh in unsend.keys() :
|
||||
if not unreceived.has_key(adh) :
|
||||
text = u"""From: CRANS (Nounous) <nounous@crans.org>
|
||||
|
@ -178,20 +178,20 @@ Content-Type: text/plain; charset="iso-8859-15"
|
|||
|
||||
Bonjour,
|
||||
|
||||
Nous t'informons que suite à une erreur sur le serveur de mail
|
||||
Nous t'informons que suite à une erreur sur le serveur de mail
|
||||
de l'association, il est fort probable que nous n'ayons pas pu
|
||||
transmettre certains de tes messages dans la période allant du
|
||||
lundi 10/09/2007 23h00 à ce mardi 11/09/2007 9h50.
|
||||
transmettre certains de tes messages dans la période allant du
|
||||
lundi 10/09/2007 23h00 à ce mardi 11/09/2007 9h50.
|
||||
|
||||
Tu trouveras ci-dessous le détail des messages que nous n'avons
|
||||
Tu trouveras ci-dessous le détail des messages que nous n'avons
|
||||
pas pu envoyer.\n""" % adh
|
||||
|
||||
for unsnd in unsend[adh] :
|
||||
text += u""" - mail non envoyé : adressé à %s le %s\n""" % (unsnd[0], unsnd[1])
|
||||
text += u""" - mail non envoyé : adressé à %s le %s\n""" % (unsnd[0], unsnd[1])
|
||||
|
||||
text += u"""Pour les mails que tu as pu essayé d'envoyer, et si ce n'est
|
||||
pas déjà le cas, il te faut les réexpédier si tu souhaites que tes
|
||||
destinataires les reçoivent.
|
||||
text += u"""Pour les mails que tu as pu essayé d'envoyer, et si ce n'est
|
||||
pas déjà le cas, il te faut les réexpédier si tu souhaites que tes
|
||||
destinataires les reçoivent.
|
||||
"""
|
||||
|
||||
text += u"""
|
||||
|
@ -207,4 +207,4 @@ Les nounous du CRANS"""
|
|||
except :
|
||||
pass
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#!/bin/sh
|
||||
|
||||
# À exécuter en tant que l'utilisateur dont on veut déplacer les mails
|
||||
# À exécuter en tant que l'utilisateur dont on veut déplacer les mails
|
||||
|
||||
if [[ $USER = "root" ]]; then
|
||||
echo "Ce script doit être exécuté en tant que l'utilisateur dont on veut déplacer les mails !"
|
||||
echo "Ce script doit être exécuté en tant que l'utilisateur dont on veut déplacer les mails !"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -14,9 +14,9 @@ set -e
|
|||
echo -n "Sauvegarde en cours vers $BACKUP... "
|
||||
test ! -a $BACKUP
|
||||
cp -a $MAIL $BACKUP
|
||||
# On évite l'* qui risque de donner trop d'arguments
|
||||
# On ne supprime pas non plus de répertoire car on peut ne pas avoir les
|
||||
# droits pour le recréer avec les mêmes permissions
|
||||
# On évite l'* qui risque de donner trop d'arguments
|
||||
# On ne supprime pas non plus de répertoire car on peut ne pas avoir les
|
||||
# droits pour le recréer avec les mêmes permissions
|
||||
find $MAIL/{cur,tmp,new} -type f -print0 | xargs -0 rm -f || true
|
||||
find $BACKUP -type f | xargs chmod 600
|
||||
find $BACKUP -type d | xargs chmod 700
|
||||
|
|
|
@ -11,7 +11,7 @@ import annuaires_pg
|
|||
from iptools import AddrInNet
|
||||
def chap_ok(password, challenge, clear_pass) :
|
||||
""" Test l'authentification chap fournie
|
||||
password et chalenge doivent être données
|
||||
password et chalenge doivent être données
|
||||
en hexa (avec ou sans le 0x devant)
|
||||
|
||||
retourne True si l'authentification est OK
|
||||
|
@ -31,39 +31,39 @@ def paiement_ok(adh):
|
|||
paid = max(adh.paiement() + [0])
|
||||
if periode_transitoire:
|
||||
# Si periode transitoire, on accepte les personnes n'ayant pas
|
||||
# réadhéré
|
||||
# réadhéré
|
||||
ann_scol -= 1
|
||||
return ann_scol <= paid
|
||||
|
||||
def do_auth(mac, prise):
|
||||
"""Effectue l'authentification. Renvoie (success, msg,
|
||||
vlan). success est 0 si l'authentification est réussie, msg est
|
||||
pour les logs et vlan est le vlan non taggé à utiliser pour la
|
||||
vlan). success est 0 si l'authentification est réussie, msg est
|
||||
pour les logs et vlan est le vlan non taggé à utiliser pour la
|
||||
prise."""
|
||||
|
||||
global ann_scol
|
||||
|
||||
# Test chap (comme cela on est sur que c'est bien un switch qui demande)
|
||||
if not chap_ok(os.getenv('CHAP_PASSWORD'), os.getenv('CHAP_CHALLENGE'), mac):
|
||||
return (-1, "Échec test CHAP", "")
|
||||
return (-1, "Échec test CHAP", "")
|
||||
|
||||
# Mac dans la base LDAP
|
||||
conn = crans_ldap(readonly=True)
|
||||
m = conn.search('mac=%s' % mac)['machine']
|
||||
if len(m) == 0:
|
||||
# Est-ce un ancien client de l'offre Crous ?
|
||||
# on le met sur le vlan install-party où on aura activé un forwarding
|
||||
# on le met sur le vlan install-party où on aura activé un forwarding
|
||||
# (uniquement en attendant qu'il soit inscrit proprement)
|
||||
for chbre in annuaires_pg.reverse(prise[0], prise[1:]):
|
||||
if not annuaires_pg.is_crans(prise[0], chbre):
|
||||
return (0, "TMP: ancien client CROUS", 'event')
|
||||
return (0, "Mac inconnue", "accueil")
|
||||
elif len(m) > 1:
|
||||
return (-1, "Pb recherche mac (nb résultat %d!=1)" % len(m), "")
|
||||
return (-1, "Pb recherche mac (nb résultat %d!=1)" % len(m), "")
|
||||
|
||||
# N'appartient pas au Crans et n'a pas de prise attribuée
|
||||
# donc sur uplink ou switch non filtré
|
||||
# But : éviter le spoof d'une mac d'une machine clef
|
||||
# N'appartient pas au Crans et n'a pas de prise attribuée
|
||||
# donc sur uplink ou switch non filtré
|
||||
# But : éviter le spoof d'une mac d'une machine clef
|
||||
proprio = m[0].proprietaire()
|
||||
if proprio.__class__ == AssociationCrans:
|
||||
return (-1, "Machine du crans", "")
|
||||
|
@ -72,7 +72,7 @@ def do_auth(mac, prise):
|
|||
if 'bloq' in m[0].blacklist_actif():
|
||||
return (-1, "Bloquage total des services pour cette machine", "")
|
||||
|
||||
# les gens qui doivent être isolés
|
||||
# les gens qui doivent être isolés
|
||||
if ('virus' in m[0].blacklist_actif() or 'ipv6_ra' in m[0].blacklist_actif()
|
||||
or 'autodisc_virus' in m[0].blacklist_actif()):
|
||||
return (0, "Bad boy", "isolement")
|
||||
|
@ -82,10 +82,10 @@ def do_auth(mac, prise):
|
|||
|
||||
# Paiement proprio ?
|
||||
if not paiement_ok(proprio):
|
||||
return (0, "N'a pas payé", "accueil")
|
||||
return (0, "N'a pas payé", "accueil")
|
||||
|
||||
# Si l'adhérent n'est pas membre actif, il doit se brancher depuis la prise
|
||||
# d'un autre adhérent à jour de cotisation
|
||||
# Si l'adhérent n'est pas membre actif, il doit se brancher depuis la prise
|
||||
# d'un autre adhérent à jour de cotisation
|
||||
if not proprio.droits():
|
||||
try:
|
||||
chbre = prise[0] + annuaires_pg.reverse(prise[0], prise[1:])[0]
|
||||
|
@ -96,15 +96,15 @@ def do_auth(mac, prise):
|
|||
if paiement_ok(hebergeur):
|
||||
break
|
||||
else:
|
||||
return (0, "Hébergeur non à jour", "accueil")
|
||||
return (0, "Hébergeur non à jour", "accueil")
|
||||
|
||||
# Cas des personnels logés dans les appartements de l'ENS
|
||||
# Cas des personnels logés dans les appartements de l'ENS
|
||||
if (proprio.etudes(0) == 'Personnel ENS' or
|
||||
('Nounou' in proprio.droits() and AddrInNet(m[0].ip(),'10.2.9.0/24'))):
|
||||
return (0, "Personnel ENS", "appts")
|
||||
|
||||
# C'est bon
|
||||
return (0, "Accès adhérent OK", "adherent")
|
||||
return (0, "Accès adhérent OK", "adherent")
|
||||
|
||||
if __name__ == '__main__' :
|
||||
mac = os.getenv('USER_NAME', '').replace('"', '')
|
||||
|
@ -112,7 +112,7 @@ if __name__ == '__main__' :
|
|||
prise = (len(switch) == 6 and (switch[3] + switch[5]) or (switch + "-"))
|
||||
prise += "%02d" % int(os.getenv("NAS_PORT", 0))
|
||||
|
||||
# On vérifie si la mac est autorisée
|
||||
# On vérifie si la mac est autorisée
|
||||
(r, msg, vlan) = do_auth(mac, prise)
|
||||
|
||||
# On logue la prise sur laquelle a lieu la tentative
|
||||
|
@ -120,13 +120,13 @@ if __name__ == '__main__' :
|
|||
syslog("%s -> %s [%s]" % (prise, mac, msg))
|
||||
|
||||
if vlan:
|
||||
# Cela indique au switch comment configurer le vlan par défaut
|
||||
# Cela indique au switch comment configurer le vlan par défaut
|
||||
# pour cette prise
|
||||
print ", ".join(["Tunnel-Type = VLAN",
|
||||
"Tunnel-Medium-Type = IEEE-802",
|
||||
"Tunnel-Private-Group-Id = \"%d\"" % vlans[vlan]])
|
||||
|
||||
# On tente de logguer la dernière mac sur une prise donnée
|
||||
# On tente de logguer la dernière mac sur une prise donnée
|
||||
try:
|
||||
f = open('/usr/scripts/var/last_macs/' + prise,'w')
|
||||
f.write(mac)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# -*- coding: iso-8859-1 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
sys.path.append('/usr/scripts/secours')
|
||||
|
@ -6,7 +6,7 @@ import secours
|
|||
|
||||
def Cellule(texte, couleur, f) :
|
||||
"""
|
||||
Retourne le code HTML d'une cellule formattée aver le formatter f
|
||||
Retourne le code HTML d'une cellule formattée aver le formatter f
|
||||
"""
|
||||
code = f.table(1)
|
||||
code += f.table_row(1)
|
||||
|
@ -25,4 +25,4 @@ def execute(macro, text) :
|
|||
else :
|
||||
return Cellule('Nous sommes actuellement en connexion de secours.','red',macro.formatter)
|
||||
except :
|
||||
return Cellule('Impossible de déterminer l\'état de la connexion.','yellow',macro.formatter)
|
||||
return Cellule('Impossible de déterminer l\'état de la connexion.','yellow',macro.formatter)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# -*- coding: iso-8859-1 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
EventCalendar.py Version 0.99a July 22, 2009
|
||||
|
||||
|
@ -462,7 +462,7 @@ def setglobalvalues(macro):
|
|||
Globs.pagepath = formatter.page.getPagePath()
|
||||
|
||||
# european / US differences
|
||||
months = (u'Janvier',u'Février',u'Mars',u'Avril',u'Mai',u'Juin',u'Juillet',u'Août',u'Septembre',u'Octobre',u'Novembre',u'Décembre')
|
||||
months = (u'Janvier',u'Février',u'Mars',u'Avril',u'Mai',u'Juin',u'Juillet',u'Août',u'Septembre',u'Octobre',u'Novembre',u'Décembre')
|
||||
|
||||
# Set things up for Monday or Sunday as the first day of the week
|
||||
if calendar.firstweekday() == calendar.MONDAY:
|
||||
|
@ -612,7 +612,7 @@ def showmenubar():
|
|||
mnu_curmonthcal = u'<a href="%s?calaction=%s&caldate=%d%02d%02d%s" title="Aujourd\'hui">[Aujourd\'hui]</a>' % (page_url, cal_action, year, month, day, getquerystring(['numcal']))
|
||||
|
||||
# List View
|
||||
mnu_listview = u'<a href="%s?calaction=list%s" title="Liste de tous les évènements">[Liste]</a>' % (page_url, getquerystring(['caldate', 'numcal']))
|
||||
mnu_listview = u'<a href="%s?calaction=list%s" title="Liste de tous les évènements">[Liste]</a>' % (page_url, getquerystring(['caldate', 'numcal']))
|
||||
|
||||
# Monthly View
|
||||
mnu_monthview = u'<a href="%s?calaction=monthly%s" title="Vue du mois">[Mois]</a>' % (page_url, getquerystring(['caldate', 'numcal']) )
|
||||
|
@ -621,7 +621,7 @@ def showmenubar():
|
|||
mnu_simpleview = u'<a href="%s?calaction=simple%s" title="Simple calendrier">[Simple]</a>' % (page_url, getquerystring(['caldate', 'numcal']) )
|
||||
|
||||
# Upcoming Event List
|
||||
mnu_upcomingview = u'<a href="%s?calaction=upcoming%s" title="Évènements à venir">[À venir]</a>' % (page_url, getquerystring(['caldate', 'numcal']) )
|
||||
mnu_upcomingview = u'<a href="%s?calaction=upcoming%s" title="Évènements à venir">[À venir]</a>' % (page_url, getquerystring(['caldate', 'numcal']) )
|
||||
|
||||
# Daily View
|
||||
mnu_dayview = u'<a href="%s?calaction=daily%s" title="Vue du jour">[Jour]</a>' % (page_url, getquerystring(['caldate', 'numcal']) )
|
||||
|
@ -795,9 +795,9 @@ def cal_listhead():
|
|||
html = [
|
||||
u' <tr>',
|
||||
u' <td class="list_head">Titre</td>',
|
||||
u' <td class="list_head">Début</td>',
|
||||
u' <td class="list_head">Début</td>',
|
||||
u' <td class="list_head">Fin</td>',
|
||||
u' <td class="list_head">Fréquence</td>',
|
||||
u' <td class="list_head">Fréquence</td>',
|
||||
u' <td class="list_head">Label</td>',
|
||||
u' <td class="list_head">Description</td>',
|
||||
u' <td class="list_head">Page source</td>',
|
||||
|
@ -914,7 +914,7 @@ def showupcomingeventlist():
|
|||
html_list_table = [
|
||||
u'\r\n<div id="eventlist">',
|
||||
u'<table class="eventlist">',
|
||||
u'<tr><td colspan="7" class="list_entry" style="border-width: 0px;"><b>Évènement à venir: %s ~ %s</b><p><br><p></td></tr>' % (datefrom, dateto),
|
||||
u'<tr><td colspan="7" class="list_entry" style="border-width: 0px;"><b>Évènement à venir: %s ~ %s</b><p><br><p></td></tr>' % (datefrom, dateto),
|
||||
u'%s' % html_list_header,
|
||||
u'%s' % html_event_rows,
|
||||
u'</table>',
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#! /usr/bin/env python
|
||||
# -*- encoding: iso-8859-1 -*-
|
||||
# -*- encoding: utf-8 -*-
|
||||
|
||||
# Génération d'un fichier XML indiquant le status des bornes
|
||||
# Génération d'un fichier XML indiquant le status des bornes
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
@ -16,18 +16,18 @@ def execute(macro, text):
|
|||
#os.putenv("http_proxy", "http://proxy.crans.org:3128")
|
||||
status=xml.dom.minidom.parseString(urllib2.urlopen("https://wifi.crans.org/status.xml").read())
|
||||
except:
|
||||
return f.text(u"Impossible d'accéder aux informations des bornes")
|
||||
return f.text(u"Impossible d'accéder aux informations des bornes")
|
||||
|
||||
# On récupère l'ensemble des bornes
|
||||
# On récupère l'ensemble des bornes
|
||||
bornes = status.childNodes[0]
|
||||
code = f.text(u"Mise à jour le "+bornes.getAttribute("date"))
|
||||
code = f.text(u"Mise à jour le "+bornes.getAttribute("date"))
|
||||
code += f.linebreak(0)
|
||||
|
||||
code += f.table(True, {'tablealign': 'center'})
|
||||
|
||||
code += f.table_row(True, {'rowbgcolor': '#FFFFA0'})
|
||||
for nom_col in (u"Nom", u"Hotspot", u"État", u"Localisation", u"Clients",
|
||||
u"MAC", u"Canal", u"Uptime", u"°E", u"°N"):
|
||||
for nom_col in (u"Nom", u"Hotspot", u"État", u"Localisation", u"Clients",
|
||||
u"MAC", u"Canal", u"Uptime", u"°E", u"°N"):
|
||||
code += f.table_cell(True)
|
||||
code += f.strong(True)
|
||||
code += f.text(nom_col)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# -*- coding: iso-8859-1 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os, sys, commands, time
|
||||
|
||||
"""
|
||||
Permet d'intégrer au wiki les résultats de Monit.
|
||||
Permet d'intégrer au wiki les résultats de Monit.
|
||||
|
||||
La macro wiki est :
|
||||
[[MonitStatus(hotes=host,categories=[All|Process|File],services=[All|Off|On])]]
|
||||
|
@ -27,7 +27,7 @@ def NotRunningHosts() :
|
|||
|
||||
def HostStatus (host) :
|
||||
"""
|
||||
Retourne un dictionnaire représentation de l'état des services de
|
||||
Retourne un dictionnaire représentation de l'état des services de
|
||||
la machine.
|
||||
"""
|
||||
|
||||
|
@ -46,7 +46,7 @@ def HostStatus (host) :
|
|||
# ligne vide, on passe au service suivant
|
||||
s = None
|
||||
elif not s :
|
||||
# création d'un nouveau service
|
||||
# création d'un nouveau service
|
||||
s = line.split(' ')[1][1:-1]
|
||||
t = line.split(' ')[0]
|
||||
# ajout du type s'il n'est pas dedans
|
||||
|
@ -54,10 +54,10 @@ def HostStatus (host) :
|
|||
status[t] = {}
|
||||
status[t][s] = {}
|
||||
else :
|
||||
# on ajoute les données
|
||||
# on ajoute les données
|
||||
status[t][s][line[:34].strip()] = line[34:].strip()
|
||||
|
||||
# on supprime les données system
|
||||
# on supprime les données system
|
||||
try :
|
||||
status.pop('System')
|
||||
except :
|
||||
|
@ -83,7 +83,7 @@ def AllStatusOff () :
|
|||
|
||||
for h in status.keys() :
|
||||
|
||||
# si c'est un host qui est down, on le laisse tel quel pour éviter qu'il le supprime
|
||||
# si c'est un host qui est down, on le laisse tel quel pour éviter qu'il le supprime
|
||||
if h in NotRunningHosts() :
|
||||
continue
|
||||
|
||||
|
@ -111,7 +111,7 @@ def FormatService(Type, Service, Data, f) :
|
|||
Retourne le code HTML d'un sercice
|
||||
Type : type de service
|
||||
Service : Nom du service
|
||||
Data : dictionnaire contenant toutes les données Data[info]
|
||||
Data : dictionnaire contenant toutes les données Data[info]
|
||||
f : formatter
|
||||
"""
|
||||
|
||||
|
@ -139,7 +139,7 @@ def FormatType(Type, Data, f) :
|
|||
"""
|
||||
Retourne le code HTML d'une liste de services
|
||||
Host : nom de l'hote
|
||||
Data : dictionnaire contenant toutes les données Data[service][info]
|
||||
Data : dictionnaire contenant toutes les données Data[service][info]
|
||||
f : formatter
|
||||
"""
|
||||
|
||||
|
@ -160,9 +160,9 @@ def FormatType(Type, Data, f) :
|
|||
|
||||
def FormatHost (Host, Data, f) :
|
||||
"""
|
||||
Retourne le code HTML d'un hôte
|
||||
Retourne le code HTML d'un hôte
|
||||
Host : nom de l'hote
|
||||
Data : dictionnaire contenant toutes les données Data[type][service][info]
|
||||
Data : dictionnaire contenant toutes les données Data[type][service][info]
|
||||
f : formatter
|
||||
"""
|
||||
|
||||
|
@ -195,7 +195,7 @@ def FormatHost (Host, Data, f) :
|
|||
def FormatHosts(Data, f) :
|
||||
"""
|
||||
Retourne le code HTML de tous les hotes fournis
|
||||
Data : dictionnaire contenant toutes les données Data[hote][type][service][info]
|
||||
Data : dictionnaire contenant toutes les données Data[hote][type][service][info]
|
||||
f : formatter
|
||||
"""
|
||||
|
||||
|
@ -208,7 +208,7 @@ def FormatHosts(Data, f) :
|
|||
|
||||
def Cellule(texte, couleur, f) :
|
||||
"""
|
||||
Retourne le code HTML d'une cellule formattée aver le formatter f
|
||||
Retourne le code HTML d'une cellule formattée aver le formatter f
|
||||
"""
|
||||
code = f.table(1)
|
||||
code += f.table_row(1)
|
||||
|
@ -238,7 +238,7 @@ def execute(macro, filtre) :
|
|||
return FormatHosts(status, f)
|
||||
else :
|
||||
# aucun service off, on affiche OK
|
||||
return Cellule(u'Tous les services semblent opérationnels.','lime',f)
|
||||
return Cellule(u'Tous les services semblent opérationnels.','lime',f)
|
||||
|
||||
elif filtre == 'all' :
|
||||
# tous les services
|
||||
|
@ -259,13 +259,13 @@ def execute(macro, filtre) :
|
|||
s = status[t][service]
|
||||
|
||||
if not s :
|
||||
# service non trouvé
|
||||
# service non trouvé
|
||||
code = f.table_cell(0)
|
||||
code += f.table_cell(1,{'style':'background-color:yellow'})
|
||||
code += f.text(u'Service introuvable')
|
||||
return code
|
||||
|
||||
# création de la chaine de retour
|
||||
# création de la chaine de retour
|
||||
code = f.table_cell(0)
|
||||
if s['status'].lower() in ['running','accessible'] :
|
||||
code += f.table_cell(1,{'style':'background-color:lime'})
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# -*- encoding: iso-8859-1 -*-
|
||||
# -*- encoding: utf-8 -*-
|
||||
|
||||
import os
|
||||
|
||||
|
@ -45,7 +45,7 @@ class AccountList:
|
|||
return html
|
||||
|
||||
class Account:
|
||||
"""Classe représentant la page perso d'une personne"""
|
||||
"""Classe représentant la page perso d'une personne"""
|
||||
|
||||
def __init__(self, home, login, www, url):
|
||||
"""Instanciation avec le `login' de la personne"""
|
||||
|
@ -83,7 +83,7 @@ class Account:
|
|||
def logo(self):
|
||||
"""URL du logo s'il y en a un"""
|
||||
if self.info("logo"):
|
||||
# Le logo peut être en absolu ou en relatif
|
||||
# Le logo peut être en absolu ou en relatif
|
||||
if self.info("logo").startswith(self.chemin()):
|
||||
logo = self.info("logo").replace("%s/" % self.chemin(), "")
|
||||
else:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# -*- coding: iso-8859-1 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
MoinMoin - RandomIncludeQuote macro
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
|||
|
||||
for detailed docs.
|
||||
|
||||
@copyright: 2000-2004 by Jürgen Hermann <jh@web.de>
|
||||
@copyright: 2000-2004 by Jürgen Hermann <jh@web.de>
|
||||
@copyright: 2000-2001 by Richard Jones <richard@bizarsoftware.com.au>
|
||||
@license: GNU GPL, see COPYING for details.
|
||||
"""
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# -*- coding: iso-8859-1 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
MoinMoin - RandomQuote Macro
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
|||
It will look for list delimiters on the page in question.
|
||||
It will ignore anything that is not in an "*" list.
|
||||
|
||||
@copyright: 2002-2004 by Jürgen Hermann <jh@web.de>
|
||||
@copyright: 2002-2004 by Jürgen Hermann <jh@web.de>
|
||||
@license: GNU GPL, see COPYING for details.
|
||||
|
||||
Originally written by Thomas Waldmann.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue