dkim fix for subdomains

This commit is contained in:
usmannasir
2018-11-21 14:50:27 +05:00
parent 3ffce793cf
commit fe011fe8de
10 changed files with 3573 additions and 3533 deletions

View File

@@ -15,6 +15,8 @@ from plogical.backupManager import BackupManager
import userManagment.views as um
from packages.packagesManager import PackagesManager
from plogical.processUtilities import ProcessUtilities
from firewall.firewallManager import FirewallManager
from serverLogs.views import getLogsFromFile
class CloudManager:
def __init__(self, data=None, admin = None):
@@ -674,3 +676,59 @@ class CloudManager:
return HttpResponse(json_data)
except BaseException, msg:
return self.ajaxPre(0, str(msg))
def getSSHConfigs(self):
try:
fm = FirewallManager()
return fm.getSSHConfigs(self.admin.pk, self.data)
except BaseException, msg:
return self.ajaxPre(0, str(msg))
def saveSSHConfigs(self):
try:
fm = FirewallManager()
return fm.saveSSHConfigs(self.admin.pk, self.data)
except BaseException, msg:
return self.ajaxPre(0, str(msg))
def deleteSSHKey(self):
try:
fm = FirewallManager()
return fm.deleteSSHKey(self.admin.pk, self.data)
except BaseException, msg:
return self.ajaxPre(0, str(msg))
def addSSHKey(self):
try:
fm = FirewallManager()
return fm.addSSHKey(self.admin.pk, self.data)
except BaseException, msg:
return self.ajaxPre(0, str(msg))
def getCurrentRules(self):
try:
fm = FirewallManager()
return fm.getCurrentRules(self.admin.pk)
except BaseException, msg:
return self.ajaxPre(0, str(msg))
def addRule(self):
try:
fm = FirewallManager()
return fm.addRule(self.admin.pk, self.data)
except BaseException, msg:
return self.ajaxPre(0, str(msg))
def deleteRule(self):
try:
fm = FirewallManager()
return fm.deleteRule(self.admin.pk, self.data)
except BaseException, msg:
return self.ajaxPre(0, str(msg))
def getLogsFromFile(self, request):
try:
request.session['userID'] = self.admin.pk
return getLogsFromFile(request)
except BaseException, msg:
return self.ajaxPre(0, str(msg))

View File

@@ -23,7 +23,6 @@ def router(request):
else:
return cm.verifyLogin(request)[1]
if controller == 'verifyLogin':
return cm.verifyLogin(request)[1]
elif controller == 'fetchWebsites':
@@ -144,6 +143,22 @@ def router(request):
return cm.submitApplicationInstall(request)
elif controller == 'obtainServer':
return cm.obtainServer(request)
elif controller == 'getSSHConfigs':
return cm.getSSHConfigs()
elif controller == 'saveSSHConfigs':
return cm.saveSSHConfigs()
elif controller == 'deleteSSHKey':
return cm.deleteSSHKey()
elif controller == 'addSSHKey':
return cm.addSSHKey()
elif controller == 'getCurrentRules':
return cm.getCurrentRules()
elif controller == 'addRule':
return cm.addRule()
elif controller == 'deleteRule':
return cm.deleteRule()
elif controller == 'getLogsFromFile':
return cm.getLogsFromFile(request)
except BaseException, msg:
cm = CloudManager(None)

View File

