From 292c933dffb9a213f20689eea63f1a37ae972fc5 Mon Sep 17 00:00:00 2001 From: Antoine Durand-Gasselin Date: Mon, 1 Jun 2009 21:57:58 +0200 Subject: [PATCH] [wiki/inscription.py] Un vrai formulaire qui donne l'adresse mac MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * C'est encore trs brouillon, mais il y a de nombreux cas débiles qui sont spécifiés darcs-hash:20090601195758-bd074-7885297aa40161d4d5169338b21460282566270e.gz --- wiki/action/inscription.py | 48 +++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/wiki/action/inscription.py b/wiki/action/inscription.py index 5bdba3ad..ab86672a 100644 --- a/wiki/action/inscription.py +++ b/wiki/action/inscription.py @@ -30,25 +30,27 @@ SXXo )XZX: |i> ._%i>~~+|ii| .i| ._s_ass,,. ._a%ssssssss License: GPLv3 """ -import re, locale, base64 +import re, locale, base64, sys +from commands import getstatusoutput as gso +sys.path.append("/usr/scripts/gestion") +from iptools import AddrInNet from MoinMoin import wikiutil from MoinMoin.widget import html from MoinMoin.Page import Page from MoinMoin.PageEditor import PageEditor - CHAMPS = ["nom Nom", u"prenom Prénom", "dob Date de naissance", - "etudes Choisir une filière", "tel Numéro de téléphone", - "chbre Chambre (ex: J042g, M666)", "section Filière d'études", - u"annee année", "mail Adresse mail", "dns Nom de machine fixe", - "mac Adresse MAC"] + u"etudes Choisir une filière", u"tel Numéro de téléphone", + "chbre Chambre (ex: J042g, M666)", u"section Filière d'études", + u"annee année", "mail Adresse mail", "dns Nom de machine fixe"] + #"mac Adresse MAC"] def _create_form(request): url = request.page.url(request) ret = html.FORM(action=url) ret.append(html.INPUT(type='hidden', name='action', value='inscription')) - f = html.UL(id="formulaire_inscription") + f = html.UL(CLASS="formulaire_preinscription") for lbl, txt in [c.split(' ', 1) for c in CHAMPS]: champ = html.UL() @@ -56,6 +58,22 @@ def _create_form(request): champ.append(html.LI().append(html.INPUT(type="text", name=lbl))) f.append(html.LI().append(champ)) + # On récupère l'adrese MAC + ip = request.remote_addr + if not AddrInNet(ip, '138.231.136.0/21'): request.theme.add_msg( + u"tu n'es pas dans le bon sous-réseau, je ne peux pas deviner ton adresse MAC", 'error') + status, mac = gso("/usr/sbin/arp %s | perl -nle '{print $& if /00(:\S\S)*/}'" % ip) # gruik, gruik, grUUIIIk ! + mac= mac.strip() + if status: request.theme.add_msg(u"Problème d'arp (ou de perl...)", 'error') + if not re.match("00(:[a-fA-F0-9][a-fA-F0-9]){5}", mac): + request.theme.add_msg(u"Mac non valide: %s" % mac) + mac = 'XX:XX:XX:XX:XX:XX' + champ = html.UL() + champ.append(html.LI().append(html.Text("Adresse MAC"))) + champ.append(html.LI().append(html.INPUT(type="text", name='mac', value=mac))) + f.append(html.LI().append(champ)) + + ret.append(f) ret.append(html.INPUT(type="submit", name="inscrire", value=u"Me préinscrire")) return unicode(ret) @@ -63,23 +81,21 @@ def _create_form(request): def execute(pagename, request): page = Page(request, pagename) form = request.form - if request.dicts.has_member("GroupeAdmin", request.user.name): - request.theme.add_msg("Oui, tu es gentil", "dialog") - else: - request.theme.add_msg("Non, car tu es méchant", "error") - - return(page.send_page()) + if not request.dicts.has_member("GroupeAdmin", request.user.name): + request.theme.add_msg(u"Non, car tu es méchant", "error") + return(page.send_page()) if form.has_key('inscrire'): - pass + request.theme.add_msg(u"Un peu de patience, je ne suis pas encore implémenté", "error") + return(page.send_page()) else: # show create form request.emit_http_headers() + form = _create_form(request) request.theme.send_title(u"Formulaire de préinscription", pagename=pagename) - request.write(request.formatter.startContent("content")) # THIS IS A BIG HACK. IT NEEDS TO BE CLEANED UP - request.write(_create_form(request)) + request.write(form) request.write(request.formatter.endContent()) request.theme.send_footer(pagename) request.theme.send_closing_html()