mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-01 07:01:12 +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