Skip to content

Commit 52a2d54

Browse files
committed
bug fix: fix misconfigured database users in cPanel importer
1 parent b7fec58 commit 52a2d54

2 files changed

Lines changed: 65 additions & 3 deletions

File tree

plogical/backupUtilities.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,18 +104,32 @@ def prepareBackupMeta(backupDomain, backupName, tempStoragePath, backupPath):
104104
for items in databases:
105105
try:
106106
dbuser = DBUsers.objects.get(user=items.dbUser)
107+
userToTry = items.dbUser
107108
except:
108109
dbusers = DBUsers.objects.all().filter(user=items.dbUser)
110+
userToTry = items.dbUser
109111
for it in dbusers:
110112
dbuser = it
111113
break
112114

115+
userToTry = mysqlUtilities.mysqlUtilities.fetchuser(items.dbUser)
116+
117+
try:
118+
dbuser = DBUsers.objects.get(user=userToTry)
119+
except:
120+
dbusers = DBUsers.objects.all().filter(user=userToTry)
121+
for it in dbusers:
122+
dbuser = it
123+
break
124+
125+
126+
113127
databaseXML = Element('database')
114128

115129
child = SubElement(databaseXML, 'dbName')
116130
child.text = items.dbName
117131
child = SubElement(databaseXML, 'dbUser')
118-
child.text = items.dbUser
132+
child.text = userToTry
119133
child = SubElement(databaseXML, 'password')
120134
child.text = dbuser.password
121135

plogical/mysqlUtilities.py

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
try:
1313
from websiteFunctions.models import Websites
1414
from databases.models import Databases
15+
from backup.models import DBUsers
1516
except:
1617
pass
1718
import MySQLdb as mysql
@@ -704,13 +705,60 @@ def changePassword(userName, dbPassword):
704705

705706
if connection == 0:
706707
return 0
707-
708708
cursor.execute("use mysql")
709-
cursor.execute("SET PASSWORD FOR '" + userName + "'@'localhost' = PASSWORD('" + dbPassword + "')")
709+
710+
711+
try:
712+
dbuser = DBUsers.objects.get(user=userName)
713+
cursor.execute("SET PASSWORD FOR '" + userName + "'@'localhost' = PASSWORD('" + dbPassword + "')")
714+
except:
715+
userName = mysqlUtilities.fetchuser(userName)
716+
cursor.execute("SET PASSWORD FOR '" + userName + "'@'localhost' = PASSWORD('" + dbPassword + "')")
717+
710718
connection.close()
711719

712720
return 1
713721

714722
except BaseException, msg:
715723
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[mysqlUtilities.changePassword]")
724+
return 0
725+
726+
@staticmethod
727+
def fetchuser(userName):
728+
try:
729+
connection, cursor = mysqlUtilities.setupConnection()
730+
cursor.execute("use mysql")
731+
732+
database = Databases.objects.get(dbUser=userName)
733+
databaseName = database.dbName
734+
databaseName = databaseName.replace('_', '\_')
735+
query = "select user from db where db = '%s'" % (databaseName)
736+
737+
if connection == 0:
738+
return 0
739+
740+
cursor.execute(query)
741+
rows = cursor.fetchall()
742+
counter = 0
743+
744+
for row in rows:
745+
if row[0].find('_') > -1:
746+
database.dbUser = row[0]
747+
database.save()
748+
try:
749+
connection.close()
750+
except:
751+
pass
752+
message = 'Detected databaser user is %s for database %s.' % (row[0], databaseName)
753+
logging.CyberCPLogFileWriter.writeToFile(message)
754+
return row[0]
755+
else:
756+
counter = counter + 1
757+
758+
connection.close()
759+
760+
return 1
761+
762+
except BaseException, msg:
763+
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[mysqlUtilities.fetchuser]")
716764
return 0

0 commit comments

Comments
 (0)