@@ -69,7 +69,8 @@ class FirewallManager:
checker = 0
for items in rules:
dic = {'id': items.id,
dic = {
'id': items.id,
'name': items.name,
'proto': items.proto,
'port': items.port,
@@ -83,11 +84,11 @@ class FirewallManager:
json_data = json_data + ',' + json.dumps(dic)
json_data = json_data + ']'
final_json = json.dumps({'fetchStatus': 1, 'error_message': "None", "data": json_data})
final_json = json.dumps({'status': 1, 'fetchStatus': 1, 'error_message': "None", "data": json_data})
return HttpResponse(final_json)
except BaseException, msg:
final_dic = {'fetchStatus': 0, 'error_message': str(msg)}
final_dic = {'status': 0, 'fetchStatus': 0, 'error_message': str(msg)}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
@@ -111,12 +112,12 @@ class FirewallManager:
newFWRule = FirewallRules(name=ruleName, proto=ruleProtocol, port=rulePort, ipAddress=ruleIP)
newFWRule.save()
final_dic = {'add_status': 1, 'error_message': "None"}
final_dic = {'status': 1, 'add_status': 1, 'error_message': "None"}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
except BaseException, msg:
final_dic = {'add_status': 0, 'error_message': str(msg)}
final_dic = {'status': 0, 'add_status': 0, 'error_message': str(msg)}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
@@ -141,12 +142,12 @@ class FirewallManager:
delRule = FirewallRules.objects.get(id=ruleID)
delRule.delete()
final_dic = {'delete_status': 1, 'error_message': "None"}
final_dic = {'status': 1, 'delete_status': 1, 'error_message': "None"}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
except BaseException, msg:
final_dic = {'delete_status': 0, 'error_message': str(msg)}
final_dic = {'status': 0, 'delete_status': 0, 'error_message': str(msg)}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
@@ -325,7 +326,7 @@ class FirewallManager:
res = subprocess.call(cmd)
final_dic = {'permitRootLogin': permitRootLogin, 'sshPort': sshPort}
final_dic = {'status': 1, 'permitRootLogin': permitRootLogin, 'sshPort': sshPort}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
else:
@@ -406,7 +407,7 @@ class FirewallManager:
try:
updateFW = FirewallRules.objects.get(name="SSHCustom")
FirewallUtilities.deleteRule("tcp", updateFW.port)
FirewallUtilities.deleteRule("tcp", updateFW.port, "0.0.0.0/0")
updateFW.port = sshPort
updateFW.save()
except:
@@ -467,12 +468,12 @@ class FirewallManager:
##
final_dic = {'saveStatus': 1}
final_dic = {'status': 1, 'saveStatus': 1}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
except BaseException, msg:
final_dic = {'saveStatus': 0, 'error_message': str(msg)}
final_dic = {'status': 0 ,'saveStatus': 0, 'error_message': str(msg)}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
@@ -522,12 +523,12 @@ class FirewallManager:
##
final_dic = {'delete_status': 1}
final_dic = {'status': 1, 'delete_status': 1}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
except BaseException, msg:
final_dic = {'delete_status': 0, 'error_mssage': str(msg)}
final_dic = {'status': 0, 'delete_status': 0, 'error_mssage': str(msg)}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
@@ -584,13 +585,12 @@ class FirewallManager:
##
final_dic = {'add_status': 1}
final_dic = {'status': 1, 'add_status': 1}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
except BaseException, msg:
final_dic = {'add_status': 0, 'error_mssage': str(msg)}
final_dic = {'status': 0, 'add_status': 0, 'error_mssage': str(msg)}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)

File diff suppressed because it is too large Load Diff

View File

@@ -2390,14 +2390,16 @@ class preFlightsChecks:
def removeUfw(self):
try:
preFlightsChecks.stdOut("Checking to see if ufw firewall is installed (will be removed)", 1)
status = subprocess.check_output(shlex.split('ufw status'), stderr=subprocess.STDOUT)
status = subprocess.check_output(shlex.split('ufw status'))
preFlightsChecks.stdOut("ufw current status: " + status + "...will be removed")
except subprocess.CalledProcessError as err:
except BaseException, msg:
preFlightsChecks.stdOut("Expected access to ufw not available, do not need to remove it", 1)
return True
try:
preFlightsChecks.call('apt-get -y remove ufw', self.distro, '[remove_ufw]', 'Remove ufw firewall ' +
'(using firewalld)', 1, 1, os.EX_OSERR)
'(using firewalld)', 1, 0, os.EX_OSERR)
except:
pass
return True
def installFirewalld(self):
@@ -3514,9 +3516,29 @@ def main():
logging.InstallLog.writeToFile("Starting CyberPanel installation..")
preFlightsChecks.stdOut("Starting CyberPanel installation..")
if args.ent == None:
ent = 0
preFlightsChecks.stdOut("OpenLiteSpeed web server will be installed.")
else:
if args.ent == 'ols':
ent = 0
preFlightsChecks.stdOut("OpenLiteSpeed web server will be installed.")
else:
preFlightsChecks.stdOut("LiteSpeed Enterprise web server will be installed.")
ent = 1
if args.serial != None:
serial = args.serial
preFlightsChecks.stdOut("LiteSpeed Enterprise Serial detected: " + serial)
else:
preFlightsChecks.stdOut("Installation failed, please specify LiteSpeed Enterprise key using --serial")
os._exit(0)
## Writing public IP
try:
os.mkdir("/etc/cyberpanel")
except:
pass
machineIP = open("/etc/cyberpanel/machineIP", "w")
machineIP.writelines(args.publicip)
@@ -3537,20 +3559,6 @@ def main():
mysql = args.mysql
preFlightsChecks.stdOut("Dobule MySQL instance version will be installed.")
if args.ent == None:
ent = 0
else:
if args.ent == 'ols':
ent = 0
else:
ent = 1
if args.serial != None:
serial = args.serial
preFlightsChecks.stdOut("LiteSpeed Enterprise Serial detected: " + serial)
else:
preFlightsChecks.stdOut("Installation failed, please specify LiteSpeed Enterprise key using --serial")
os._exit(0)
checks.checkPythonVersion()
checks.setup_account_cyberpanel()
if distro == centos:

