From 905f45e68f881b6460798d0db1a6240218d92947 Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Sun, 8 Dec 2013 02:01:16 +0100 Subject: [PATCH] =?utf8?q?R=C3=A9cup=C3=A9ration=20des=20scripts=20de=20pi?= =?utf8?q?meys?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * regenerate_motd : pour recréer le motd à partir du motd.tail * mark_as_read : pour renommer/déplacer un message en convention "lu" (anciennement utilisé par mon procmail sur pimeys) * wikoeur_accounts.py : pour créer des accounts moinmoin sur pimeys en commandeline. Marchait moyen et a été remplacé par un textcha. --- regenerate_motd.sh | 8 +++ useless/mark_as_read.sh | 4 ++ useless/wikoeur_accounts.py | 115 ++++++++++++++++++++++++++++++++++++ 3 files changed, 127 insertions(+) create mode 100755 regenerate_motd.sh create mode 100755 useless/mark_as_read.sh create mode 100755 useless/wikoeur_accounts.py diff --git a/regenerate_motd.sh b/regenerate_motd.sh new file mode 100755 index 0000000..19b9fb2 --- /dev/null +++ b/regenerate_motd.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# Pour recréer le motd à partir du .tail +# GRUIK ! + +uname -a > /etc/motd + +cat /etc/motd.tail >> /etc/motd diff --git a/useless/mark_as_read.sh b/useless/mark_as_read.sh new file mode 100755 index 0000000..304042e --- /dev/null +++ b/useless/mark_as_read.sh @@ -0,0 +1,4 @@ +#!/bin/bash + + +mv "$1" "${1/\/new\///cur/}:2,S" diff --git a/useless/wikoeur_accounts.py b/useless/wikoeur_accounts.py new file mode 100755 index 0000000..9e35302 --- /dev/null +++ b/useless/wikoeur_accounts.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +""" Script pour créer des comptes sur le wikoeur + Attention, la commande "moin account create" ne marchant pas, ça va etre sale. + + Nan mais en fait je l'utilise pas. +""" + +# Config +config_dir="/etc/moin/" +import sys +sys.path.insert(0, config_dir) +import wikiconfig + +import hashlib +import base64 +import random +import time + +def random_string(size=20): + """Renvoie une chaîne aléatoire de taille size (pour générer un sel)""" + return "".join([chr(random.randrange(20,256)) for i in range(size)]) + +def hash_pass(password, salt=None): + """Renvoie un password hashé selon la politique de moinmoin""" + if salt==None: + salt=random_string(20) + return base64.b64encode(hashlib.sha1(password+salt).digest()+salt) + +def check_filename(folder_path, filename): + """Vérifie si le fichier filename existe dans le dossier folder_path""" + try: + f=open(folder_path + filename) + except IOError as e: + if e.errno == 2: + return True + return False + +class FailedCreateFile(Exception): + """Exception levée si on n'a pas réussi à créer le fichier.""" + pass + +def get_filename(folder_path): + """Renvoie le nom d'un fichier pour stocker le compte. + Seulement le nom, pas le path. + Vérifie qu'il n'est pas déjà pris. + N'essaie que 10 fois et en cas d'échec lève une erreur FailedCreateFile.""" + success, tries = False, 0 + while not success and tries<10: + filename = str(time.time()) + if check_filename(folder_path, filename): + return filename + tries += 1 + raise FailedCreateFile + +account_template = """# Data saved '%(date)s' for id '%(ident)s' +aliasname= +bookmarks{}= +css_url= +date_fmt= +datetime_fmt= +disabled=0 +edit_on_doubleclick=1 +edit_rows=20 +editor_default=text +editor_ui=freechoice +email=%(mail)s +email_subscribed_events[]=PageChangedEvent PageRenamedEvent PageDeletedEvent PageCopiedEvent PageRevertedEvent FileAttachedEvent +enc_password={SSHA}%(hashed_password)s +jabber_subscribed_events[]= +jid= +language=fr +last_saved=%(last_saved)s +mailto_author=0 +name=%(name)s +quicklinks[]= +real_language= +recoverpass_key= +remember_last_visit=0 +remember_me=1 +show_comments=0 +show_fancy_diff=1 +show_nonexist_qm=0 +show_page_trail=1 +show_toolbar=1 +show_topbottom=0 +subscribed_pages[]= +theme_name=modernized +tz_offset=7200 +wikiname_add_spaces=0""" + +def save_account(folder_path, filename, mail, wikinom, password): + """Enregistre le fichier du compte.""" + now = time.time() + d = {"date": time.strftime("%F %T", time.localtime(now)), + "ident": filename, + "mail": mail, + "last_saved": now, + "name": wikinom, + "hashed_password": hash_pass(password) + } + text = account_template % d + filename = get_filename(folder_path) + f = open(folder_path + filename, "w") + f.write(text) + f.close() + +def parse_mail(): + folder_path = wikiconfig.data_dir + "user/" + try: + filename= get_filename(folder_path) + except FailedCreateFile: + print "Impossible de créer un fichier dans %s !" % (folder_path) + save_account(folder_path, filename, mail, wikinom, password) -- 2.39.2