From 9652510e6618f3054dc25ca159ee76f8acb9a213 Mon Sep 17 00:00:00 2001 From: Usman Nasir Date: Sun, 8 Sep 2019 20:32:20 +0500 Subject: [PATCH] bug fix: Correctly store databases and users for cPanel Importer --- filemanager/filemanager.py | 9 ++++++++- plogical/acl.py | 2 +- plogical/cPanelImporter.py | 23 +++++++++++++++++++++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/filemanager/filemanager.py b/filemanager/filemanager.py index 7dd0f4d17..dc3286a05 100755 --- a/filemanager/filemanager.py +++ b/filemanager/filemanager.py @@ -193,11 +193,18 @@ class FileManager: if not self.data['newPath'].find(self.data['home']) > -1: return self.ajaxPre(0, 'Not allowed to move in this path, please choose location inside home!') + if len(self.data['fileAndFolders']) == 1: + command = 'yes| cp -Rf %s %s' % (self.returnPathEnclosed(self.data['basePath']+ '/' + self.data['fileAndFolders'][0]), self.data['newPath']) + ProcessUtilities.executioner(command, website.externalApp) + self.changeOwner(self.data['newPath']) + json_data = json.dumps(finalData) + return HttpResponse(json_data) + command = 'mkdir ' + self.returnPathEnclosed(self.data['newPath']) ProcessUtilities.executioner(command, website.externalApp) for item in self.data['fileAndFolders']: - command = 'cp -R ' + self.returnPathEnclosed(self.data['basePath'] + '/' + item) + ' ' + self.returnPathEnclosed(self.data['newPath'] + '/' + item) + command = '%scp -Rf ' % ('yes |') + self.returnPathEnclosed(self.data['basePath'] + '/' + item) + ' ' + self.returnPathEnclosed(self.data['newPath']) ProcessUtilities.executioner(command, website.externalApp) self.changeOwner(self.data['newPath']) diff --git a/plogical/acl.py b/plogical/acl.py index fc7fad526..ed3e0c5e9 100755 --- a/plogical/acl.py +++ b/plogical/acl.py @@ -519,7 +519,7 @@ class ACLManager: if currentACL['admin'] == 1: return 1 - elif domain.admin.admin == admin: + elif domain.admin == admin: return 1 elif domain.admin.owner == admin.pk: return 1 diff --git a/plogical/cPanelImporter.py b/plogical/cPanelImporter.py index 22276515a..0494691e5 100644 --- a/plogical/cPanelImporter.py +++ b/plogical/cPanelImporter.py @@ -628,7 +628,7 @@ class cPanelImporter: logging.statusWriter(self.logFile, message, 1) try: - cursor.execute("CREATE DATABASE " + items.replace('.sql', '')) + cursor.execute("CREATE DATABASE `%s`" % (items.replace('.sql', ''))) except BaseException, msg: message = 'Failed while restoring database %s from backup file %s, error message: %s' % (items.replace('.sql', ''), self.backupFile, str(msg)) logging.statusWriter(self.logFile, message, 1) @@ -644,7 +644,26 @@ class cPanelImporter: website = Websites.objects.get(domain=self.mainDomain) - db = Databases(website=website, dbName=items.replace('.sql', ''), dbUser=items.replace('.sql', '')) + ## Trying to figure out dbname + + CommandsPath = '%s/mysql.sql' % (CompletPathToExtractedArchive) + + data = open(CommandsPath, 'r').readlines() + + for inItems in data: + if inItems.find('GRANT ALL PRIVILEGES') > -1 and inItems.find('localhost') > -1 and inItems.find('_test') == -1: + cDBName = inItems.split('`')[1].replace('\\', '') + logging.statusWriter(self.logFile, inItems, 1) + if cDBName == items.replace('.sql', ''): + cDBUser = inItems.split("'")[1] + message = 'Database user for %s is %s.' % (cDBName, cDBUser) + logging.statusWriter(self.logFile, message, 1) + if Databases.objects.filter(dbUser=cDBUser).count() > 0: + continue + break + + + db = Databases(website=website, dbName=items.replace('.sql', ''), dbUser=cDBUser) db.save() message = 'MySQL dump successfully restored for %s.' % (items.replace('.sql', ''))