]> gitweb.pimeys.fr Git - scripts-20-100.git/commitdiff
Récupération des scripts de pimeys
authorVincent Le Gallic <legallic@crans.org>
Sun, 8 Dec 2013 01:01:16 +0000 (02:01 +0100)
committerVincent Le Gallic <legallic@crans.org>
Sun, 8 Dec 2013 01:03:12 +0000 (02:03 +0100)
 * 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 [new file with mode: 0755]
useless/mark_as_read.sh [new file with mode: 0755]
useless/wikoeur_accounts.py [new file with mode: 0755]

diff --git a/regenerate_motd.sh b/regenerate_motd.sh
new file mode 100755 (executable)
index 0000000..19b9fb2
--- /dev/null
@@ -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 (executable)
index 0000000..304042e
--- /dev/null
@@ -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 (executable)
index 0000000..9e35302
--- /dev/null
@@ -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)