diff --git a/install/installCyberPanel.py b/install/installCyberPanel.py index c72a5c461..2a7de196b 100755 --- a/install/installCyberPanel.py +++ b/install/installCyberPanel.py @@ -454,14 +454,14 @@ class InstallCyberPanel: - try: - f = open('/etc/resolv.conf', 'a') - f.write('nameserver 8.8.8.8') - f.close() - except IOError as e: - InstallCyberPanel.stdOut("[ERROR] Unable to create /etc/resolv.conf: " + str(e) + - ". This may need to be fixed manually as 'echo \"nameserver 8.8.8.8\"> " - "/etc/resolv.conf'", 1, 1, os.EX_OSERR) + # try: + # f = open('/etc/resolv.conf', 'a') + # f.write('nameserver 8.8.8.8') + # f.close() + # except IOError as e: + # InstallCyberPanel.stdOut("[ERROR] Unable to create /etc/resolv.conf: " + str(e) + + # ". This may need to be fixed manually as 'echo \"nameserver 8.8.8.8\"> " + # "/etc/resolv.conf'", 1, 1, os.EX_OSERR) if self.distro == centos: command = 'yum -y install epel-release' diff --git a/plogical/backupSchedule.py b/plogical/backupSchedule.py index a739fb780..1e59a537c 100755 --- a/plogical/backupSchedule.py +++ b/plogical/backupSchedule.py @@ -52,8 +52,12 @@ class backupSchedule: tempStoragePath = data['tempStorage'] backupSchedule.remoteBackupLogging(backupLogPath, "Waiting for backup to complete.. ") + time.sleep(5) + schedulerPath = '/home/cyberpanel/%s-backup.txt' % (virtualHost) while (1): + diff = datetime.now() - startingTime + backupDomain = virtualHost status = os.path.join("/home", backupDomain, "backup/status") backupFileNamePath = os.path.join("/home", backupDomain, "backup/backupFileName") @@ -117,6 +121,14 @@ class backupSchedule: except: pass return 0, tempStoragePath + elif os.path.exists(schedulerPath): + os.remove(schedulerPath) + return 0, 'Backup process killed without reporting any error.' + + + + + except BaseException, msg: logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [119:startBackup]") return 0, str(msg) diff --git a/plogical/backupScheduleLocal.py b/plogical/backupScheduleLocal.py index 7129b9867..d5ce1a6bf 100755 --- a/plogical/backupScheduleLocal.py +++ b/plogical/backupScheduleLocal.py @@ -24,17 +24,22 @@ class backupScheduleLocal: for virtualHost in os.listdir("/home"): if match(r'([\da-z\.-]+\.[a-z\.]{2,12}|[\d\.]+)([\/:?=&#]{1}[\da-z\.-]+)*[\/\?]?', virtualHost, M | I): - retValues = backupSchedule.createLocalBackup(virtualHost, backupLogPath) + try: + retValues = backupSchedule.createLocalBackup(virtualHost, backupLogPath) - if os.path.exists(backupScheduleLocal.localBackupPath): - backupPath = retValues[1] + ".tar.gz" - localBackupPath = '%s/%s' % (open(backupScheduleLocal.localBackupPath, 'r').read().rstrip('/'), time.strftime("%b-%d-%Y")) + if os.path.exists(backupScheduleLocal.localBackupPath): + backupPath = retValues[1] + ".tar.gz" + localBackupPath = '%s/%s' % (open(backupScheduleLocal.localBackupPath, 'r').read().rstrip('/'), time.strftime("%b-%d-%Y")) - command = 'mkdir -p %s' % (localBackupPath) - ProcessUtilities.normalExecutioner(command) + command = 'mkdir -p %s' % (localBackupPath) + ProcessUtilities.normalExecutioner(command) + + command = 'mv %s %s' % (backupPath, localBackupPath) + ProcessUtilities.normalExecutioner(command) + except BaseException, msg: + backupSchedule.remoteBackupLogging(backupLogPath, + '[ERROR] Backup failed for %s, error: %s moving on..' % (virtualHost, str(msg))) - command = 'mv %s %s' % (backupPath, localBackupPath) - ProcessUtilities.normalExecutioner(command) diff --git a/plogical/backupUtilities.py b/plogical/backupUtilities.py index b1132eac0..053de8859 100755 --- a/plogical/backupUtilities.py +++ b/plogical/backupUtilities.py @@ -263,6 +263,10 @@ class backupUtilities: ##### Writing the name of backup file. ## /home/example.com/backup/backupFileName + pidFile = '%sstartBackup' % (backupPath) + writeToFile = open(pidFile, 'w') + writeToFile.writelines(str(os.getpid())) + writeToFile.close() backupFileNamePath = os.path.join(backupPath,"backupFileName") logging.CyberCPLogFileWriter.statusWriter(backupFileNamePath, backupName) @@ -321,9 +325,17 @@ class backupUtilities: logging.CyberCPLogFileWriter.statusWriter(status, "Aborted, "+ str(msg) + ".[365] [5009]") print ("Aborted, "+ str(msg) + ".[365] [5009]") + os.remove(pidFile) + @staticmethod def BackupRoot(tempStoragePath, backupName, backupPath, metaPath=None): + pidFile = '%sBackupRoot' % (backupPath) + + writeToFile = open(pidFile, 'w') + writeToFile.writelines(str(os.getpid())) + writeToFile.close() + status = os.path.join(backupPath, 'status') metaPathInBackup = os.path.join(tempStoragePath, 'meta.xml') backupMetaData = ElementTree.parse(metaPathInBackup) @@ -422,6 +434,7 @@ class backupUtilities: items.save() logging.CyberCPLogFileWriter.statusWriter(status, "Completed\n") + os.remove(pidFile) @staticmethod def initiateBackup(tempStoragePath,backupName,backupPath): @@ -1056,16 +1069,24 @@ def submitBackupCreation(tempStoragePath, backupName, backupPath, backupDomain): ## + schedulerPath = '/home/cyberpanel/%s-backup.txt' % (backupDomain) + if not os.path.exists(backupPath) or not os.path.islink(backupPath): command = 'mkdir -p %s' % (backupPath) ProcessUtilities.executioner(command) else: + writeToFile = open(schedulerPath, 'w') + writeToFile.writelines('error') + writeToFile.close() return 0 if not os.path.exists(backupPath) or not os.path.islink(backupPath): command = 'chown -R %s:%s %s' % (website.externalApp, website.externalApp, backupPath) ProcessUtilities.executioner(command) else: + writeToFile = open(schedulerPath, 'w') + writeToFile.writelines('error') + writeToFile.close() return 0 ## @@ -1074,12 +1095,18 @@ def submitBackupCreation(tempStoragePath, backupName, backupPath, backupDomain): command = 'mkdir -p %s' % (tempStoragePath) ProcessUtilities.executioner(command) else: + writeToFile = open(schedulerPath, 'w') + writeToFile.writelines('error') + writeToFile.close() return 0 if not os.path.exists(tempStoragePath) or not os.path.islink(tempStoragePath): command = 'chown -R %s:%s %s' % (website.externalApp, website.externalApp, tempStoragePath) ProcessUtilities.executioner(command) else: + writeToFile = open(schedulerPath, 'w') + writeToFile.writelines('error') + writeToFile.close() return 0 ## @@ -1087,12 +1114,18 @@ def submitBackupCreation(tempStoragePath, backupName, backupPath, backupDomain): command = 'touch %s' % (status) ProcessUtilities.executioner(command) else: + writeToFile = open(schedulerPath, 'w') + writeToFile.writelines('error') + writeToFile.close() return 0 if not os.path.exists(status) or not os.path.islink(status): command = 'chown cyberpanel:cyberpanel %s' % (status) ProcessUtilities.executioner(command) else: + writeToFile = open(schedulerPath, 'w') + writeToFile.writelines('error') + writeToFile.close() return 0 @@ -1100,6 +1133,9 @@ def submitBackupCreation(tempStoragePath, backupName, backupPath, backupDomain): if result[0] == 0: + writeToFile = open(schedulerPath, 'w') + writeToFile.writelines('error') + writeToFile.close() logging.CyberCPLogFileWriter.statusWriter(status, str(result[1]) + ' [1084][5009]') return 0 @@ -1113,6 +1149,9 @@ def submitBackupCreation(tempStoragePath, backupName, backupPath, backupDomain): output = ProcessUtilities.outputExecutioner(execPath, website.externalApp) if output.find('[5009') > -1: logging.CyberCPLogFileWriter.writeToFile(output) + writeToFile = open(schedulerPath, 'w') + writeToFile.writelines('error') + writeToFile.close() return 0 ## Backing up databases @@ -1126,6 +1165,9 @@ def submitBackupCreation(tempStoragePath, backupName, backupPath, backupDomain): dbName = database.find('dbName').text if mysqlUtilities.mysqlUtilities.createDatabaseBackup(dbName, '/home/cyberpanel') == 0: + writeToFile = open(schedulerPath, 'w') + writeToFile.writelines('error') + writeToFile.close() return 0 command = 'mv /home/cyberpanel/%s.sql %s/%s.sql' % (dbName, tempStoragePath, dbName) @@ -1134,6 +1176,7 @@ def submitBackupCreation(tempStoragePath, backupName, backupPath, backupDomain): ## output = ProcessUtilities.outputExecutioner(execPath, website.externalApp) + if output.find('1,None') > -1: execPath = "sudo nice -n 10 /usr/local/CyberCP/bin/python2 " + virtualHostUtilities.cyberPanel + "/plogical/backupUtilities.py" execPath = execPath + " BackupRoot --tempStoragePath " + tempStoragePath + " --backupName " \