Merge branch 'v2.3.2-dev' of https://github.com/usmannasir/cyberpanel into v2.3.2-dev

This commit is contained in:
Hassan Hashmi
2022-06-17 20:51:09 +05:00
10 changed files with 354 additions and 207 deletions

View File

@@ -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

View File

@@ -211,21 +211,25 @@ def FileManagerRoot(request):
try:
url = "https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission"
data = {
"name": "Filemanager",
"IP": ipAddressLocal
}
from plogical.processUtilities import ProcessUtilities
if ProcessUtilities.decideServer() == ProcessUtilities.OLS:
import requests
response = requests.post(url, data=json.dumps(data))
Status = response.json()['status']
url = "https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission"
data = {
"name": "Filemanager",
"IP": ipAddressLocal
}
if(Status == 1):
template = 'baseTemplate/FileManager.html'
import requests
response = requests.post(url, data=json.dumps(data))
Status = response.json()['status']
if(Status == 1):
template = 'baseTemplate/FileManager.html'
else:
return redirect("https://cyberpanel.net/cyberpanel-addons")
else:
return redirect("https://cyberpanel.net/cyberpanel-addons")
template = 'baseTemplate/FileManager.html'
except BaseException as msg:
template = 'baseTemplate/FileManager.html'

View File

@@ -383,6 +383,8 @@ class IncScheduler(multi.Thread):
#logging.writeToFile('job completed')
url = "https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission"
data = {
"name": "backups-retention",
@@ -393,7 +395,7 @@ class IncScheduler(multi.Thread):
response = requests.post(url, data=json.dumps(data))
Status = response.json()['status']
if (Status == 1):
if (Status == 1) or ProcessUtilities.decideServer() == ProcessUtilities.ent:
try:
page_token = None
@@ -457,7 +459,6 @@ class IncScheduler(multi.Thread):
except BaseException as msg:
print('An error occurred fetch child: %s' % msg)
logging.writeToFile('An error occurred fetch child: %s' % msg)
except BaseException as msg:
logging.writeToFile('job not completed [ERROR:]..%s'%msg)

View File

@@ -931,4 +931,30 @@ class ACLManager:
return wpsites
@staticmethod
def GetServerIP():
ipFile = "/etc/cyberpanel/machineIP"
f = open(ipFile)
ipData = f.read()
return ipData.split('\n', 1)[0]
@staticmethod
def CheckForPremFeature(feature):
try:
if ProcessUtilities.decideServer() == ProcessUtilities.ent:
return 1
url = "https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission"
data = {
"name": feature,
"IP": ACLManager.GetServerIP()
}
import requests
response = requests.post(url, data=json.dumps(data))
return response.json()['status']
except:
return 1

View File

@@ -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))

View File

@@ -475,7 +475,7 @@ pm.max_spare_servers = {pmMaxSpareServers}
realm {{RealM_Name}} {
userDB {
location $SERVER_ROOT/conf/vhosts/$VH_NAME/{{wpid}}
location {{PassFile}}
}
}

View File

@@ -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__":

View File

