From d2b3668a64488110c183660086c7e5eded7918d8 Mon Sep 17 00:00:00 2001 From: zhengxie Date: Wed, 19 Dec 2012 13:53:02 +0800 Subject: [PATCH] Added create seahub admin script --- tools/seahub-admin.py | 90 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100755 tools/seahub-admin.py diff --git a/tools/seahub-admin.py b/tools/seahub-admin.py new file mode 100755 index 0000000000..b25fa1f92c --- /dev/null +++ b/tools/seahub-admin.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python +# encoding: utf-8 + +import sqlite3 +import os +import sys +import time +import hashlib +import getpass + +# Get .ccnet directory from argument or user input +if len(sys.argv) >= 2: + ccnet_dir = sys.argv[1] +else: + home_dir = os.path.join(os.path.expanduser('~'), '.ccnet') + ccnet_dir = raw_input("Enter ccnet directory:(leave blank for %s) " % home_dir) + if not ccnet_dir: + ccnet_dir = home_dir + +# Test usermgr.db exists +usermgr_db = os.path.join(ccnet_dir, 'PeerMgr/usermgr.db') +if not os.path.exists(usermgr_db): + print '%s NOT exists. FAILED' % usermgr_db + sys.exit(1) + +# Connect db +conn = sqlite3.connect(usermgr_db) + +# Get cursor +c = conn.cursor() + +# Check whether admin user exists +sql = "SELECT email FROM EmailUser WHERE is_staff = 1" +try: + c.execute(sql) +except sqlite3.Error, e: + print "An error orrured:", e.args[0] + sys.exit(1) + +staff_list = c.fetchall() +if staff_list: + print "Admin is already in database. Email as follows: " + print '--------------------' + for e in staff_list: + print e[0] + print '--------------------' + choice = raw_input('Previous admin would be deleted, would you like to continue?[y/n] ') + if choice == 'y': + sql = "DELETE FROM EmailUser WHERE is_staff = 1" + try: + c.execute(sql) + except sqlite3.Error, e: + print "An error orrured:", e.args[0] + sys.exit(1) + else: + print 'Previous admin is deleted.' + else: + conn.close() + sys.exit(0) + +# Create admin user +choice = raw_input('Would you like to create admin user?[y/n]') +if choice != 'y': + conn.close() + sys.exit(0) + +username = raw_input('E-mail address:') +passwd = getpass.getpass('Password:') +passwd2 = getpass.getpass('Password (again):') +if passwd != passwd2: + print "Two passwords NOT same." + sys.exit(1) + +mySha1 = hashlib.sha1() +mySha1.update(passwd) +enc_passwd = mySha1.hexdigest() +sql = "INSERT INTO EmailUser(email, passwd, is_staff, is_active, ctime) VALUES ('%s', '%s', 1, 1, '%d');" % (username, enc_passwd, time.time()*1000000) +try: + c = conn.cursor() + c.execute(sql) + conn.commit() +except sqlite3.Error, e: + print "An error occured:", e.args[0] + sys.exit(1) +else: + print "Admin user created successfully." + +# Close db +conn.close() +