Hi, I missed an utility in SOGo for delete the users from the database (for
example, if a user-account gets corrupted, or a user leaves a company, etc).
That's why I created a simple python script that I share with you. For run it,
MySQLdb module for python needs to be installed.
Caution! That script have been tested only with sogo 1.3.7!
#!/usr/bin/python
# By: Alan Bover Argelaga
import MySQLdb
usage = "\n Help: \n user list \t \t \t list the users in the database \n user
delete <user> \t \t Delete user from the database \n exit \t \t \t \t Exit the
script \n "
def user(action):
def user_delete(user):
global db
cursor = db.cursor()
cursor.execute(""" SELECT c_location, c_quick_location,
c_acl_location FROM sogo_folder_info WHERE c_path2 = %s""", (user,))
if cursor.rowcount > 0:
result=cursor.fetchall()
for user_tables in result:
user_tables_for_delete =
[user_tables[0].partition('sogo/')[2],user_tables[1].partition('sogo/')[2],user_tables[2].partition('sogo/')[2]]
for user_table_for_delete in
user_tables_for_delete:
cursor.execute("DROP TABLE IF EXISTS "
+ user_table_for_delete)
cursor.execute("""DELETE FROM sogo_user_profile WHERE
c_uid = %s""", (user,))
cursor.execute("""DELETE FROM sogo_folder_info WHERE
c_path2 = %s""", (user,))
print "User " + user + " has been deleted"
else:
print "User " + user + " cannot be found in database"
def user_list():
global db
cursor = db.cursor()
cursor.execute("SELECT c_uid FROM sogo_user_profile;")
result=cursor.fetchall()
for existing_user in result:
print existing_user[0]
def user_help():
global usage
print "%s" % usage
action_func = { "delete": user_delete,
"list": user_list }
order = action.partition(" ")
if order[0] == "delete":
action_func[order[0]](order[2])
elif order[0] == "list":
action_func[order[0]]()
else:
user_help()
def quit():
print "quit"
exit = False
try:
databaseuser = raw_input("Database user: ")
database = raw_input("Database name: ")
password = raw_input("Database password: ")
db =
MySQLdb.connect(host='localhost',user=databaseuser,passwd=password,db=database)
except MySQLdb.Error, e:
print "Database conection error"
print e.args[1]
exit = True
while not exit:
entrada = raw_input("> ")
order = entrada.partition(" ")
if order[0] == "user":
user(order[2])
else:
if entrada == "exit":
exit = True
else :
print "%s" % usage
--
[email protected]
https://inverse.ca/sogo/lists