@@ -1,5 +1,6 @@
#!/usr/local/CyberCP/bin/python
import os,sys
import time
sys.path.append('/usr/local/CyberCP')
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
@@ -15,12 +16,21 @@ from plogical.virtualHostUtilities import virtualHostUtilities
from plogical.sslUtilities import sslUtilities
from plogical.vhost import vhost
from shutil import ignore_patterns
import threading as multi
class ServerStatusUtil:
class ServerStatusUtil(multi.Thread):
lswsInstallStatusPath = '/home/cyberpanel/switchLSWSStatus'
serverRootPath = '/usr/local/lsws/'
def __init__(self, key):
multi.Thread.__init__(self)
self.key = key
def run(self):
self.switchTOLSWS(self.key)
@staticmethod
def executioner(command, statusFile):
try:
@@ -383,26 +393,28 @@ class ServerStatusUtil:
def switchTOLSWSCLI(licenseKey):
try:
ServerStatusUtil.switchTOLSWS(licenseKey)
ssu = ServerStatusUtil(licenseKey)
ssu.start()
command = 'sudo cat ' + ServerStatusUtil.lswsInstallStatusPath
output = ProcessUtilities.outputExecutioner(command)
if output.find('[404]') > -1:
command = "sudo rm -f " + ServerStatusUtil.lswsInstallStatusPath
ProcessUtilities.popenExecutioner(command)
data_ret = {'status': 1, 'abort': 1, 'requestStatus': output, 'installed': 0}
print(str(data_ret))
return 0
elif output.find('[200]') > -1:
command = "sudo rm -f " + ServerStatusUtil.lswsInstallStatusPath
ProcessUtilities.popenExecutioner(command)
data_ret = {'status': 1, 'abort': 1, 'requestStatus': 'Successfully converted.', 'installed': 1}
print(str(data_ret))
return 1
else:
data_ret = {'status': 1, 'abort': 0, 'requestStatus': output, 'installed': 0}
print(output)
while(True):
command = 'sudo cat ' + ServerStatusUtil.lswsInstallStatusPath
output = ProcessUtilities.outputExecutioner(command)
if output.find('[404]') > -1:
command = "sudo rm -f " + ServerStatusUtil.lswsInstallStatusPath
ProcessUtilities.popenExecutioner(command)
data_ret = {'status': 1, 'abort': 1, 'requestStatus': output, 'installed': 0}
print(str(data_ret))
return 0
elif output.find('[200]') > -1:
command = "sudo rm -f " + ServerStatusUtil.lswsInstallStatusPath
ProcessUtilities.popenExecutioner(command)
data_ret = {'status': 1, 'abort': 1, 'requestStatus': 'Successfully converted.', 'installed': 1}
print(str(data_ret))
return 1
else:
data_ret = {'status': 1, 'abort': 0, 'requestStatus': output, 'installed': 0}
#print(output)
time.sleep(2)
except BaseException as msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))

View File

@@ -101,7 +101,7 @@
</th>
<th style="padding: 18px; color: white; width: 161px; font-size: 12px;">Website
</th>
<th style="padding: 18px; color: white; width: 161px; font-size: 12px;">BackUp Tpye
<th style="padding: 18px; color: white; width: 161px; font-size: 12px;">Type
</th>
<th style="padding: 18px; color: white; width: 161px; font-size: 12px;">Action
</th>

View File

