From 59fdcd234037533be02268fe15710753730ba094 Mon Sep 17 00:00:00 2001 From: Dan Helfman Date: Sat, 18 Aug 2007 02:16:30 +0000 Subject: [PATCH] Forgot to svn add password reset tool. --- tools/resetpw.py | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 tools/resetpw.py diff --git a/tools/resetpw.py b/tools/resetpw.py new file mode 100755 index 0000000..8d974ce --- /dev/null +++ b/tools/resetpw.py @@ -0,0 +1,61 @@ +#!/usr/bin/python2.5 + +import os +import os.path +import sys +from config.Common import settings +from controller.Database import Database +from controller.Scheduler import Scheduler + + +class Resetter( object ): + def __init__( self, scheduler, database, username ): + self.scheduler = scheduler + self.database = database + self.username = username + self.password = None + + self.prompt_for_password() + + threads = ( + self.reset_password(), + ) + + for thread in threads: + self.scheduler.add( thread ) + self.scheduler.wait_for( thread ) + + def prompt_for_password( self ): + print "enter new password for user %s: " % self.username, + sys.stdout.flush() + self.password = sys.stdin.readline().strip() + print + + def reset_password( self ): + self.database.load( u"User %s" % self.username, self.scheduler.thread ) + user = ( yield Scheduler.SLEEP ) + if user is None: + raise Exception( "user %s is unknown" % self.username ) + + + user.password = self.password + self.database.save( user ) + print "password reset" + + +def main( program_name, args ): + print "IMPORTANT: Stop the Luminotes server before running this program." + + if len( args ) == 0: + print "usage: %s username" % program_name + sys.exit( 1 ) + + scheduler = Scheduler() + database = Database( scheduler, "data.db" ) + initializer = Resetter( scheduler, database, args[ 0 ] ) + scheduler.wait_until_idle() + + +if __name__ == "__main__": + import sys + main( sys.argv[ 0 ], sys.argv[ 1: ] )