View File

@@ -67,6 +67,21 @@ class InstallCyberPanel:
try:
count = 0
while (1):
try:
command = 'groupadd nobody'
cmd = shlex.split(command)
subprocess.call(cmd)
except:
pass
try:
command = 'usermod -a -G nobody nobody'
cmd = shlex.split(command)
subprocess.call(cmd)
except:
pass
command = 'wget https://www.litespeedtech.com/packages/5.0/lsws-5.3-ent-x86_64-linux.tar.gz'
cmd = shlex.split(command)
@@ -1301,7 +1316,7 @@ class InstallCyberPanel:
def Main(cwd, mysql, distro, ent):
def Main(cwd, mysql, distro, ent, serial = None):
InstallCyberPanel.mysqlPassword = randomPassword.generate_pass()
InstallCyberPanel.mysql_Root_password = randomPassword.generate_pass()
@@ -1321,7 +1336,7 @@ def Main(cwd, mysql, distro, ent):
else:
InstallCyberPanel.mysqlPassword = InstallCyberPanel.mysql_Root_password
installer = InstallCyberPanel("/usr/local/lsws/",cwd, distro, ent)
installer = InstallCyberPanel("/usr/local/lsws/",cwd, distro, ent, serial)
installer.installLiteSpeed()
if ent == 0:

View File

@@ -21,6 +21,8 @@ from dns.models import Records as dnsRecords
from mailServer.models import Forwardings
from plogical.acl import ACLManager
import os
from plogical.dnsUtilities import DNS
from loginSystem.models import Administrator
class MailServerManager:
@@ -428,9 +430,16 @@ class MailServerManager:
execPath = execPath + " generateKeys --domain " + domainName
output = subprocess.check_output(shlex.split(execPath))
if output.find("1,None") > -1:
admin = Administrator.objects.get(pk=userID)
DNS.dnsTemplate(domainName, admin)
zone = dnsDomains.objects.get(name=domainName)
if output.find("1,None") > -1:
import tldextract
extractDomain = tldextract.extract(domainName)
topLevelDomain = extractDomain.domain + '.' + extractDomain.suffix
zone = dnsDomains.objects.get(name=topLevelDomain)
zone.save()
path = "/etc/opendkim/keys/" + domainName + "/default.txt"
@@ -439,6 +448,8 @@ class MailServerManager:
leftIndex = output.index('(') + 2
rightIndex = output.rindex(')') - 1
DNS.createDKIMRecords(domainName)
record = dnsRecords(domainOwner=zone,
domain_id=zone.id,
name="default._domainkey." + domainName,

View File

@@ -146,8 +146,8 @@ class mailUtilities:
import tldextract
extractDomain = tldextract.extract(virtualHostName)
virtualHostName = extractDomain.domain + '.' + extractDomain.suffix
#extractDomain = tldextract.extract(virtualHostName)
#virtualHostName = extractDomain.domain + '.' + extractDomain.suffix
if os.path.exists("/etc/opendkim/keys/" + virtualHostName):
return 1, "None"

View File

@@ -134,20 +134,25 @@ def getLogsFromFile(request):
fileName = "/var/log/messages"
elif type == "modSec":
fileName = "/usr/local/lsws/logs/auditmodsec.log"
elif type == "cyberpanel":
fileName = "/home/cyberpanel/error-logs.txt"
try:
command = "sudo tail -50 " + fileName
fewLinesOfLogFile = subprocess.check_output(shlex.split(command))
status = {"logstatus": 1, "logsdata": fewLinesOfLogFile}
status = {"status": 1, "logstatus": 1, "logsdata": fewLinesOfLogFile}
final_json = json.dumps(status)
return HttpResponse(final_json)
except:
status = {"status": 1, "logstatus": 1, "logsdata": 'Emtpy File.'}
final_json = json.dumps(status)
return HttpResponse(final_json)
except KeyError, msg:
status = {"logstatus":0,"error":"Could not fetch data from log file, please see CyberCP main log file through command line."}
status = {"status": 0, "logstatus":0,"error":"Could not fetch data from log file, please see CyberCP main log file through command line."}
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[getLogsFromFile]")
return HttpResponse("Not Logged in as admin")
final_json = json.dumps(status)
return HttpResponse(final_json)
def clearLogFile(request):
try:

File diff suppressed because it is too large Load Diff