Commit 5fb0ee8b authored by Vincent Le gallic's avatar Vincent Le gallic

Encodage en UTF-8 : Il reste encore beaucoup de boulot.

parent fc9ac609
......@@ -23,21 +23,21 @@ set -e
case "$1" in
start)
echo -n "Dmarrage de $NAME"
echo -n "Démarrage de $NAME"
/sbin/start-stop-daemon --start --quiet --pidfile $PIDF --exec $BIN $ARGS
echo "."
;;
stop)
echo -n "Arrt de $NAME"
echo -n "Arrêt de $NAME"
/sbin/start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDF
echo "."
;;
restart)
echo -n "Redmarrage (arrt) 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 "Redmarrage (dmarrage) de $NAME"
echo -n "Redémarrage (démarrage) de $NAME"
/sbin/start-stop-daemon --start --quiet --pidfile $PIDF --exec $BIN $ARGS
echo "."
;;
......
-- Fichier permttant de reconstituer la base de donnes de filtrage des logs
-- Fichier permttant de reconstituer la base de données de filtrage des logs
-- de net-acct et du firewall
-- Pour regnrer la base :
-- Pour regénérer la base :
-- Dropper la bose en tant qu'utilisateur postgres : dropdb filtrage
-- Crer la base avec l'utilisateur crans (par exemple) :
-- Créer la base avec l'utilisateur crans (par exemple) :
-- createdb -O crans filtrage
-- excuter en tant qu'utilisateur :
-- exécuter en tant qu'utilisateur :
-- psql filtrage -U crans < filtrage.sql
BEGIN;
-- Cration 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));
-- Cration 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 sanctionns 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 exempts :
-- 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');
-- Cration 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 "Dmarrage 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 "Arrt 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 "Redmarrage 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 "Dmarrage 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 "."
;;
......
-----------------------------------------------------------------
-- 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;
-----------------------------------------------------------------
-- 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 $
#
# Rcupre la sortie du monit status sur ovh
# Récupère la sortie du monit status sur ovh
PATH=/sbin:/usr/sbin:/bin:/usr/bin
......
#! /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
\ No newline at end of file
#!/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 donnes
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
# radhr
# 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 russie, 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 rsultat %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 attribue
# 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 isols
# 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'adhrent n'est pas membre actif, il doit se brancher depuis la prise
# d'un autre adhrent 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, "Hbergeur non jour", "accueil")
return (0, "Hébergeur non à jour", "accueil")
# Cas des personnels logs 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, "Accs adhrent 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 vrifie si la mac est autorise
# 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 dfaut
# 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 dernire mac sur une prise donne
# 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)
......
# -*- 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)
# -*- 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'Fvrier',u'Mars',u'Avril',u'Mai',u'Juin',u'Juillet',u'Aot',u'Septembre',u'Octobre',u'Novembre',u'Dcembre')
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&amp;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 vnements">[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="vnements 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">Dbut</td>',
u' <td class="list_head">Début</td>',
u' <td class="list_head">Fin</td>',
u' <td class="list_head">Frquence</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>vnement 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>',
......
#! /usr/bin/env python
# -*- encoding: iso-8859-1 -*-
# -*- encoding: utf-8 -*-
# Gnration 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'accder aux informations des bornes")
return f.text(u"Impossible d'accéder aux informations des bornes")
# On rcupre 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)
......
# -*- coding: iso-8859-1 -*-
# -*- coding: utf-8 -*-
import os, sys, commands, time
"""
Permet d'intgrer au wiki les rsultats 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 reprsentation 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 :
# cration 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] = {}