mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-04 08:28:11 +00:00
Added create seahub admin script
This commit is contained in:
90
tools/seahub-admin.py
Executable file
90
tools/seahub-admin.py
Executable file
@@ -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()
|
||||||
|
|
Reference in New Issue
Block a user