1
# -*- coding: iso-8859-1 -*-
3
MoinMoin - cleansessions script
5
@copyright: 2009 MoinMoin:ReimarBauer,
6
2010 MoinMoin:ThomasWaldmann
7
@license: GNU GPL, see COPYING for details.
12
from MoinMoin import user
13
from MoinMoin.script import MoinScript
15
class PluginScript(MoinScript):
19
This script allows you to clean up session files (usually used to maintain
20
a "logged-in session" for http(s) or xmlrpc).
22
Detailed Instructions:
23
======================
24
General syntax: moin [options] maint cleansessions [cleansessions-options]
26
[options] usually should be:
27
--config-dir=/path/to/my/cfg/ --wiki-url=http://wiki.example.org/
29
[cleansessions-options] see below:
30
--name remove sessions only for user NAME (default: all users)
31
--all remove all sessions (default: remove outdated sessions)
34
def __init__(self, argv, def_values):
35
MoinScript.__init__(self, argv, def_values)
37
self.parser.add_option(
38
"--name", metavar="NAME", dest="username",
39
help="remove sessions only for user NAME (default: all users)"
41
self.parser.add_option(
42
"--all", action="store_true", dest="all_sessions",
43
help="remove all sessions (default: remove outdated sessions)"
48
request = self.request
51
if not self.options.all_sessions:
53
def session_expired(session):
55
return session['expires'] < now
57
# this is likely a pre-1.9.1 session file without expiry
58
return True # consider it expired
59
checks.append(session_expired)
61
if self.options.username:
62
u = user.User(request, None, self.options.username)
64
print 'User "%s" does not exist!' % self.options.username
67
def user_matches(session):
69
return session['user.id'] == u.id
72
checks.append(user_matches)
74
session_service = request.cfg.session_service
75
for sid in session_service.get_all_session_ids(request):
76
session = session_service.get_session(request, sid)
78
# if ALL conditions are met, the session will be destroyed
81
killit = killit and check(session)
84
session_service.destroy_session(request, session)