mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-10-31 18:36:17 +01:00
Bug fix to CLI and API.
This commit is contained in:
84
api/views.py
84
api/views.py
@@ -68,24 +68,6 @@ def createWebsite(request):
|
||||
externalApp = "".join(re.findall("[a-zA-Z]+", domain))[:7]
|
||||
|
||||
|
||||
try:
|
||||
website = Websites.objects.get(domain=domain)
|
||||
data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0,
|
||||
'error_message': "Website Already Exists"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
except:
|
||||
pass
|
||||
|
||||
try:
|
||||
website = ChildDomains.objects.get(domain=domain)
|
||||
data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0,
|
||||
'error_message': "Website Already Exists"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
except:
|
||||
pass
|
||||
|
||||
phpSelection = "PHP 7.0"
|
||||
|
||||
admin = Administrator.objects.get(userName=adminUser)
|
||||
@@ -109,40 +91,34 @@ def createWebsite(request):
|
||||
except BaseException,msg:
|
||||
pass
|
||||
|
||||
|
||||
## Create Configurations
|
||||
|
||||
numberOfWebsites = str(Websites.objects.count() + ChildDomains.objects.count())
|
||||
sslpath = "/home/" + domain + "/public_html"
|
||||
|
||||
## Create Configurations
|
||||
|
||||
execPath = "sudo python " + virtualHostUtilities.cyberPanel + "/plogical/virtualHostUtilities.py"
|
||||
|
||||
execPath = execPath + " createVirtualHost --virtualHostName " + domain + " --administratorEmail " + adminEmail + " --phpVersion '" + phpSelection + "' --virtualHostUser " + externalApp + " --numberOfSites " + numberOfWebsites + " --ssl " + str(
|
||||
'0') + " --sslPath " + sslpath
|
||||
execPath = execPath + " createVirtualHost --virtualHostName " + domain + \
|
||||
" --administratorEmail " + adminEmail + " --phpVersion '" + phpSelection + \
|
||||
"' --virtualHostUser " + externalApp + " --numberOfSites " + numberOfWebsites + \
|
||||
" --ssl " + str(data['ssl']) + " --sslPath " + sslpath + " --dkimCheck " + str(data['dkimCheck']) \
|
||||
+ " --openBasedir " + str(data['openBasedir']) + ' --websiteOwner ' + websiteOwner \
|
||||
+ ' --package ' + packageName
|
||||
|
||||
output = subprocess.check_output(shlex.split(execPath))
|
||||
|
||||
if output.find("1,None") > -1:
|
||||
pass
|
||||
data_ret = {'createWebSiteStatus': 1, 'error_message': "None", "existsStatus": 0}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
else:
|
||||
data_ret = {'createWebSiteStatus': 0, 'error_message': output, "existsStatus": 0}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
## Create Configurations ends here
|
||||
|
||||
|
||||
selectedPackage = Package.objects.get(packageName=packageName)
|
||||
|
||||
websiteOwn = Administrator.objects.get(userName=websiteOwner)
|
||||
|
||||
website = Websites(admin=websiteOwn, package=selectedPackage, domain=domain, adminEmail=adminEmail,
|
||||
phpSelection=phpSelection, ssl=0,externalApp=externalApp)
|
||||
|
||||
website.save()
|
||||
|
||||
data_ret = {'createWebSiteStatus': 1, 'error_message': "None", "existsStatus": 0}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except BaseException, msg:
|
||||
data_ret = {'createWebSiteStatus': 0, 'error_message': str(msg), "existsStatus": 0}
|
||||
@@ -248,39 +224,19 @@ def deleteWebsite(request):
|
||||
|
||||
## Deleting master domain
|
||||
|
||||
website = Websites.objects.get(domain=websiteName)
|
||||
websiteOwner = website.admin
|
||||
|
||||
if admin.websites_set.all().count() == 0:
|
||||
websiteOwner.delete()
|
||||
|
||||
execPath = "sudo python " + virtualHostUtilities.cyberPanel + "/plogical/virtualHostUtilities.py"
|
||||
|
||||
execPath = execPath + " deleteVirtualHostConfigurations --virtualHostName " + websiteName + " --numberOfSites " + numberOfWebsites
|
||||
execPath = execPath + " deleteVirtualHostConfigurations --virtualHostName " + websiteName + \
|
||||
" --numberOfSites " + numberOfWebsites
|
||||
|
||||
subprocess.check_output(shlex.split(execPath))
|
||||
|
||||
delWebsite = Websites.objects.get(domain=websiteName)
|
||||
databases = Databases.objects.filter(website=delWebsite)
|
||||
|
||||
childDomains = delWebsite.childdomains_set.all()
|
||||
|
||||
## Deleting child domains
|
||||
|
||||
for items in childDomains:
|
||||
numberOfWebsites = str(Websites.objects.count() + ChildDomains.objects.count())
|
||||
execPath = "sudo python " + virtualHostUtilities.cyberPanel + "/plogical/virtualHostUtilities.py"
|
||||
execPath = execPath + " deleteVirtualHostConfigurations --virtualHostName " + items.domain + " --numberOfSites " + numberOfWebsites
|
||||
|
||||
subprocess.check_output(shlex.split(execPath))
|
||||
|
||||
for items in databases:
|
||||
mysqlUtilities.deleteDatabase(items.dbName, items.dbUser)
|
||||
|
||||
delWebsite.delete()
|
||||
|
||||
try:
|
||||
delZone = Domains.objects.get(name=websiteName)
|
||||
delZone.delete()
|
||||
except:
|
||||
pass
|
||||
|
||||
installUtilities.reStartLiteSpeed()
|
||||
|
||||
data_ret = {'websiteDeleteStatus': 1, 'error_message': "None"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
@@ -19,11 +19,6 @@ import requests
|
||||
from baseTemplate.models import version
|
||||
from plogical.virtualHostUtilities import virtualHostUtilities
|
||||
from random import randint
|
||||
from xml.etree.ElementTree import Element, SubElement
|
||||
from xml.etree import ElementTree
|
||||
from xml.dom import minidom
|
||||
from dns.models import Domains,Records
|
||||
from mailServer.models import Domains as eDomains
|
||||
from plogical.mailUtilities import mailUtilities
|
||||
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ class cyberPanel:
|
||||
def createWebsite(self, package, owner, domainName, email, php, ssl, dkim, openBasedir):
|
||||
try:
|
||||
externalApp = "".join(re.findall("[a-zA-Z]+", domainName))[:7]
|
||||
numberOfWebsites = str(Websites.objects.count() + ChildDomains.objects.count())
|
||||
numberOfWebsites = Websites.objects.count() + ChildDomains.objects.count()
|
||||
sslpath = "/home/" + domainName + "/public_html"
|
||||
phpSelection = 'PHP ' + php
|
||||
|
||||
@@ -821,17 +821,17 @@ def main():
|
||||
return
|
||||
|
||||
if args.ssl:
|
||||
ssl = args.ssl
|
||||
ssl = int(args.ssl)
|
||||
else:
|
||||
ssl = 0
|
||||
|
||||
if args.dkim:
|
||||
dkim = args.dkim
|
||||
dkim = int(args.dkim)
|
||||
else:
|
||||
dkim = 0
|
||||
|
||||
if args.openBasedir:
|
||||
openBasedir = args.openBasedir
|
||||
openBasedir = int(args.openBasedir)
|
||||
else:
|
||||
openBasedir = 0
|
||||
|
||||
@@ -867,17 +867,17 @@ def main():
|
||||
return
|
||||
|
||||
if args.ssl:
|
||||
ssl = args.ssl
|
||||
ssl = int(args.ssl)
|
||||
else:
|
||||
ssl = 0
|
||||
|
||||
if args.dkim:
|
||||
dkim = args.dkim
|
||||
dkim = int(args.dkim)
|
||||
else:
|
||||
dkim = 0
|
||||
|
||||
if args.openBasedir:
|
||||
openBasedir = args.openBasedir
|
||||
openBasedir = int(args.openBasedir)
|
||||
else:
|
||||
openBasedir = 0
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@ import os
|
||||
import shlex
|
||||
from firewallUtilities import FirewallUtilities
|
||||
import time
|
||||
import string
|
||||
import random
|
||||
|
||||
# There can not be peace without first a great suffering.
|
||||
|
||||
@@ -961,7 +963,7 @@ class preFlightsChecks:
|
||||
count = 0
|
||||
|
||||
while(1):
|
||||
command = 'wget https://files.phpmyadmin.net/phpMyAdmin/4.7.7/phpMyAdmin-4.7.7-all-languages.zip'
|
||||
command = 'wget https://files.phpmyadmin.net/phpMyAdmin/4.8.1/phpMyAdmin-4.8.1-all-languages.zip'
|
||||
cmd = shlex.split(command)
|
||||
res = subprocess.call(cmd)
|
||||
|
||||
@@ -982,7 +984,7 @@ class preFlightsChecks:
|
||||
count = 0
|
||||
|
||||
while(1):
|
||||
command = 'unzip phpMyAdmin-4.7.7-all-languages.zip'
|
||||
command = 'unzip phpMyAdmin-4.8.1-all-languages.zip'
|
||||
cmd = shlex.split(command)
|
||||
res = subprocess.call(cmd)
|
||||
|
||||
@@ -1005,12 +1007,12 @@ class preFlightsChecks:
|
||||
|
||||
###
|
||||
|
||||
os.remove("phpMyAdmin-4.7.7-all-languages.zip")
|
||||
os.remove("phpMyAdmin-4.8.1-all-languages.zip")
|
||||
|
||||
count = 0
|
||||
|
||||
while(1):
|
||||
command = 'mv phpMyAdmin-4.7.7-all-languages phpmyadmin'
|
||||
command = 'mv phpMyAdmin-4.8.1-all-languages phpmyadmin'
|
||||
|
||||
cmd = shlex.split(command)
|
||||
|
||||
@@ -1033,6 +1035,31 @@ class preFlightsChecks:
|
||||
"[" + time.strftime("%I-%M-%S-%a-%b-%Y") + "] " + "PHPMYAdmin Successfully installed!")
|
||||
break
|
||||
|
||||
## Write secret phrase
|
||||
|
||||
|
||||
rString = ''.join([random.choice(string.ascii_letters + string.digits) for n in xrange(32)])
|
||||
|
||||
data = open('phpmyadmin/config.sample.inc.php', 'r').readlines()
|
||||
|
||||
writeToFile = open('phpmyadmin/config.inc.php', 'w')
|
||||
|
||||
|
||||
for items in data:
|
||||
if items.find('blowfish_secret') > -1:
|
||||
writeToFile.writelines("$cfg['blowfish_secret'] = '" + rString + "'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */\n")
|
||||
else:
|
||||
writeToFile.writelines(items)
|
||||
|
||||
writeToFile.writelines("$cfg['TempDir'] = '/usr/local/lscp/cyberpanel/phpmyadmin/tmp';\n")
|
||||
|
||||
writeToFile.close()
|
||||
|
||||
os.mkdir('/usr/local/lscp/cyberpanel/phpmyadmin/tmp')
|
||||
|
||||
command = 'chown -R nobody:nobody /usr/local/lscp/cyberpanel/phpmyadmin'
|
||||
subprocess.call(shlex.split(command))
|
||||
|
||||
except OSError, msg:
|
||||
logging.InstallLog.writeToFile(str(msg) + " [download_install_phpmyadmin]")
|
||||
return 0
|
||||
|
||||
@@ -239,6 +239,41 @@ class DNS:
|
||||
auth=1)
|
||||
record.save()
|
||||
|
||||
## TXT Records for mail
|
||||
|
||||
record = Records(domainOwner=zone,
|
||||
domain_id=zone.id,
|
||||
name=topLevelDomain,
|
||||
type="TXT",
|
||||
content="v=spf1 a mx ip4:" + ipAddress + " ~all",
|
||||
ttl=3600,
|
||||
prio=0,
|
||||
disabled=0,
|
||||
auth=1)
|
||||
record.save()
|
||||
|
||||
record = Records(domainOwner=zone,
|
||||
domain_id=zone.id,
|
||||
name="_dmarc." + topLevelDomain,
|
||||
type="TXT",
|
||||
content="v=DMARC1; p=none",
|
||||
ttl=3600,
|
||||
prio=0,
|
||||
disabled=0,
|
||||
auth=1)
|
||||
record.save()
|
||||
|
||||
record = Records(domainOwner=zone,
|
||||
domain_id=zone.id,
|
||||
name="_domainkey." + topLevelDomain,
|
||||
type="TXT",
|
||||
content="t=y; o=~;",
|
||||
ttl=3600,
|
||||
prio=0,
|
||||
disabled=0,
|
||||
auth=1)
|
||||
record.save()
|
||||
|
||||
## Creating sub-domain level record.
|
||||
|
||||
zone = Domains.objects.get(name=topLevelDomain)
|
||||
@@ -287,7 +322,7 @@ class DNS:
|
||||
|
||||
except BaseException, msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(
|
||||
"We had errors while creating DNS records for: " + domain + ". Error message: " + str(msg))
|
||||
"We had errors while creating DKIM record for: " + domain + ". Error message: " + str(msg))
|
||||
|
||||
@staticmethod
|
||||
def getZoneObject(virtualHostName):
|
||||
@@ -298,7 +333,7 @@ class DNS:
|
||||
|
||||
@staticmethod
|
||||
def createDNSRecord(zone, name, type, value, priority, ttl):
|
||||
|
||||
try:
|
||||
if type == 'NS':
|
||||
if Records.objects.filter(name=name, type=type, content=value).count() == 0:
|
||||
record = Records(domainOwner=zone,
|
||||
@@ -325,6 +360,8 @@ class DNS:
|
||||
disabled=0,
|
||||
auth=1)
|
||||
record.save()
|
||||
except BaseException, msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [createDNSRecord]")
|
||||
|
||||
@staticmethod
|
||||
def deleteDNSZone(virtualHostName):
|
||||
|
||||
@@ -133,6 +133,11 @@ class mailUtilities:
|
||||
try:
|
||||
## Generate DKIM Keys
|
||||
|
||||
import tldextract
|
||||
|
||||
extractDomain = tldextract.extract(virtualHostName)
|
||||
virtualHostName = extractDomain.domain + '.' + extractDomain.suffix
|
||||
|
||||
if os.path.exists("/etc/opendkim/keys/" + virtualHostName):
|
||||
return 1, "None"
|
||||
|
||||
|
||||
@@ -230,7 +230,6 @@ def submitWebsiteCreation(request):
|
||||
|
||||
if admin.type == 1:
|
||||
pass
|
||||
|
||||
else:
|
||||
data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0,
|
||||
'error_message': "Only administrators are allowed to create websites."}
|
||||
@@ -256,17 +255,13 @@ def submitWebsiteCreation(request):
|
||||
output = subprocess.check_output(shlex.split(execPath))
|
||||
|
||||
if output.find("1,None") > -1:
|
||||
pass
|
||||
data_ret = {'createWebSiteStatus': 1, 'error_message': "None", "existsStatus": 0}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
else:
|
||||
data_ret = {'createWebSiteStatus': 0, 'error_message': output, "existsStatus": 0}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
data_ret = {'createWebSiteStatus': 1, 'error_message': "None", "existsStatus": 0}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except BaseException, msg:
|
||||
data_ret = {'createWebSiteStatus': 0, 'error_message': str(msg), "existsStatus": 0}
|
||||
json_data = json.dumps(data_ret)
|
||||
@@ -317,14 +312,11 @@ def submitDomainCreation(request):
|
||||
output = subprocess.check_output(shlex.split(execPath))
|
||||
|
||||
if output.find("1,None") > -1:
|
||||
pass
|
||||
else:
|
||||
data_ret = {'createWebSiteStatus': 0, 'error_message': output, "existsStatus": 0}
|
||||
data_ret = {'createWebSiteStatus': 1, 'error_message': "None", "existsStatus": 0}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
data_ret = {'createWebSiteStatus': 1, 'error_message': "None", "existsStatus": 0}
|
||||
else:
|
||||
data_ret = {'createWebSiteStatus': 0, 'error_message': output, "existsStatus": 0}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user