@@ -17,7 +17,7 @@ from plogical.virtualHostUtilities import virtualHostUtilities
import subprocess
import shlex
from plogical.installUtilities import installUtilities
from django.shortcuts import HttpResponse, render
from django.shortcuts import HttpResponse, render, redirect
from loginSystem.models import Administrator, ACL
from packages.models import Package
from plogical.mailUtilities import mailUtilities
@@ -60,31 +60,44 @@ class WebsiteManager:
return proc.render()
def WPCreate(self, request=None, userID=None, data=None):
currentACL = ACLManager.loadedACL(userID)
adminNames = ACLManager.loadAllUsers(userID)
packagesName = ACLManager.loadPackages(userID, currentACL)
FinalVersions = []
userobj = Administrator.objects.get(pk=userID)
counter = 0
try:
import requests
WPVersions = json.loads(requests.get('https://api.wordpress.org/core/version-check/1.7/').text)['offers']
url = "https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission"
data = {
"name": "wp-manager",
"IP": ACLManager.GetServerIP()
}
for versions in WPVersions:
if counter == 7:
break
if versions['current'] not in FinalVersions:
FinalVersions.append(versions['current'])
counter = counter + 1
except:
FinalVersions = ['5.6', '5.5.3', '5.5.2']
import requests
response = requests.post(url, data=json.dumps(data))
Status = response.json()['status']
Plugins = wpplugins.objects.filter(owner=userobj)
if (Status == 1) or ProcessUtilities.decideServer() == ProcessUtilities.ent:
currentACL = ACLManager.loadedACL(userID)
adminNames = ACLManager.loadAllUsers(userID)
packagesName = ACLManager.loadPackages(userID, currentACL)
FinalVersions = []
userobj = Administrator.objects.get(pk=userID)
counter = 0
try:
import requests
WPVersions = json.loads(requests.get('https://api.wordpress.org/core/version-check/1.7/').text)['offers']
Data = {'packageList': packagesName, "owernList": adminNames, 'WPVersions': FinalVersions, 'Plugins': Plugins }
proc = httpProc(request, 'websiteFunctions/WPCreate.html',
Data, 'createWebsite')
return proc.render()
for versions in WPVersions:
if counter == 7:
break
if versions['current'] not in FinalVersions:
FinalVersions.append(versions['current'])
counter = counter + 1
except:
FinalVersions = ['5.6', '5.5.3', '5.5.2']
Plugins = wpplugins.objects.filter(owner=userobj)
Data = {'packageList': packagesName, "owernList": adminNames, 'WPVersions': FinalVersions, 'Plugins': Plugins }
proc = httpProc(request, 'websiteFunctions/WPCreate.html',
Data, 'createWebsite')
return proc.render()
else:
return redirect("https://cyberpanel.net/cyberpanel-addons")
def ListWPSites(self, request=None, userID=None, DeleteID=None):
currentACL = ACLManager.loadedACL(userID)
@@ -126,89 +139,116 @@ class WebsiteManager:
else:
return ACLManager.loadError()
Data['wpsite'] = WPobj
url = "https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission"
data = {
"name": "wp-manager",
"IP": ACLManager.GetServerIP()
}
try:
DeleteID = request.GET.get('DeleteID', None)
import requests
response = requests.post(url, data=json.dumps(data))
Status = response.json()['status']
if DeleteID != None:
wstagingDelete = WPStaging.objects.get(pk=DeleteID, owner=WPobj)
wstagingDelete.delete()
if (Status == 1) or ProcessUtilities.decideServer() == ProcessUtilities.ent:
Data['wpsite'] = WPobj
except BaseException as msg:
da= str(msg)
try:
DeleteID = request.GET.get('DeleteID', None)
proc = httpProc(request, 'websiteFunctions/WPsiteHome.html',
Data, 'createWebsite')
return proc.render()
if DeleteID != None:
wstagingDelete = WPStaging.objects.get(pk=DeleteID, owner=WPobj)
wstagingDelete.delete()
except BaseException as msg:
da= str(msg)
proc = httpProc(request, 'websiteFunctions/WPsiteHome.html',
Data, 'createWebsite')
return proc.render()
else:
return redirect("https://cyberpanel.net/cyberpanel-addons")
def RestoreHome(self, request=None, userID=None, BackupID=None ):
Data = {}
currentACL = ACLManager.loadedACL(userID)
Data['backupobj'] = WPSitesBackup.objects.get(pk=BackupID)
if ACLManager.CheckForPremFeature('wp-manager'):
config = json.loads(Data['backupobj'].config)
Data['FileName']= config['name']
try:
Data['Backuptype']= config['Backuptype']
except:
Data['Backuptype'] = None
Data['WPsites'] = ACLManager.GetALLWPObjects(currentACL, userID)
proc = httpProc(request, 'websiteFunctions/WPRestoreHome.html',
Data, 'createWebsite')
return proc.render()
Data['backupobj'] = WPSitesBackup.objects.get(pk=BackupID)
config = json.loads(Data['backupobj'].config)
Data['FileName']= config['name']
try:
Data['Backuptype']= config['Backuptype']
except:
Data['Backuptype'] = None
Data['WPsites'] = ACLManager.GetALLWPObjects(currentACL, userID)
proc = httpProc(request, 'websiteFunctions/WPRestoreHome.html',
Data, 'createWebsite')
return proc.render()
else:
return redirect("https://cyberpanel.net/cyberpanel-addons")
def RestoreBackups(self, request=None, userID=None, DeleteID=None):
Data = {}
currentACL = ACLManager.loadedACL(userID)
admin = Administrator.objects.get(pk=userID)
backobj = WPSitesBackup.objects.filter(owner=admin).order_by('-id')
url = "https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission"
data = {
"name": "wp-manager",
"IP": ACLManager.GetServerIP()
}
try:
if DeleteID != None:
DeleteIDobj = WPSitesBackup.objects.get(pk=DeleteID, owner=admin)
config = DeleteIDobj.config
conf = json.loads(config)
FileName = conf['name']
command = "rm -r /home/backup/%s.tar.gz"%FileName
ProcessUtilities.executioner(command)
DeleteIDobj.delete()
import requests
response = requests.post(url, data=json.dumps(data))
Status = response.json()['status']
except BaseException as msg:
pass
Data['job'] = []
if (Status == 1) or ProcessUtilities.decideServer() == ProcessUtilities.ent:
for sub in backobj:
try:
wpsite = WPSites.objects.get(pk=sub.WPSiteID)
web = wpsite.title
except:
web = "Website Not Found"
backobj = WPSitesBackup.objects.filter(owner=admin).order_by('-id')
try:
config = sub.config
conf = json.loads(config)
Backuptype = conf['Backuptype']
except:
Backuptype = "Backup type not exists"
if DeleteID != None:
DeleteIDobj = WPSitesBackup.objects.get(pk=DeleteID, owner=admin)
config = DeleteIDobj.config
conf = json.loads(config)
FileName = conf['name']
command = "rm -r /home/backup/%s.tar.gz"%FileName
ProcessUtilities.executioner(command)
DeleteIDobj.delete()
except BaseException as msg:
pass
Data['job'] = []
for sub in backobj:
try:
wpsite = WPSites.objects.get(pk=sub.WPSiteID)
web = wpsite.title
except:
web = "Website Not Found"
try:
config = sub.config
conf = json.loads(config)
Backuptype = conf['Backuptype']
except:
Backuptype = "Backup type not exists"
Data['job'].append({
'id': sub.id,
'title': web,
'Backuptype': Backuptype
})
Data['job'].append({
'id': sub.id,
'title': web,
'Backuptype': Backuptype
})
proc = httpProc(request, 'websiteFunctions/RestoreBackups.html',
Data, 'createWebsite')
return proc.render()
proc = httpProc(request, 'websiteFunctions/RestoreBackups.html',
Data, 'createWebsite')
return proc.render()
else:
return redirect("https://cyberpanel.net/cyberpanel-addons")
def AutoLogin(self, request=None, userID=None):
@@ -225,76 +265,99 @@ class WebsiteManager:
#php = VirtualHost.getPHPString(self.data['PHPVersion'])
#FinalPHPPath = '/usr/local/lsws/lsphp%s/bin/php' % (php)
## Get title
url = "https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission"
data = {
"name": "wp-manager",
"IP": ACLManager.GetServerIP()
}
password = randomPassword.generate_pass(10)
import requests
response = requests.post(url, data=json.dumps(data))
Status = response.json()['status']
command = 'sudo -u %s wp user create autologin %s --role=administrator --user_pass="%s" --path=%s --skip-plugins --skip-themes' % (WPobj.owner.externalApp, 'autologin@cloudpages.cloud', password, WPobj.path)
ProcessUtilities.executioner(command)
if (Status == 1) or ProcessUtilities.decideServer() == ProcessUtilities.ent:
command = 'sudo -u %s wp user update autologin --user_pass="%s" --path=%s --skip-plugins --skip-themes' % (WPobj.owner.externalApp, password, WPobj.path)
ProcessUtilities.executioner(command)
## Get title
data = {}
password = randomPassword.generate_pass(10)
if WPobj.FinalURL.endswith('/'):
FinalURL = WPobj.FinalURL[:-1]
command = 'sudo -u %s wp user create autologin %s --role=administrator --user_pass="%s" --path=%s --skip-plugins --skip-themes' % (WPobj.owner.externalApp, 'autologin@cloudpages.cloud', password, WPobj.path)
ProcessUtilities.executioner(command)
command = 'sudo -u %s wp user update autologin --user_pass="%s" --path=%s --skip-plugins --skip-themes' % (WPobj.owner.externalApp, password, WPobj.path)
ProcessUtilities.executioner(command)
data = {}
if WPobj.FinalURL.endswith('/'):
FinalURL = WPobj.FinalURL[:-1]
else:
FinalURL = WPobj.FinalURL
data['url'] = 'https://%s' % (FinalURL)
data['userName'] = 'autologin'
data['password'] = password
proc = httpProc(request, 'websiteFunctions/AutoLogin.html',
data, 'createWebsite')
return proc.render()
else:
FinalURL = WPobj.FinalURL
data['url'] = 'https://%s' % (FinalURL)
data['userName'] = 'autologin'
data['password'] = password
proc = httpProc(request, 'websiteFunctions/AutoLogin.html',
data, 'createWebsite')
return proc.render()
return redirect("https://cyberpanel.net/cyberpanel-addons")
def ConfigurePlugins(self, request=None, userID=None, data=None):
DataPass ={}
currentACL = ACLManager.loadedACL(userID)
userobj = Administrator.objects.get(pk=userID)
if ACLManager.CheckForPremFeature('wp-manager'):
currentACL = ACLManager.loadedACL(userID)
userobj = Administrator.objects.get(pk=userID)
Selectedplugins = wpplugins.objects.filter(owner = userobj)
#data['Selectedplugins'] = wpplugins.objects.filter(ProjectOwner=HostingCompany)
Selectedplugins = wpplugins.objects.filter(owner = userobj)
#data['Selectedplugins'] = wpplugins.objects.filter(ProjectOwner=HostingCompany)
Data = {'Selectedplugins' : Selectedplugins,}
proc = httpProc(request, 'websiteFunctions/WPConfigurePlugins.html',
Data, 'createWebsite')
return proc.render()
Data = {'Selectedplugins' : Selectedplugins,}
proc = httpProc(request, 'websiteFunctions/WPConfigurePlugins.html',
Data, 'createWebsite')
return proc.render()
else:
return redirect("https://cyberpanel.net/cyberpanel-addons")
def Addnewplugin(self, request=None, userID=None, data=None):
currentACL = ACLManager.loadedACL(userID)
adminNames = ACLManager.loadAllUsers(userID)
packagesName = ACLManager.loadPackages(userID, currentACL)
phps = PHPManager.findPHPVersions()
if ACLManager.CheckForPremFeature('wp-manager'):
currentACL = ACLManager.loadedACL(userID)
adminNames = ACLManager.loadAllUsers(userID)
packagesName = ACLManager.loadPackages(userID, currentACL)
phps = PHPManager.findPHPVersions()
Data = {'packageList': packagesName, "owernList": adminNames, 'phps': phps}
proc = httpProc(request, 'websiteFunctions/WPAddNewPlugin.html',
Data, 'createWebsite')
return proc.render()
Data = {'packageList': packagesName, "owernList": adminNames, 'phps': phps}
proc = httpProc(request, 'websiteFunctions/WPAddNewPlugin.html',
Data, 'createWebsite')
return proc.render()
return redirect("https://cyberpanel.net/cyberpanel-addons")
def SearchOnkeyupPlugin(self, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
if ACLManager.CheckForPremFeature('wp-manager'):
currentACL = ACLManager.loadedACL(userID)
pluginname = data['pluginname']
# logging.CyberCPLogFileWriter.writeToFile("Plugin Name ....... %s"%pluginname)
pluginname = data['pluginname']
# logging.CyberCPLogFileWriter.writeToFile("Plugin Name ....... %s"%pluginname)
url = "http://api.wordpress.org/plugins/info/1.1/?action=query_plugins&request[search]=%s" % str(pluginname)
import requests
url = "http://api.wordpress.org/plugins/info/1.1/?action=query_plugins&request[search]=%s" % str(pluginname)
import requests
res = requests.get(url)
r = res.json()
res = requests.get(url)
r = res.json()
# return proc.ajax(1, 'Done', {'plugins': r})
# return proc.ajax(1, 'Done', {'plugins': r})
data_ret = {'status': 1,'plugns': r,}
data_ret = {'status': 1,'plugns': r,}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
else:
data_ret = {'status': 0, 'createWebSiteStatus': 0, 'error_message': 'Premium feature not available.'}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except BaseException as msg:
data_ret = {'status': 0, 'createWebSiteStatus': 0, 'error_message': str(msg)}
@@ -715,7 +778,6 @@ class WebsiteManager:
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def DeploytoProduction(self, userID=None, data=None):
try:
@@ -762,7 +824,6 @@ class WebsiteManager:
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def WPCreateBackup(self, userID=None, data=None):
try:
@@ -802,7 +863,6 @@ class WebsiteManager:
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def RestoreWPbackupNow(self, userID=None, data=None):
try:
@@ -812,6 +872,20 @@ 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']
@@ -1286,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)