diff --git a/cyberpanel_upgrade.sh b/cyberpanel_upgrade.sh index 457d2bc28..cf18ef552 100644 --- a/cyberpanel_upgrade.sh +++ b/cyberpanel_upgrade.sh @@ -401,6 +401,7 @@ EOF #enabled=1 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial #EOF + rm -f /etc/yum.repos.d/CentOS-PowerTools-CyberPanel.repo if [[ "$Server_Country" = "CN" ]] ; then dnf --nogpg install -y https://cyberpanel.sh/mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el8.noarch.rpm diff --git a/plogical/applicationInstaller.py b/plogical/applicationInstaller.py index 8803bb03e..ef4017134 100755 --- a/plogical/applicationInstaller.py +++ b/plogical/applicationInstaller.py @@ -2274,7 +2274,6 @@ $parameters = array( WPsitepath = wpsite.path websitedomain = website.domain - php = PHPManager.getPHPString(PhpVersion) FinalPHPPath = '/usr/local/lsws/lsphp%s/bin/php' % (php) @@ -2283,7 +2282,6 @@ $parameters = array( logging.statusWriter(self.tempStatusPath, 'Getting database...,20') command = f'{FinalPHPPath} -d error_reporting=0 /usr/bin/wp config get DB_NAME --skip-plugins --skip-themes --path={WPsitepath}' - retStatus, stdoutput = ProcessUtilities.outputExecutioner(command, VHuser, None, None, 1) if stdoutput.find('Error:') == -1: @@ -2348,10 +2346,12 @@ $parameters = array( config['Webadmin_id'] = website.admin_id config['name'] = 'backup-' + websitedomain + "-" + time.strftime("%m.%d.%Y_%H-%M-%S") config['Backuptype'] = "Both Website and DataBase" + ###############Create config.Json file #command = "sudo -u %s touch /home/cyberpanel/config.json" % (VHuser) #ProcessUtilities.executioner(command) ###### write into config + json_object = json.dumps(config, indent=4) configPath = "/home/cyberpanel/" + str(randint(1000, 9999)) file = open(configPath, "w") @@ -2361,13 +2361,16 @@ $parameters = array( os.chmod(configPath, 0o600) command = f"cp -R {configPath} {self.tempPath}" - if ProcessUtilities.executioner(command, VHuser) == 0: - raise BaseException('Failed to copy config file to temp path.') + retStatus, stdoutput = ProcessUtilities.outputExecutioner(command, VHuser, None, None, 1) + if retStatus == 0: + raise BaseException(stdoutput) command = f"rm -r {configPath}" - if ProcessUtilities.executioner(command) == 0: - raise BaseException('Failed to remove config.') + result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1) + + if result == 0: + raise BaseException(stdout) logging.statusWriter(self.tempStatusPath, 'Copying website data.....,50') @@ -2393,7 +2396,6 @@ $parameters = array( logging.statusWriter(self.tempStatusPath, 'Copying database.....,70') - ##### SQLDUMP database into new directory command = "mysqldump %s --result-file %s/%s.sql" % (DataBaseName, self.tempPath, DataBaseName) @@ -2409,8 +2411,6 @@ $parameters = array( ######## Zip backup directory logging.statusWriter(self.tempStatusPath, 'Compressing backup files.....,80') - websitepath = "/home/%s"%websitedomain - command = 'mkdir -p /home/backup/' result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1) @@ -2424,8 +2424,8 @@ $parameters = array( if retStatus == 0: raise BaseException(result) - if os.path.exists(ProcessUtilities.debugPath): - logging.writeToFile(result) + #if os.path.exists(ProcessUtilities.debugPath): + # logging.writeToFile(result) backupobj = WPSitesBackup(owner=Adminobj, WPSiteID=wpsite.id, WebsiteID=website.id, config=json_object) @@ -2490,6 +2490,7 @@ $parameters = array( config['Webadmin_id'] = website.admin_id config['name'] = 'backup-' + websitedomain + "-" + time.strftime("%m.%d.%Y_%H-%M-%S") config['Backuptype'] = "Website Backup" + ###############Create config.Json file # command = "sudo -u %s touch /home/cyberpanel/config.json" % (VHuser) # ProcessUtilities.executioner(command) @@ -2504,13 +2505,16 @@ $parameters = array( os.chmod(configPath, 0o600) command = f"cp -R {configPath} {self.tempPath}" + result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1) - if ProcessUtilities.executioner(command) == 0: - raise BaseException('Failed to copy config file to temp path.') + if result == 0: + raise BaseException(stdout) command = f"rm -r {configPath}" - if ProcessUtilities.executioner(command) == 0: - raise BaseException('Failed to remove config temp file.') + result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1) + + if result == 0: + raise BaseException(stdout) logging.statusWriter(self.tempStatusPath, 'Copying website data.....,50') @@ -2663,10 +2667,6 @@ $parameters = array( ######## Zip backup directory logging.statusWriter(self.tempStatusPath, 'Compressing backup files.....,80') - websitepath = "/home/%s" % websitedomain - - FinalZipPath = '%s/%s.zip' % (websitepath, RandomPath) - command = 'mkdir -p /home/backup/' result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1) @@ -2710,6 +2710,7 @@ $parameters = array( from managePHP.phpManager import PHPManager from websiteFunctions.website import WebsiteManager from packages.models import Package + if os.path.exists(ProcessUtilities.debugPath): logging.writeToFile("Error Restore WP backup Now ....... start:%s"% self.extraArgs['Domain']) @@ -3991,7 +3992,6 @@ $parameters = array( installUtilities.reStartLiteSpeed() - logging.statusWriter(self.tempStatusPath, 'Completed.[200]') except BaseException as msg: logging.writeToFile("Error RestoreWPbackupNow ....... %s" % str(msg)) diff --git a/plogical/vhostConfs.py b/plogical/vhostConfs.py index 16076f806..02872fa1d 100755 --- a/plogical/vhostConfs.py +++ b/plogical/vhostConfs.py @@ -475,7 +475,7 @@ pm.max_spare_servers = {pmMaxSpareServers} realm {{RealM_Name}} { userDB { - location $SERVER_ROOT/conf/vhosts/$VH_NAME/{{wpid}} + location {{PassFile}} } } diff --git a/plogical/virtualHostUtilities.py b/plogical/virtualHostUtilities.py index 9dbb9f453..bf6520cae 100644 --- a/plogical/virtualHostUtilities.py +++ b/plogical/virtualHostUtilities.py @@ -1246,17 +1246,38 @@ class virtualHostUtilities: return DiskUsage, DiskUsagePercentage, bwInMB, bwUsage @staticmethod - def EnableDisablePP(vhostName, username=None, password=None, path=None, wpid=None): + def EnableDisablePP(vhostName, username=None, password=None, path=None, wpid=None, externalApp = None): try: + vhostPassDir = f'/home/{vhostName}' + + uBuntuPath = '/etc/lsb-release' + + if os.path.exists(uBuntuPath): + group = 'nogroup' + else: + group = 'nobody' + + confPath = f'{virtualHostUtilities.vhostConfPath}/vhosts/{vhostName}/vhost.conf' - htpassword = f'{virtualHostUtilities.vhostConfPath}/vhosts/{vhostName}/{wpid}' + htpassword = f'{vhostPassDir}/{wpid}' + htpasstemp = f'/usr/local/CyberCP/{wpid}' + + command = f'touch {htpasstemp}' + ProcessUtilities.executioner(command) + + command = f'chown {externalApp}:{group} {htpasstemp}' + ProcessUtilities.executioner(command) FindLine = f'PASSWORD PROTECTION CONF STARTS {path}' FindLineEnd = f'PASSWORD PROTECTION CONF ENDS {path}' if ProcessUtilities.decideServer() == ProcessUtilities.OLS: if os.path.exists(htpassword): - os.remove(htpassword) + + command = f'rm -f {htpassword}' + ProcessUtilities.executioner(command, externalApp) + + #os.remove(htpassword) removeCheck = 0 data = open(confPath, 'r').readlines() @@ -1279,6 +1300,7 @@ class virtualHostUtilities: OLSPPConf = OLSPPConf.replace('{{RealM_Name}}', str(randint(1000, 9999))) OLSPPConf = OLSPPConf.replace('{{path}}', path) OLSPPConf = OLSPPConf.replace('{{wpid}}', wpid) + OLSPPConf = OLSPPConf.replace('{{PassFile}}', htpassword) writeToFile.write(OLSPPConf) writeToFile.close() @@ -1288,26 +1310,30 @@ class virtualHostUtilities: password = password.encode() hashed = bcrypt.hashpw(password, bcrypt.gensalt()) UserPass = f'{username}:{hashed.decode()}:{username}' - writeToFile = open(htpassword, 'w') + + writeToFile = open(htpasstemp, 'w') writeToFile.write(UserPass) writeToFile.close() - os.chmod(htpassword, 0o644) + command = f'cp {htpasstemp} {htpassword}' + ProcessUtilities.executioner(command, externalApp) - uBuntuPath = '/etc/lsb-release' + os.remove(htpasstemp) - if os.path.exists(uBuntuPath): - group = 'nogroup' - else: - group = 'nobody' + command = f'chmod 640 {htpassword}' + ProcessUtilities.executioner(command, externalApp, True) - command = f'chown lsadm:{group} {htpassword}' + command = f'sudo -u {externalApp} -g {group} chown {externalApp}:{group} {htpassword}' ProcessUtilities.executioner(command) else: RealmName = str(randint(1000, 9999)) htaccesspath = f'{path}/.htaccess' if os.path.exists(htpassword): - os.remove(htpassword) + + command = f'rm -f {htpassword}' + ProcessUtilities.executioner(command, externalApp) + + #os.remove(htpassword) removeCheck = 0 if os.path.exists(htaccesspath): @@ -1340,20 +1366,22 @@ class virtualHostUtilities: password = password.encode() hashed = bcrypt.hashpw(password, bcrypt.gensalt()) UserPass = f'{username}:{hashed.decode()}:{username}' - writeToFile = open(htpassword, 'w') + + + writeToFile = open(htpasstemp, 'w') writeToFile.write(UserPass) writeToFile.close() - os.chmod(htpassword, 0o644) + command = f'cp {htpasstemp} {htpassword}' + ProcessUtilities.executioner(command, externalApp) - uBuntuPath = '/etc/lsb-release' + os.remove(htpasstemp) - if os.path.exists(uBuntuPath): - group = 'nogroup' - else: - group = 'nobody' + command = f'chmod 640 {htpassword}' + ProcessUtilities.executioner(command, externalApp, True) - command = f'chown lsadm:{group} {htpassword}' + + command = f'sudo -u {externalApp} -g {group} chown {externalApp}:{group} {htpassword}' ProcessUtilities.executioner(command) installUtilities.installUtilities.reStartLiteSpeed() @@ -1534,7 +1562,7 @@ def main(): elif args.function == 'switchServer': virtualHostUtilities.switchServer(args.virtualHostName, args.phpVersion, int(args.server), args.tempStatusPath) elif args.function == 'EnableDisablePP': - virtualHostUtilities.EnableDisablePP(args.virtualHostName, args.username, args.password, args.path, args.wpid) + virtualHostUtilities.EnableDisablePP(args.virtualHostName, args.username, args.password, args.path, args.wpid, args.virtualHostUser) if __name__ == "__main__": diff --git a/websiteFunctions/templates/websiteFunctions/RestoreBackups.html b/websiteFunctions/templates/websiteFunctions/RestoreBackups.html index c90bd0e86..e5f18e4c1 100644 --- a/websiteFunctions/templates/websiteFunctions/RestoreBackups.html +++ b/websiteFunctions/templates/websiteFunctions/RestoreBackups.html @@ -101,7 +101,7 @@ Website - BackUp Tpye + Type Action diff --git a/websiteFunctions/website.py b/websiteFunctions/website.py index 55321b991..fadfeeb3c 100755 --- a/websiteFunctions/website.py +++ b/websiteFunctions/website.py @@ -872,6 +872,19 @@ class WebsiteManager: backupid = data['backupid'] DesSiteID = data['DesSite'] + # bwp = WPSites.objects.get(pk=int(backupid)) + # dwp = WPSites.objects.get(pk=int(DesSiteID)) + # + # if ACLManager.checkOwnership(bwp.owner.domain, admin, currentACL) == 1: + # pass + # else: + # return ACLManager.loadError() + # + # if ACLManager.checkOwnership(dwp.owner.domain, admin, currentACL) == 1: + # pass + # else: + # return ACLManager.loadError() + Domain = data['Domain'] @@ -1347,7 +1360,8 @@ class WebsiteManager: stdoutput = ProcessUtilities.outputExecutioner(command) elif setting == 'PasswordProtection': execPath = f"/usr/local/CyberCP/bin/python {virtualHostUtilities.cyberPanel}/plogical/virtualHostUtilities.py" - execPath = f"{execPath} EnableDisablePP --username '{PPUsername}' --password '{PPPassword}' --virtualHostName {Webobj.domain} --path {path} --wpid {str(wpsite.id)}" + execPath = f"{execPath} EnableDisablePP --username '{PPUsername}' --password '{PPPassword}' " \ + f"--virtualHostName {Webobj.domain} --path {path} --wpid {str(wpsite.id)} --virtualHostUser {Webobj.externalApp}" ProcessUtilities.executioner(execPath)