]>
gitweb.pimeys.fr Git - scripts-20-100.git/blob - useless/wikoeur_accounts.py
2 # -*- encoding: utf-8 -*-
4 """ Script pour créer des comptes sur le wikoeur
5 Attention, la commande "moin account create" ne marchant pas, ça va etre sale.
7 Nan mais en fait je l'utilise pas.
11 config_dir
="/etc/moin/"
13 sys
.path
.insert(0, config_dir
)
21 def random_string(size
=20):
22 """Renvoie une chaîne aléatoire de taille size (pour générer un sel)"""
23 return "".join([chr(random
.randrange(20,256)) for i
in range(size
)])
25 def hash_pass(password
, salt
=None):
26 """Renvoie un password hashé selon la politique de moinmoin"""
28 salt
=random_string(20)
29 return base64
.b64encode(hashlib
.sha1(password
+salt
).digest()+salt
)
31 def check_filename(folder_path
, filename
):
32 """Vérifie si le fichier filename existe dans le dossier folder_path"""
34 f
=open(folder_path
+ filename
)
40 class FailedCreateFile(Exception):
41 """Exception levée si on n'a pas réussi à créer le fichier."""
44 def get_filename(folder_path
):
45 """Renvoie le nom d'un fichier pour stocker le compte.
46 Seulement le nom, pas le path.
47 Vérifie qu'il n'est pas déjà pris.
48 N'essaie que 10 fois et en cas d'échec lève une erreur FailedCreateFile."""
49 success
, tries
= False, 0
50 while not success
and tries
<10:
51 filename
= str(time
.time())
52 if check_filename(folder_path
, filename
):
55 raise FailedCreateFile
57 account_template
= """# Data saved '%(date)s' for id '%(ident)s'
69 email_subscribed_events[]=PageChangedEvent PageRenamedEvent PageDeletedEvent PageCopiedEvent PageRevertedEvent FileAttachedEvent
70 enc_password={SSHA}%(hashed_password)s
71 jabber_subscribed_events[]=
74 last_saved=%(last_saved)s
91 wikiname_add_spaces=0"""
93 def save_account(folder_path
, filename
, mail
, wikinom
, password
):
94 """Enregistre le fichier du compte."""
96 d
= {"date": time
.strftime("%F %T", time
.localtime(now
)),
101 "hashed_password": hash_pass(password
)
103 text
= account_template
% d
104 filename
= get_filename(folder_path
)
105 f
= open(folder_path
+ filename
, "w")
110 folder_path
= wikiconfig
.data_dir
+ "user/"
112 filename
= get_filename(folder_path
)
113 except FailedCreateFile
:
114 print "Impossible de créer un fichier dans %s !" % (folder_path
)
115 save_account(folder_path
, filename
, mail
, wikinom
, password
)