From 8a5d4e2307015e49512d6c68b9855bfed1a1df51 Mon Sep 17 00:00:00 2001 From: Hassan Hashmi <75794688+habbi-hb@users.noreply.github.com> Date: Sun, 12 Jun 2022 12:05:51 +0500 Subject: [PATCH] backuprestore0.1 --- plogical/applicationInstaller.py | 45 ++- websiteFunctions/tests.py | 553 +------------------------------ 2 files changed, 44 insertions(+), 554 deletions(-) diff --git a/plogical/applicationInstaller.py b/plogical/applicationInstaller.py index 49c7cf940..a78bd9031 100755 --- a/plogical/applicationInstaller.py +++ b/plogical/applicationInstaller.py @@ -1728,9 +1728,6 @@ $parameters = array( statusFile.writelines('Installing WordPress....,30') statusFile.close() - logging.writeToFile("Pluginbucket ....... %s" % str(self.data['pluginbucket'])) - - ## Install WordPress ## get save pluginbucket @@ -1777,6 +1774,7 @@ $parameters = array( webobj = Websites.objects.get(domain= self.extraArgs['domainName']) + if self.extraArgs['home'] == '0': path = self.extraArgs['path'] finalPath = "/home/" + self.extraArgs['domainName'] + "/public_html/" + path + "/" @@ -1785,6 +1783,7 @@ $parameters = array( finalPath = "/home/" + self.extraArgs['domainName'] + "/public_html/" Finalurl = (self.extraArgs['domainName']) + wpobj = WPSites(owner=webobj, title=self.extraArgs['blogTitle'], path=finalPath, FinalURL=Finalurl, AutoUpdates=(self.extraArgs['updates']), PluginUpdates=(self.extraArgs['Plugins']), ThemeUpdates=(self.extraArgs['Themes']),) @@ -2454,6 +2453,15 @@ $parameters = array( newurl = wpsite.FinalURL + #### Check If sub dir in web site + try: + abc = newWPpath.split("/") + newpath = abc[4] + home = "0" + except BaseException as msg: + home = "1" + + ### get WPsite Database name and usr php = PHPManager.getPHPString(PhpVersion) @@ -2508,7 +2516,10 @@ $parameters = array( logging.statusWriter(self.tempStatusPath, 'Copying Data File...,50') ###Copy backup content to newsite - unzippath ="%s/ab/usr/local/CyberCP/tmp/%s/public_html/public_html/"%(self.tempPath, oldtemppath) + if home == "0": + unzippath = "%s/ab/usr/local/CyberCP/tmp/%s/public_html/" % (self.tempPath, oldtemppath) + else: + unzippath = "%s/ab/usr/local/CyberCP/tmp/%s/public_html/public_html/" % (self.tempPath, oldtemppath) command = "sudo -u %s cp -R %s* %s" % (VHuser, unzippath, newWPpath) result = ProcessUtilities.outputExecutioner(command) @@ -2567,6 +2578,22 @@ $parameters = array( DataToPass['Themes'] = config['WPThemeUpdates'] DataToPass['websiteOwner'] = WebOwner DataToPass['package'] = packegs + try: + oldpath = config['WPsitepath'] + logging.writeToFile("old path..:%s"%oldpath) + abc = oldpath.split("/") + newpath = abc[4] + newurl = "%s/%s"%(DomainName,newpath) + home = "0" + except BaseException as msg: + logging.writeToFile("path error: %s"%msg) + newpath = "" + newurl = DomainName + home = "1" + + DataToPass['path'] = newpath + + DataToPass['home'] = home try: website = Websites.objects.get(domain=DomainName) @@ -2590,11 +2617,11 @@ $parameters = array( time.sleep(2) logging.statusWriter(self.tempStatusPath, 'Restoring site ....,30') - NewWPsite =WPSites.objects.get(FinalURL=DomainName) + NewWPsite =WPSites.objects.get(FinalURL=newurl) VHuser = NewWPsite.owner.externalApp PhpVersion = NewWPsite.owner.phpSelection newWPpath = NewWPsite.path - newurl = NewWPsite.FinalURL + ###### Same code already used in Existing site @@ -2653,7 +2680,11 @@ $parameters = array( logging.statusWriter(self.tempStatusPath, 'Copying Data File...,60') ###Copy backup content to newsite - unzippath = "%s/ab/usr/local/CyberCP/tmp/%s/public_html/public_html/" % (self.tempPath, oldtemppath) + if home == "0": + unzippath = "%s/ab/usr/local/CyberCP/tmp/%s/public_html/" % (self.tempPath, oldtemppath) + else: + unzippath = "%s/ab/usr/local/CyberCP/tmp/%s/public_html/public_html/" % (self.tempPath, oldtemppath) + command = "sudo -u %s cp -R %s* %s" % (VHuser, unzippath, newWPpath) result = ProcessUtilities.outputExecutioner(command) diff --git a/websiteFunctions/tests.py b/websiteFunctions/tests.py index 75307d0b4..f868f45fc 100755 --- a/websiteFunctions/tests.py +++ b/websiteFunctions/tests.py @@ -1,548 +1,7 @@ -# -*- coding: utf-8 -*- -from django.test import TestCase -import json -from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging -import requests -import time -from plogical.processUtilities import ProcessUtilities -import urllib3 -urllib3.disable_warnings() -# Create your tests here. - - -class TestWebsiteManagement(TestCase): - httpClient = requests.Session() - - def MakeRequest(self, endPoint, data): - json_data = json.dumps(data) - path = 'https://cyberpanel.xyz:8090/%s' % (endPoint) - result = TestWebsiteManagement.httpClient.post(path, data=json_data, verify=False) - return json.loads(result.text) - - def MakeRequestRaw(self, path): - result = requests.get(path) - return str(result.text) - - def setUp(self): - ## Verify login - - data_ret = {'username': 'admin', 'password': '1234567'} - response = self.MakeRequest('verifyLogin', data_ret) - self.assertEqual(response['loginStatus'], 1) - - def test_submitWebsiteCreation(self): - - ## Login - - data_ret = {'domainName': 'hello.cyberpanel.xyz', 'adminEmail': 'usman@cyberpersons.com' , 'phpSelection': 'PHP 7.1', - 'package': 'Default', 'websiteOwner': 'admin', 'ssl': 0, 'dkimCheck': 0, 'openBasedir': 0} - response = self.MakeRequest('websites/submitWebsiteCreation', data_ret) - - time.sleep(10) - - self.assertEqual(response['status'], 1) - - exists = 0 - - if self.MakeRequestRaw('http://hello.cyberpanel.xyz').find('CyberPanel') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - def test_submitWebsiteDeletion(self): - - ## Login - - data_ret = {'websiteName': 'hello.cyberpanel.xyz'} - - response = self.MakeRequest('websites/submitWebsiteDeletion', data_ret) - time.sleep(10) - - self.assertEqual(response['status'], 1) - - def test_submitWebsiteModify(self): - - data_ret = {'domainName': 'hey.cyberpanel.xyz', 'adminEmail': 'usman@cyberpersons.com', - 'phpSelection': 'PHP 7.1', - 'package': 'Default', 'websiteOwner': 'admin', 'ssl': 0, 'dkimCheck': 0, 'openBasedir': 0} - self.MakeRequest('websites/submitWebsiteCreation', data_ret) - - time.sleep(10) - - ## - - data_ret = {'domain': 'hey.cyberpanel.xyz', 'email': 'usman@cyberpersons.com' , 'phpVersion': 'PHP 7.3', - 'packForWeb': 'Default', 'admin': 'admin'} - - response = self.MakeRequest('websites/saveWebsiteChanges', data_ret) - - time.sleep(5) - - self.assertEqual(response['status'], 1) - - phpInfoPath = '/home/hey.cyberpanel.xyz/public_html/info.php' - content = """ -""" - writeToFile = open(phpInfoPath, 'w') - writeToFile.write(content) - writeToFile.close() - - exists = 0 - - if self.MakeRequestRaw('http://hey.cyberpanel.xyz/info.php').find('lsphp73') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - def test_submitWebsiteStatus(self): - - data_ret = {'domainName': 'suspend.cyberpanel.xyz', 'adminEmail': 'usman@cyberpersons.com', - 'phpSelection': 'PHP 7.1', - 'package': 'Default', 'websiteOwner': 'admin', 'ssl': 0, 'dkimCheck': 0, 'openBasedir': 0} - self.MakeRequest('websites/submitWebsiteCreation', data_ret) - - ## Suspend check - data_ret = {'websiteName': 'suspend.cyberpanel.xyz', 'state': 'Suspend'} - - response = self.MakeRequest('websites/submitWebsiteStatus', data_ret) - - time.sleep(5) - - self.assertEqual(response['websiteStatus'], 1) - - exists = 0 - - if self.MakeRequestRaw('http://suspend.cyberpanel.xyz').find('404') > -1 or self.MakeRequestRaw('http://suspend.cyberpanel.xyz').find('Access to this resource on the server is denied!') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - suspend = 0 - import os - if os.path.exists('/usr/local/lsws/conf/vhosts/suspend.cyberpanel.xyz-suspended'): - suspend = 1 - - self.assertEqual(suspend, 1) - - ## Unsuspend check - - data_ret = {'websiteName': 'suspend.cyberpanel.xyz', 'state': 'Unsuspend'} - - response = self.MakeRequest('websites/submitWebsiteStatus', data_ret) - - time.sleep(5) - - self.assertEqual(response['websiteStatus'], 1) - - exists = 0 - - if self.MakeRequestRaw('http://suspend.cyberpanel.xyz').find('CyberPanel') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - suspend = 0 - import os - if os.path.exists('/usr/local/lsws/conf/vhosts/suspend.cyberpanel.xyz'): - suspend = 1 - - self.assertEqual(suspend, 1) - - def test_installWordpress(self): - - command = 'rm -rf /home/%s/public_html/' % ('cyberpanel.xyz') - ProcessUtilities.normalExecutioner(command) - - command = 'mkdir /home/%s/public_html/' % ('cyberpanel.xyz') - ProcessUtilities.normalExecutioner(command) - - command = 'chown cyberpa:cyberpa /home/%s/public_html/' % ('cyberpanel.xyz') - ProcessUtilities.normalExecutioner(command) - - ## Suspend check - data_ret = {'domain': 'cyberpanel.xyz', 'home': '1', 'blogTitle': 'Unit Test', 'adminUser': 'cyberpanel', - 'passwordByPass': 'helloworld', 'adminEmail': 'usman@cyberpersons.com'} - - response = self.MakeRequest('websites/installWordpress', data_ret) - - time.sleep(2) - - self.assertEqual(response['status'], 1) - tempStatusPath = response['tempStatusPath'] - - ## Wait for install to complete - - data_ret = {'statusFile': tempStatusPath, 'domainName': 'cyberpanel.xyz'} - - while True: - response = self.MakeRequest('websites/installWordpressStatus', data_ret) - if response['abort'] == 1: - if response['installStatus']: - break - else: - logging.writeToFile(response['error_message']) - break - - - exists = 0 - - if self.MakeRequestRaw('http://cyberpanel.xyz').find('Unit Test') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - def test_installJoomla(self): - - command = 'rm -rf /home/%s/public_html/' % ('cyberpanel.xyz') - ProcessUtilities.normalExecutioner(command) - - command = 'mkdir /home/%s/public_html/' % ('cyberpanel.xyz') - ProcessUtilities.normalExecutioner(command) - - command = 'chown cyberpa:cyberpa /home/%s/public_html/' % ('cyberpanel.xyz') - ProcessUtilities.normalExecutioner(command) - - ## Suspend check - data_ret = {'domain': 'cyberpanel.xyz', 'home': '1', 'sitename': 'Unit Test Joomla', 'username': 'cyberpanel', - 'passwordByPass': 'helloworld', 'prefix': 'db_'} - - response = self.MakeRequest('websites/installJoomla', data_ret) - time.sleep(2) - - self.assertEqual(response['status'], 1) - tempStatusPath = response['tempStatusPath'] - - ## Wait for install to complete - - data_ret = {'statusFile': tempStatusPath, 'domainName': 'cyberpanel.xyz'} - - while True: - response = self.MakeRequest('websites/installWordpressStatus', data_ret) - time.sleep(1) - if response['abort'] == 1: - if response['installStatus'] == 1: - break - else: - logging.writeToFile(response['error_message']) - break - - - exists = 0 - - if self.MakeRequestRaw('http://cyberpanel.xyz').find('Unit Test Joomla') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - def test_prestaShopInstall(self): - - command = 'rm -rf /home/%s/public_html/' % ('cyberpanel.xyz') - ProcessUtilities.normalExecutioner(command) - - command = 'mkdir /home/%s/public_html/' % ('cyberpanel.xyz') - ProcessUtilities.normalExecutioner(command) - - command = 'chown cyberpa:cyberpa /home/%s/public_html/' % ('cyberpanel.xyz') - ProcessUtilities.normalExecutioner(command) - - ## Suspend check - data_ret = {'domain': 'cyberpanel.xyz', 'home': '1', 'shopName': 'Unit Test PrestaShop', 'firstName': 'Usman', 'lastName': 'Nasir', - 'passwordByPass': 'helloworld', 'databasePrefix': 'db_', 'email': 'usman@cyberpersons.com'} - - response = self.MakeRequest('websites/prestaShopInstall', data_ret) - time.sleep(2) - - self.assertEqual(response['status'], 1) - tempStatusPath = response['tempStatusPath'] - - ## Wait for install to complete - - data_ret = {'statusFile': tempStatusPath, 'domainName': 'cyberpanel.xyz'} - - while True: - response = self.MakeRequest('websites/installWordpressStatus', data_ret) - time.sleep(1) - if response['abort'] == 1: - if response['installStatus'] == 1: - break - else: - logging.writeToFile(response['error_message']) - break - - - exists = 0 - - if self.MakeRequestRaw('http://cyberpanel.xyz').find('Unit Test PrestaShop') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - def test_magentoInstall(self): - - command = 'rm -rf /home/%s/public_html/' % ('cyberpanel.xyz') - ProcessUtilities.normalExecutioner(command) - - command = 'mkdir /home/%s/public_html/' % ('cyberpanel.xyz') - ProcessUtilities.normalExecutioner(command) - - command = 'chown cyberpa:cyberpa /home/%s/public_html/' % ('cyberpanel.xyz') - ProcessUtilities.normalExecutioner(command) - - ## Suspend check - data_ret = {'domain': 'cyberpanel.xyz', 'home': '1','firstName': 'Usman', 'lastName': 'Nasir', - 'passwordByPass': 'helloworld1234', 'sampleData': False, 'email': 'usman@cyberpersons.com', 'username': 'usman'} - - response = self.MakeRequest('websites/magentoInstall', data_ret) - logging.writeToFile('ps: ' + str(response)) - time.sleep(2) - - self.assertEqual(response['status'], 1) - tempStatusPath = response['tempStatusPath'] - - ## Wait for install to complete - - data_ret = {'statusFile': tempStatusPath, 'domainName': 'cyberpanel.xyz'} - - while True: - response = self.MakeRequest('websites/installWordpressStatus', data_ret) - time.sleep(1) - if response['abort'] == 1: - if response['installStatus'] == 1: - break - else: - logging.writeToFile(response['error_message']) - break - - - exists = 0 - - if self.MakeRequestRaw('http://cyberpanel.xyz').find('Magento') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - def test_checkConfigFile(self): - ## - - data_ret = {'virtualHost': 'cyberpanel.xyz'} - - response = self.MakeRequest('websites/getDataFromConfigFile', data_ret) - - self.assertEqual(response['status'], 1) - - exists = 0 - - if response['configData'].find('phpIniOverride') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - ## Inserting something in config file - - data_ret = {'virtualHost': 'cyberpanel.xyz', 'configData': response['configData'] + '\nhello world'} - - response = self.MakeRequest('websites/saveConfigsToFile', data_ret) - - self.assertEqual(response['configstatus'], 1) - - ## Check again - - data_ret = {'virtualHost': 'cyberpanel.xyz'} - - response = self.MakeRequest('websites/getDataFromConfigFile', data_ret) - - self.assertEqual(response['status'], 1) - - exists = 0 - - if response['configData'].find('hello world') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - ## Inserting again - - ## Inserting something in config file - - data_ret = {'virtualHost': 'cyberpanel.xyz', 'configData': response['configData']} - - response = self.MakeRequest('websites/saveConfigsToFile', data_ret) - - self.assertEqual(response['configstatus'], 1) - - def test_checkRewriteFile(self): - - ## Inserting something in rewrite file - - data_ret = {'virtualHost': 'cyberpanel.xyz', 'rewriteRules': 'hello world'} - - response = self.MakeRequest('websites/saveRewriteRules', data_ret) - - self.assertEqual(response['rewriteStatus'], 1) - - ## Check again - - data_ret = {'virtualHost': 'cyberpanel.xyz'} - - response = self.MakeRequest('websites/getRewriteRules', data_ret) - - self.assertEqual(response['rewriteStatus'], 1) - - exists = 0 - - if response['rewriteRules'].find('hello world') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - def test_saveSSL(self): - - ## Inserting something in rewrite file - - data_ret = {'virtualHost': 'hey.cyberpanel.xyz', 'key': 'hello world', 'cert': 'hello world'} - - response = self.MakeRequest('websites/saveSSL', data_ret) - - self.assertEqual(response['sslStatus'], 1) - - ## Check again - - certPath = '/etc/letsencrypt/live/hey.cyberpanel.xyz/fullchain.pem' - keyPath = '/etc/letsencrypt/live/hey.cyberpanel.xyz/privkey.pem' - - self.assertGreater(open(certPath, 'r').read().find('hello world'), -1) - self.assertGreater(open(keyPath, 'r').read().find('hello world'), -1) - - def test_changePHP(self): - data_ret = {'childDomain': 'hey.cyberpanel.xyz', 'phpSelection': 'PHP 7.0',} - - response = self.MakeRequest('websites/changePHP', data_ret) - - self.assertEqual(response['status'], 1) - - phpInfoPath = '/home/hey.cyberpanel.xyz/public_html/info.php' - content = "" - writeToFile = open(phpInfoPath, 'w') - writeToFile.write(content) - writeToFile.close() - - time.sleep(2) - - exists = 0 - - if self.MakeRequestRaw('http://hey.cyberpanel.xyz/info.php').find('lsphp70') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - def test_changeOpenBasedir(self): - - ## Check enable - - data_ret = {'domainName': 'hey.cyberpanel.xyz', 'openBasedirValue': 'Enable'} - response = self.MakeRequest('websites/changeOpenBasedir', data_ret) - - self.assertEqual(response['status'], 1) - - time.sleep(3) - - completePathToConfigFile = '/usr/local/lsws/conf/vhosts/%s/vhost.conf' % ('hey.cyberpanel.xyz') - - exists = 0 - - if open(completePathToConfigFile, 'r').read().find('open_basedir') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - ## Check disable - - data_ret = {'domainName': 'hey.cyberpanel.xyz', 'openBasedirValue': 'Disable'} - response = self.MakeRequest('websites/changeOpenBasedir', data_ret) - - self.assertEqual(response['status'], 1) - - time.sleep(3) - - completePathToConfigFile = '/usr/local/lsws/conf/vhosts/%s/vhost.conf' % ('hey.cyberpanel.xyz') - - exists = 0 - - if open(completePathToConfigFile, 'r').read().find('open_basedir') > -1: - exists = 1 - - self.assertEqual(exists, 0) - - def test_submitDomainCreation(self): - - ## Check creation - - data_ret = {'masterDomain': 'cyberpanel.xyz', 'domainName': 'child.cyberpanel.xyz' , 'phpSelection': 'PHP 7.1', 'ssl': 0, 'dkimCheck': 0, 'openBasedir': 0, 'path': ''} - response = self.MakeRequest('websites/submitDomainCreation', data_ret) - - time.sleep(10) - - self.assertEqual(response['status'], 1) - - exists = 0 - - if self.MakeRequestRaw('http://child.cyberpanel.xyz').find('CyberPanel') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - ## Check deletion - - data_ret = {'websiteName': 'child.cyberpanel.xyz'} - response = self.MakeRequest('websites/submitDomainDeletion', data_ret) - - time.sleep(10) - - self.assertEqual(response['status'], 1) - - exists = 0 - - if self.MakeRequestRaw('http://child.cyberpanel.xyz').find('404') > -1: - exists = 1 - - self.assertEqual(exists, 1) - - def test_addNewCron(self): - - ## Check cron creation - - data_ret = {'domain': 'cyberpanel.xyz', 'cronCommand': 'touch /home/cyberpanel.xyz/cron.txt' , 'hour': '*', 'minute': '*', 'month': '*', 'monthday': '*', 'weekday': '*'} - response = self.MakeRequest('websites/addNewCron', data_ret) - - time.sleep(65) - - self.assertEqual(response['addNewCron'], 1) - - import os - self.assertEqual(os.path.exists('/home/cyberpanel.xyz/cron.txt'), True) - - ## - - data_ret = {'domain': 'cyberpanel.xyz', 'line': 1} - response = self.MakeRequest('websites/remCronbyLine', data_ret) - - self.assertEqual(response['remCronbyLine'], 1) - - if ProcessUtilities.decideDistro() == ProcessUtilities.centos: - cronPath = "/var/spool/cron/cyberpa" - else: - cronPath = "/var/spool/cron/crontabs/cyberpa" - - exists = 0 - - if open(cronPath, 'r').read().find('cron.txt') > -1: - exists = 1 - - self.assertEqual(exists, 0) - - +a = "/home/newweb2.com/public_html/newweb2/" +DomainName ="newweb3.com" +abc = a.split("/") +wpexpath = abc[4] +newpath = '/home/%s/public_html/%s' % (DomainName, wpexpath) +print(newpath)