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
|
case "$1" in
|
||||||
start)
|
start)
|
||||||
echo -n "Démarrage de $NAME"
|
echo -n "Démarrage de $NAME"
|
||||||
/sbin/start-stop-daemon --start --quiet --pidfile $PIDF --exec $BIN $ARGS
|
/sbin/start-stop-daemon --start --quiet --pidfile $PIDF --exec $BIN $ARGS
|
||||||
echo "."
|
echo "."
|
||||||
;;
|
;;
|
||||||
stop)
|
stop)
|
||||||
echo -n "Arrêt de $NAME"
|
echo -n "Arrêt de $NAME"
|
||||||
/sbin/start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDF
|
/sbin/start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDF
|
||||||
echo "."
|
echo "."
|
||||||
;;
|
;;
|
||||||
|
|
||||||
restart)
|
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
|
/sbin/start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDF
|
||||||
/bin/sleep 1
|
/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
|
/sbin/start-stop-daemon --start --quiet --pidfile $PIDF --exec $BIN $ARGS
|
||||||
echo "."
|
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
|
-- 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
|
-- 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
|
-- createdb -O crans filtrage
|
||||||
-- exécuter en tant qu'utilisateur :
|
-- exécuter en tant qu'utilisateur :
|
||||||
-- psql filtrage -U crans < filtrage.sql
|
-- psql filtrage -U crans < filtrage.sql
|
||||||
|
|
||||||
|
|
||||||
BEGIN;
|
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 (
|
CREATE TABLE protocole (
|
||||||
id integer NOT NULL,
|
id integer NOT NULL,
|
||||||
nom text NOT NULL,
|
nom text NOT NULL,
|
||||||
CONSTRAINT id_protocole PRIMARY KEY (id));
|
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 (
|
CREATE TABLE protocole_p2p (
|
||||||
id_p2p serial NOT NULL,
|
id_p2p serial NOT NULL,
|
||||||
nom text NOT NULL,
|
nom text NOT NULL,
|
||||||
|
@ -103,19 +103,19 @@ CREATE TABLE flood (
|
||||||
date timestamp NOT NULL,
|
date timestamp NOT NULL,
|
||||||
ip_crans inet NOT NULL);
|
ip_crans inet NOT NULL);
|
||||||
|
|
||||||
-- Table des infectes
|
-- Table des seedeurs
|
||||||
CREATE TABLE avertis_p2p (
|
CREATE TABLE avertis_p2p (
|
||||||
date timestamp NOT NULL,
|
date timestamp NOT NULL,
|
||||||
ip_crans inet NOT NULL,
|
ip_crans inet NOT NULL,
|
||||||
protocole text NOT NULL);
|
protocole text NOT NULL);
|
||||||
|
|
||||||
-- Table des sanctionnés pour upload :
|
-- Table des sanctionnés pour upload :
|
||||||
CREATE TABLE sanctions (
|
CREATE TABLE sanctions (
|
||||||
date timestamp NOT NULL,
|
date timestamp NOT NULL,
|
||||||
ip_crans inet NOT NULL,
|
ip_crans inet NOT NULL,
|
||||||
upload bigint NOT NULL);
|
upload bigint NOT NULL);
|
||||||
|
|
||||||
-- Table des exemptés :
|
-- Table des exemptés :
|
||||||
CREATE TABLE exemptes (
|
CREATE TABLE exemptes (
|
||||||
ip_crans inet NOT NULL,
|
ip_crans inet NOT NULL,
|
||||||
ip_dest inet NOT NULL);
|
ip_dest inet NOT NULL);
|
||||||
|
@ -180,7 +180,7 @@ CREATE TABLE flood (
|
||||||
INSERT INTO protocole_p2p (nom) VALUES ('GNUtella');
|
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 date_virus_idx ON virus (date);
|
||||||
CREATE INDEX ip_src_virux_idx ON virus (ip_src);
|
CREATE INDEX ip_src_virux_idx ON virus (ip_src);
|
||||||
CREATE INDEX id_virus_idx ON virus (id);
|
CREATE INDEX id_virus_idx ON virus (id);
|
||||||
|
|
|
@ -6,21 +6,21 @@ exit 0
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
start)
|
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
|
start-stop-daemon --start --quiet --background --make-pidfile --pidfile /var/run/filtrage_netacct.pid --exec /usr/scripts/surveillance/filtrage_netacct.py
|
||||||
echo "."
|
echo "."
|
||||||
;;
|
;;
|
||||||
stop)
|
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
|
start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile /var/run/filtrage_netacct.pid
|
||||||
echo "."
|
echo "."
|
||||||
;;
|
;;
|
||||||
|
|
||||||
restart)
|
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
|
start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile /var/run/filtrage_netacct.pid
|
||||||
sleep 1
|
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
|
start-stop-daemon --start --quiet --background --make-pidfile --pidfile /var/run/filtrage_netacct.pid --exec /usr/scripts/surveillance/filtrage_netacct.py
|
||||||
echo "."
|
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
|
-- effacement des vieux enregistrements
|
||||||
DELETE FROM upload where date< timestamp 'now' - interval '2 days';
|
DELETE FROM upload where date< timestamp 'now' - interval '2 days';
|
||||||
|
|
||||||
-- suppression complète des entrées
|
-- suppression complète des entrées
|
||||||
VACUUM;
|
VACUUM;
|
||||||
|
|
||||||
-- réindexation des tables
|
-- réindexation des tables
|
||||||
REINDEX TABLE upload;
|
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
|
-- effacement des vieux enregistrements
|
||||||
DELETE FROM upload where date< timestamp 'now' - interval '5 days';
|
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';
|
DELETE FROM upload6 WHERE date< timestamp 'now' - interval '5 days';
|
||||||
-- On ne blackliste plus pour virus, on droppe seulement
|
-- On ne blackliste plus pour virus, on droppe seulement
|
||||||
-- DELETE FROM virus where date< timestamp 'now' - interval '2 days';
|
-- DELETE FROM virus where date< timestamp 'now' - interval '2 days';
|
||||||
-- Idem pour flood
|
-- Idem pour flood
|
||||||
-- DELETE FROM flood where date< timestamp 'now' - interval '2 days';
|
-- DELETE FROM flood where date< timestamp 'now' - interval '2 days';
|
||||||
|
|
||||||
-- suppression complète des entrées
|
-- suppression complète des entrées
|
||||||
VACUUM;
|
VACUUM;
|
||||||
|
|
||||||
-- réindexation des tables
|
-- réindexation des tables
|
||||||
REINDEX TABLE upload;
|
REINDEX TABLE upload;
|
||||||
REINDEX TABLE upload6;
|
REINDEX TABLE upload6;
|
||||||
-- REINDEX TABLE virus;
|
-- REINDEX TABLE virus;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# $Id: monit-ovh,v 1.1 2007/05/26 01:17:37 dimino Exp $
|
# $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
|
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#! /usr/bin/env python
|
#! /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
|
debug = 1
|
||||||
|
|
||||||
import os,sys
|
import os,sys
|
||||||
|
@ -19,9 +19,9 @@ for i in range(5):
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
# On définit ici une liste d'adresse mail qui ne sont pas à prévenir
|
# 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
|
# à utiliser par exemple si on a commencé à prévenir des adhérents mais que
|
||||||
# tous ne l'ont pas été
|
# tous ne l'ont pas été
|
||||||
try :
|
try :
|
||||||
exempts = []
|
exempts = []
|
||||||
file = open('/home/salles/mails_envoyes',"r")
|
file = open('/home/salles/mails_envoyes',"r")
|
||||||
|
@ -33,25 +33,25 @@ try :
|
||||||
except :
|
except :
|
||||||
print "Aucune exemption d'adresses mails ne sera prise en compte"
|
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
|
# 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
|
# Dans le cas du 11/09/2007, les mails perdus étaient identifiables avec
|
||||||
# le message "too many hops"
|
# 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
|
# 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>
|
# Mois Jour Heure <emetteur@adresse.mail> -> <recepteur@adresse.mail.2>
|
||||||
file = open('/home/salles/mails_perdus',"r")
|
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 :
|
# 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
|
#partis vers leur destinataire
|
||||||
unsend = {}
|
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 = {}
|
unreceived = {}
|
||||||
|
|
||||||
def is_crans(mail) :
|
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
|
# Je remarque que les adresses de clubs et de mailings-listes ne sont
|
||||||
# pas pris en compte @lists.crans.
|
# pas pris en compte @lists.crans.
|
||||||
if mail.find('@crans.') > 0 :
|
if mail.find('@crans.') > 0 :
|
||||||
|
@ -61,16 +61,16 @@ def is_crans(mail) :
|
||||||
|
|
||||||
|
|
||||||
def append(dict, chain, value, date) :
|
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.
|
dictionnaires.
|
||||||
Les dictionnaires ont pour clés l'adresse mail d'un adhérent aux quelles
|
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']
|
sont associés une liste des mails perdus sur la forme ['adresse_mail2', 'date']
|
||||||
"""
|
"""
|
||||||
if not dict.has_key(chain) :
|
if not dict.has_key(chain) :
|
||||||
# Si la clé n'existe pas : initialisation
|
# Si la clé n'existe pas : initialisation
|
||||||
dict[chain] = [ [value, date] ]
|
dict[chain] = [ [value, date] ]
|
||||||
else :
|
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])
|
dict[chain].append([value, date])
|
||||||
|
|
||||||
# On traite maintenant la liste des mails perdus
|
# On traite maintenant la liste des mails perdus
|
||||||
|
@ -78,9 +78,9 @@ line = file.readline()
|
||||||
# Pour chaque mail perdu
|
# Pour chaque mail perdu
|
||||||
while line:
|
while line:
|
||||||
datas = line.split()
|
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(",")
|
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(",")
|
receivers = datas[5].split(",")
|
||||||
# On tente d'enlever les adresses nulles de ces 2 listes
|
# On tente d'enlever les adresses nulles de ces 2 listes
|
||||||
try :
|
try :
|
||||||
|
@ -95,7 +95,7 @@ while line:
|
||||||
# On reformate le champ date en inversant Jour et Mois
|
# On reformate le champ date en inversant Jour et Mois
|
||||||
date = u"%s %s %s" % (datas[1], datas[0], datas[2])
|
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 sender in senders :
|
||||||
for receiver in receivers :
|
for receiver in receivers :
|
||||||
# L'expediteur et le receveur sont du crans ?
|
# L'expediteur et le receveur sont du crans ?
|
||||||
|
@ -109,14 +109,14 @@ while line:
|
||||||
if is_crans(receiver) and not is_crans(sender) :
|
if is_crans(receiver) and not is_crans(sender) :
|
||||||
append(unreceived, receiver, sender, date)
|
append(unreceived, receiver, sender, date)
|
||||||
|
|
||||||
# On passe à la ligne suivante
|
# On passe à la ligne suivante
|
||||||
line = file.readline()
|
line = file.readline()
|
||||||
|
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
|
|
||||||
# On traite le formatage des mails pour indiquer aux adhérents les
|
# On traite le formatage des mails pour indiquer aux adhérents les
|
||||||
# mails qui ne leur ont pas été délivrés
|
# mails qui ne leur ont pas été délivrés
|
||||||
for adh in unreceived.keys() :
|
for adh in unreceived.keys() :
|
||||||
text = u"""From: CRANS (Nounous) <nounous@crans.org>
|
text = u"""From: CRANS (Nounous) <nounous@crans.org>
|
||||||
To: %s
|
To: %s
|
||||||
|
@ -125,30 +125,30 @@ Content-Type: text/plain; charset="iso-8859-15"
|
||||||
|
|
||||||
Bonjour,
|
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 ayons égaré des
|
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
|
messages te concernant dans la période allant du lundi 10/09/2007
|
||||||
23h00 à ce mardi 11/09/2007 9h50.
|
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
|
recevoir et/ou envoyer.\n""" % adh
|
||||||
for unrecv in unreceived[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
|
text += u"""Nous te conseillons de contacter les personnes qui figurent dans
|
||||||
cette liste si tu souhaites recevoir leur message, car elles n'ont
|
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
|
# voulu envoyer qui se seraient aussi perdus
|
||||||
if unsend.has_key(adh) :
|
if unsend.has_key(adh) :
|
||||||
text += u"""
|
text += u"""
|
||||||
"""
|
"""
|
||||||
for unsnd in unsend[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
|
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
|
déjà le cas, il te faut les réexpédier si tu souhaites que tes
|
||||||
destinataires les reçoivent.
|
destinataires les reçoivent.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
text += u"""
|
text += u"""
|
||||||
|
@ -167,8 +167,8 @@ Les nounous du CRANS"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
# Le message est légèrement différent dans le cas où l'adhérent n'a perdu
|
# Le message est légèrement différent dans le cas où l'adhérent n'a perdu
|
||||||
# des mails qu'à l'envoi.
|
# des mails qu'à l'envoi.
|
||||||
for adh in unsend.keys() :
|
for adh in unsend.keys() :
|
||||||
if not unreceived.has_key(adh) :
|
if not unreceived.has_key(adh) :
|
||||||
text = u"""From: CRANS (Nounous) <nounous@crans.org>
|
text = u"""From: CRANS (Nounous) <nounous@crans.org>
|
||||||
|
@ -178,20 +178,20 @@ Content-Type: text/plain; charset="iso-8859-15"
|
||||||
|
|
||||||
Bonjour,
|
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
|
de l'association, il est fort probable que nous n'ayons pas pu
|
||||||
transmettre certains de tes messages dans la période allant du
|
transmettre certains de tes messages dans la période allant du
|
||||||
lundi 10/09/2007 23h00 à ce mardi 11/09/2007 9h50.
|
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
|
pas pu envoyer.\n""" % adh
|
||||||
|
|
||||||
for unsnd in unsend[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
|
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
|
pas déjà le cas, il te faut les réexpédier si tu souhaites que tes
|
||||||
destinataires les reçoivent.
|
destinataires les reçoivent.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
text += u"""
|
text += u"""
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#!/bin/sh
|
#!/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
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -14,9 +14,9 @@ set -e
|
||||||
echo -n "Sauvegarde en cours vers $BACKUP... "
|
echo -n "Sauvegarde en cours vers $BACKUP... "
|
||||||
test ! -a $BACKUP
|
test ! -a $BACKUP
|
||||||
cp -a $MAIL $BACKUP
|
cp -a $MAIL $BACKUP
|
||||||
# On évite l'* qui risque de donner trop d'arguments
|
# 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
|
# 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
|
# droits pour le recréer avec les mêmes permissions
|
||||||
find $MAIL/{cur,tmp,new} -type f -print0 | xargs -0 rm -f || true
|
find $MAIL/{cur,tmp,new} -type f -print0 | xargs -0 rm -f || true
|
||||||
find $BACKUP -type f | xargs chmod 600
|
find $BACKUP -type f | xargs chmod 600
|
||||||
find $BACKUP -type d | xargs chmod 700
|
find $BACKUP -type d | xargs chmod 700
|
||||||
|
|
|
@ -11,7 +11,7 @@ import annuaires_pg
|
||||||
from iptools import AddrInNet
|
from iptools import AddrInNet
|
||||||
def chap_ok(password, challenge, clear_pass) :
|
def chap_ok(password, challenge, clear_pass) :
|
||||||
""" Test l'authentification chap fournie
|
""" 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)
|
en hexa (avec ou sans le 0x devant)
|
||||||
|
|
||||||
retourne True si l'authentification est OK
|
retourne True si l'authentification est OK
|
||||||
|
@ -31,39 +31,39 @@ def paiement_ok(adh):
|
||||||
paid = max(adh.paiement() + [0])
|
paid = max(adh.paiement() + [0])
|
||||||
if periode_transitoire:
|
if periode_transitoire:
|
||||||
# Si periode transitoire, on accepte les personnes n'ayant pas
|
# Si periode transitoire, on accepte les personnes n'ayant pas
|
||||||
# réadhéré
|
# réadhéré
|
||||||
ann_scol -= 1
|
ann_scol -= 1
|
||||||
return ann_scol <= paid
|
return ann_scol <= paid
|
||||||
|
|
||||||
def do_auth(mac, prise):
|
def do_auth(mac, prise):
|
||||||
"""Effectue l'authentification. Renvoie (success, msg,
|
"""Effectue l'authentification. Renvoie (success, msg,
|
||||||
vlan). success est 0 si l'authentification est réussie, msg est
|
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
|
pour les logs et vlan est le vlan non taggé à utiliser pour la
|
||||||
prise."""
|
prise."""
|
||||||
|
|
||||||
global ann_scol
|
global ann_scol
|
||||||
|
|
||||||
# Test chap (comme cela on est sur que c'est bien un switch qui demande)
|
# 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):
|
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
|
# Mac dans la base LDAP
|
||||||
conn = crans_ldap(readonly=True)
|
conn = crans_ldap(readonly=True)
|
||||||
m = conn.search('mac=%s' % mac)['machine']
|
m = conn.search('mac=%s' % mac)['machine']
|
||||||
if len(m) == 0:
|
if len(m) == 0:
|
||||||
# Est-ce un ancien client de l'offre Crous ?
|
# 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)
|
# (uniquement en attendant qu'il soit inscrit proprement)
|
||||||
for chbre in annuaires_pg.reverse(prise[0], prise[1:]):
|
for chbre in annuaires_pg.reverse(prise[0], prise[1:]):
|
||||||
if not annuaires_pg.is_crans(prise[0], chbre):
|
if not annuaires_pg.is_crans(prise[0], chbre):
|
||||||
return (0, "TMP: ancien client CROUS", 'event')
|
return (0, "TMP: ancien client CROUS", 'event')
|
||||||
return (0, "Mac inconnue", "accueil")
|
return (0, "Mac inconnue", "accueil")
|
||||||
elif len(m) > 1:
|
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
|
# N'appartient pas au Crans et n'a pas de prise attribuée
|
||||||
# donc sur uplink ou switch non filtré
|
# donc sur uplink ou switch non filtré
|
||||||
# But : éviter le spoof d'une mac d'une machine clef
|
# But : éviter le spoof d'une mac d'une machine clef
|
||||||
proprio = m[0].proprietaire()
|
proprio = m[0].proprietaire()
|
||||||
if proprio.__class__ == AssociationCrans:
|
if proprio.__class__ == AssociationCrans:
|
||||||
return (-1, "Machine du crans", "")
|
return (-1, "Machine du crans", "")
|
||||||
|
@ -72,7 +72,7 @@ def do_auth(mac, prise):
|
||||||
if 'bloq' in m[0].blacklist_actif():
|
if 'bloq' in m[0].blacklist_actif():
|
||||||
return (-1, "Bloquage total des services pour cette machine", "")
|
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()
|
if ('virus' in m[0].blacklist_actif() or 'ipv6_ra' in m[0].blacklist_actif()
|
||||||
or 'autodisc_virus' in m[0].blacklist_actif()):
|
or 'autodisc_virus' in m[0].blacklist_actif()):
|
||||||
return (0, "Bad boy", "isolement")
|
return (0, "Bad boy", "isolement")
|
||||||
|
@ -82,10 +82,10 @@ def do_auth(mac, prise):
|
||||||
|
|
||||||
# Paiement proprio ?
|
# Paiement proprio ?
|
||||||
if not paiement_ok(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
|
# Si l'adhérent n'est pas membre actif, il doit se brancher depuis la prise
|
||||||
# d'un autre adhérent à jour de cotisation
|
# d'un autre adhérent à jour de cotisation
|
||||||
if not proprio.droits():
|
if not proprio.droits():
|
||||||
try:
|
try:
|
||||||
chbre = prise[0] + annuaires_pg.reverse(prise[0], prise[1:])[0]
|
chbre = prise[0] + annuaires_pg.reverse(prise[0], prise[1:])[0]
|
||||||
|
@ -96,15 +96,15 @@ def do_auth(mac, prise):
|
||||||
if paiement_ok(hebergeur):
|
if paiement_ok(hebergeur):
|
||||||
break
|
break
|
||||||
else:
|
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
|
if (proprio.etudes(0) == 'Personnel ENS' or
|
||||||
('Nounou' in proprio.droits() and AddrInNet(m[0].ip(),'10.2.9.0/24'))):
|
('Nounou' in proprio.droits() and AddrInNet(m[0].ip(),'10.2.9.0/24'))):
|
||||||
return (0, "Personnel ENS", "appts")
|
return (0, "Personnel ENS", "appts")
|
||||||
|
|
||||||
# C'est bon
|
# C'est bon
|
||||||
return (0, "Accès adhérent OK", "adherent")
|
return (0, "Accès adhérent OK", "adherent")
|
||||||
|
|
||||||
if __name__ == '__main__' :
|
if __name__ == '__main__' :
|
||||||
mac = os.getenv('USER_NAME', '').replace('"', '')
|
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 = (len(switch) == 6 and (switch[3] + switch[5]) or (switch + "-"))
|
||||||
prise += "%02d" % int(os.getenv("NAS_PORT", 0))
|
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)
|
(r, msg, vlan) = do_auth(mac, prise)
|
||||||
|
|
||||||
# On logue la prise sur laquelle a lieu la tentative
|
# On logue la prise sur laquelle a lieu la tentative
|
||||||
|
@ -120,13 +120,13 @@ if __name__ == '__main__' :
|
||||||
syslog("%s -> %s [%s]" % (prise, mac, msg))
|
syslog("%s -> %s [%s]" % (prise, mac, msg))
|
||||||
|
|
||||||
if vlan:
|
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
|
# pour cette prise
|
||||||
print ", ".join(["Tunnel-Type = VLAN",
|
print ", ".join(["Tunnel-Type = VLAN",
|
||||||
"Tunnel-Medium-Type = IEEE-802",
|
"Tunnel-Medium-Type = IEEE-802",
|
||||||
"Tunnel-Private-Group-Id = \"%d\"" % vlans[vlan]])
|
"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:
|
try:
|
||||||
f = open('/usr/scripts/var/last_macs/' + prise,'w')
|
f = open('/usr/scripts/var/last_macs/' + prise,'w')
|
||||||
f.write(mac)
|
f.write(mac)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# -*- coding: iso-8859-1 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
sys.path.append('/usr/scripts/secours')
|
sys.path.append('/usr/scripts/secours')
|
||||||
|
@ -6,7 +6,7 @@ import secours
|
||||||
|
|
||||||
def Cellule(texte, couleur, 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(1)
|
||||||
code += f.table_row(1)
|
code += f.table_row(1)
|
||||||
|
@ -25,4 +25,4 @@ def execute(macro, text) :
|
||||||
else :
|
else :
|
||||||
return Cellule('Nous sommes actuellement en connexion de secours.','red',macro.formatter)
|
return Cellule('Nous sommes actuellement en connexion de secours.','red',macro.formatter)
|
||||||
except :
|
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
|
EventCalendar.py Version 0.99a July 22, 2009
|
||||||
|
|
||||||
|
@ -462,7 +462,7 @@ def setglobalvalues(macro):
|
||||||
Globs.pagepath = formatter.page.getPagePath()
|
Globs.pagepath = formatter.page.getPagePath()
|
||||||
|
|
||||||
# european / US differences
|
# 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
|
# Set things up for Monday or Sunday as the first day of the week
|
||||||
if calendar.firstweekday() == calendar.MONDAY:
|
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']))
|
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
|
# 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
|
# Monthly View
|
||||||
mnu_monthview = u'<a href="%s?calaction=monthly%s" title="Vue du mois">[Mois]</a>' % (page_url, getquerystring(['caldate', 'numcal']) )
|
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']) )
|
mnu_simpleview = u'<a href="%s?calaction=simple%s" title="Simple calendrier">[Simple]</a>' % (page_url, getquerystring(['caldate', 'numcal']) )
|
||||||
|
|
||||||
# Upcoming Event List
|
# 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
|
# Daily View
|
||||||
mnu_dayview = u'<a href="%s?calaction=daily%s" title="Vue du jour">[Jour]</a>' % (page_url, getquerystring(['caldate', 'numcal']) )
|
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 = [
|
html = [
|
||||||
u' <tr>',
|
u' <tr>',
|
||||||
u' <td class="list_head">Titre</td>',
|
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">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">Label</td>',
|
||||||
u' <td class="list_head">Description</td>',
|
u' <td class="list_head">Description</td>',
|
||||||
u' <td class="list_head">Page source</td>',
|
u' <td class="list_head">Page source</td>',
|
||||||
|
@ -914,7 +914,7 @@ def showupcomingeventlist():
|
||||||
html_list_table = [
|
html_list_table = [
|
||||||
u'\r\n<div id="eventlist">',
|
u'\r\n<div id="eventlist">',
|
||||||
u'<table class="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_list_header,
|
||||||
u'%s' % html_event_rows,
|
u'%s' % html_event_rows,
|
||||||
u'</table>',
|
u'</table>',
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#! /usr/bin/env python
|
#! /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 sys
|
||||||
import os
|
import os
|
||||||
|
@ -16,18 +16,18 @@ def execute(macro, text):
|
||||||
#os.putenv("http_proxy", "http://proxy.crans.org:3128")
|
#os.putenv("http_proxy", "http://proxy.crans.org:3128")
|
||||||
status=xml.dom.minidom.parseString(urllib2.urlopen("https://wifi.crans.org/status.xml").read())
|
status=xml.dom.minidom.parseString(urllib2.urlopen("https://wifi.crans.org/status.xml").read())
|
||||||
except:
|
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]
|
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.linebreak(0)
|
||||||
|
|
||||||
code += f.table(True, {'tablealign': 'center'})
|
code += f.table(True, {'tablealign': 'center'})
|
||||||
|
|
||||||
code += f.table_row(True, {'rowbgcolor': '#FFFFA0'})
|
code += f.table_row(True, {'rowbgcolor': '#FFFFA0'})
|
||||||
for nom_col in (u"Nom", u"Hotspot", u"État", u"Localisation", u"Clients",
|
for nom_col in (u"Nom", u"Hotspot", u"État", u"Localisation", u"Clients",
|
||||||
u"MAC", u"Canal", u"Uptime", u"°E", u"°N"):
|
u"MAC", u"Canal", u"Uptime", u"°E", u"°N"):
|
||||||
code += f.table_cell(True)
|
code += f.table_cell(True)
|
||||||
code += f.strong(True)
|
code += f.strong(True)
|
||||||
code += f.text(nom_col)
|
code += f.text(nom_col)
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
# -*- coding: iso-8859-1 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import os, sys, commands, time
|
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 :
|
La macro wiki est :
|
||||||
[[MonitStatus(hotes=host,categories=[All|Process|File],services=[All|Off|On])]]
|
[[MonitStatus(hotes=host,categories=[All|Process|File],services=[All|Off|On])]]
|
||||||
|
@ -27,7 +27,7 @@ def NotRunningHosts() :
|
||||||
|
|
||||||
def HostStatus (host) :
|
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.
|
la machine.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ def HostStatus (host) :
|
||||||
# ligne vide, on passe au service suivant
|
# ligne vide, on passe au service suivant
|
||||||
s = None
|
s = None
|
||||||
elif not s :
|
elif not s :
|
||||||
# création d'un nouveau service
|
# création d'un nouveau service
|
||||||
s = line.split(' ')[1][1:-1]
|
s = line.split(' ')[1][1:-1]
|
||||||
t = line.split(' ')[0]
|
t = line.split(' ')[0]
|
||||||
# ajout du type s'il n'est pas dedans
|
# ajout du type s'il n'est pas dedans
|
||||||
|
@ -54,10 +54,10 @@ def HostStatus (host) :
|
||||||
status[t] = {}
|
status[t] = {}
|
||||||
status[t][s] = {}
|
status[t][s] = {}
|
||||||
else :
|
else :
|
||||||
# on ajoute les données
|
# on ajoute les données
|
||||||
status[t][s][line[:34].strip()] = line[34:].strip()
|
status[t][s][line[:34].strip()] = line[34:].strip()
|
||||||
|
|
||||||
# on supprime les données system
|
# on supprime les données system
|
||||||
try :
|
try :
|
||||||
status.pop('System')
|
status.pop('System')
|
||||||
except :
|
except :
|
||||||
|
@ -83,7 +83,7 @@ def AllStatusOff () :
|
||||||
|
|
||||||
for h in status.keys() :
|
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() :
|
if h in NotRunningHosts() :
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ def FormatService(Type, Service, Data, f) :
|
||||||
Retourne le code HTML d'un sercice
|
Retourne le code HTML d'un sercice
|
||||||
Type : type de service
|
Type : type de service
|
||||||
Service : Nom du 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
|
f : formatter
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ def FormatType(Type, Data, f) :
|
||||||
"""
|
"""
|
||||||
Retourne le code HTML d'une liste de services
|
Retourne le code HTML d'une liste de services
|
||||||
Host : nom de l'hote
|
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
|
f : formatter
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -160,9 +160,9 @@ def FormatType(Type, Data, f) :
|
||||||
|
|
||||||
def FormatHost (Host, 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
|
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
|
f : formatter
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@ def FormatHost (Host, Data, f) :
|
||||||
def FormatHosts(Data, f) :
|
def FormatHosts(Data, f) :
|
||||||
"""
|
"""
|
||||||
Retourne le code HTML de tous les hotes fournis
|
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
|
f : formatter
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -208,7 +208,7 @@ def FormatHosts(Data, f) :
|
||||||
|
|
||||||
def Cellule(texte, couleur, 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(1)
|
||||||
code += f.table_row(1)
|
code += f.table_row(1)
|
||||||
|
@ -238,7 +238,7 @@ def execute(macro, filtre) :
|
||||||
return FormatHosts(status, f)
|
return FormatHosts(status, f)
|
||||||
else :
|
else :
|
||||||
# aucun service off, on affiche OK
|
# 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' :
|
elif filtre == 'all' :
|
||||||
# tous les services
|
# tous les services
|
||||||
|
@ -259,13 +259,13 @@ def execute(macro, filtre) :
|
||||||
s = status[t][service]
|
s = status[t][service]
|
||||||
|
|
||||||
if not s :
|
if not s :
|
||||||
# service non trouvé
|
# service non trouvé
|
||||||
code = f.table_cell(0)
|
code = f.table_cell(0)
|
||||||
code += f.table_cell(1,{'style':'background-color:yellow'})
|
code += f.table_cell(1,{'style':'background-color:yellow'})
|
||||||
code += f.text(u'Service introuvable')
|
code += f.text(u'Service introuvable')
|
||||||
return code
|
return code
|
||||||
|
|
||||||
# création de la chaine de retour
|
# création de la chaine de retour
|
||||||
code = f.table_cell(0)
|
code = f.table_cell(0)
|
||||||
if s['status'].lower() in ['running','accessible'] :
|
if s['status'].lower() in ['running','accessible'] :
|
||||||
code += f.table_cell(1,{'style':'background-color:lime'})
|
code += f.table_cell(1,{'style':'background-color:lime'})
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# -*- encoding: iso-8859-1 -*-
|
# -*- encoding: utf-8 -*-
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ class AccountList:
|
||||||
return html
|
return html
|
||||||
|
|
||||||
class Account:
|
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):
|
def __init__(self, home, login, www, url):
|
||||||
"""Instanciation avec le `login' de la personne"""
|
"""Instanciation avec le `login' de la personne"""
|
||||||
|
@ -83,7 +83,7 @@ class Account:
|
||||||
def logo(self):
|
def logo(self):
|
||||||
"""URL du logo s'il y en a un"""
|
"""URL du logo s'il y en a un"""
|
||||||
if self.info("logo"):
|
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()):
|
if self.info("logo").startswith(self.chemin()):
|
||||||
logo = self.info("logo").replace("%s/" % self.chemin(), "")
|
logo = self.info("logo").replace("%s/" % self.chemin(), "")
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# -*- coding: iso-8859-1 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
MoinMoin - RandomIncludeQuote macro
|
MoinMoin - RandomIncludeQuote macro
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
for detailed docs.
|
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>
|
@copyright: 2000-2001 by Richard Jones <richard@bizarsoftware.com.au>
|
||||||
@license: GNU GPL, see COPYING for details.
|
@license: GNU GPL, see COPYING for details.
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# -*- coding: iso-8859-1 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
MoinMoin - RandomQuote Macro
|
MoinMoin - RandomQuote Macro
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
It will look for list delimiters on the page in question.
|
It will look for list delimiters on the page in question.
|
||||||
It will ignore anything that is not in an "*" list.
|
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.
|
@license: GNU GPL, see COPYING for details.
|
||||||
|
|
||||||
Originally written by Thomas Waldmann.
|
Originally written by Thomas Waldmann.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue