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 import userManagment.views as um
from packages.packagesManager import PackagesManager from packages.packagesManager import PackagesManager
from plogical.processUtilities import ProcessUtilities from plogical.processUtilities import ProcessUtilities
from firewall.firewallManager import FirewallManager
from serverLogs.views import getLogsFromFile
class CloudManager: class CloudManager:
def __init__(self, data=None, admin = None): def __init__(self, data=None, admin = None):
@@ -674,3 +676,59 @@ class CloudManager:
return HttpResponse(json_data) return HttpResponse(json_data)
except BaseException, msg: except BaseException, msg:
return self.ajaxPre(0, str(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: else:
return cm.verifyLogin(request)[1] return cm.verifyLogin(request)[1]
if controller == 'verifyLogin': if controller == 'verifyLogin':
return cm.verifyLogin(request)[1] return cm.verifyLogin(request)[1]
elif controller == 'fetchWebsites': elif controller == 'fetchWebsites':
@@ -144,6 +143,22 @@ def router(request):
return cm.submitApplicationInstall(request) return cm.submitApplicationInstall(request)
elif controller == 'obtainServer': elif controller == 'obtainServer':
return cm.obtainServer(request) 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: except BaseException, msg:
cm = CloudManager(None) cm = CloudManager(None)

View File

@@ -69,7 +69,8 @@ class FirewallManager:
checker = 0 checker = 0
for items in rules: for items in rules:
dic = {'id': items.id, dic = {
'id': items.id,
'name': items.name, 'name': items.name,
'proto': items.proto, 'proto': items.proto,
'port': items.port, 'port': items.port,
@@ -83,11 +84,11 @@ class FirewallManager:
json_data = json_data + ',' + json.dumps(dic) json_data = json_data + ',' + json.dumps(dic)
json_data = json_data + ']' 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) return HttpResponse(final_json)
except BaseException, msg: 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) final_json = json.dumps(final_dic)
return HttpResponse(final_json) return HttpResponse(final_json)
@@ -111,12 +112,12 @@ class FirewallManager:
newFWRule = FirewallRules(name=ruleName, proto=ruleProtocol, port=rulePort, ipAddress=ruleIP) newFWRule = FirewallRules(name=ruleName, proto=ruleProtocol, port=rulePort, ipAddress=ruleIP)
newFWRule.save() 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) final_json = json.dumps(final_dic)
return HttpResponse(final_json) return HttpResponse(final_json)
except BaseException, msg: 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) final_json = json.dumps(final_dic)
return HttpResponse(final_json) return HttpResponse(final_json)
@@ -141,12 +142,12 @@ class FirewallManager:
delRule = FirewallRules.objects.get(id=ruleID) delRule = FirewallRules.objects.get(id=ruleID)
delRule.delete() 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) final_json = json.dumps(final_dic)
return HttpResponse(final_json) return HttpResponse(final_json)
except BaseException, msg: 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) final_json = json.dumps(final_dic)
return HttpResponse(final_json) return HttpResponse(final_json)
@@ -325,7 +326,7 @@ class FirewallManager:
res = subprocess.call(cmd) res = subprocess.call(cmd)
final_dic = {'permitRootLogin': permitRootLogin, 'sshPort': sshPort} final_dic = {'status': 1, 'permitRootLogin': permitRootLogin, 'sshPort': sshPort}
final_json = json.dumps(final_dic) final_json = json.dumps(final_dic)
return HttpResponse(final_json) return HttpResponse(final_json)
else: else:
@@ -406,7 +407,7 @@ class FirewallManager:
try: try:
updateFW = FirewallRules.objects.get(name="SSHCustom") 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.port = sshPort
updateFW.save() updateFW.save()
except: except:
@@ -467,12 +468,12 @@ class FirewallManager:
## ##
final_dic = {'saveStatus': 1} final_dic = {'status': 1, 'saveStatus': 1}
final_json = json.dumps(final_dic) final_json = json.dumps(final_dic)
return HttpResponse(final_json) return HttpResponse(final_json)
except BaseException, msg: 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) final_json = json.dumps(final_dic)
return HttpResponse(final_json) 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) final_json = json.dumps(final_dic)
return HttpResponse(final_json) return HttpResponse(final_json)
except BaseException, msg: 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) final_json = json.dumps(final_dic)
return HttpResponse(final_json) return HttpResponse(final_json)
@@ -584,13 +585,12 @@ class FirewallManager:
## ##
final_dic = {'status': 1, 'add_status': 1}
final_dic = {'add_status': 1}
final_json = json.dumps(final_dic) final_json = json.dumps(final_dic)
return HttpResponse(final_json) return HttpResponse(final_json)
except BaseException, msg: 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) final_json = json.dumps(final_dic)
return HttpResponse(final_json) 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): def removeUfw(self):
try: try:
preFlightsChecks.stdOut("Checking to see if ufw firewall is installed (will be removed)", 1) 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") 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) preFlightsChecks.stdOut("Expected access to ufw not available, do not need to remove it", 1)
return True return True
try:
preFlightsChecks.call('apt-get -y remove ufw', self.distro, '[remove_ufw]', 'Remove ufw firewall ' + 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 return True
def installFirewalld(self): def installFirewalld(self):
@@ -3514,9 +3516,29 @@ def main():
logging.InstallLog.writeToFile("Starting CyberPanel installation..") logging.InstallLog.writeToFile("Starting CyberPanel installation..")
preFlightsChecks.stdOut("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 ## Writing public IP
try:
os.mkdir("/etc/cyberpanel") os.mkdir("/etc/cyberpanel")
except:
pass
machineIP = open("/etc/cyberpanel/machineIP", "w") machineIP = open("/etc/cyberpanel/machineIP", "w")
machineIP.writelines(args.publicip) machineIP.writelines(args.publicip)
@@ -3537,20 +3559,6 @@ def main():
mysql = args.mysql mysql = args.mysql
preFlightsChecks.stdOut("Dobule MySQL instance version will be installed.") 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.checkPythonVersion()
checks.setup_account_cyberpanel() checks.setup_account_cyberpanel()
if distro == centos: if distro == centos:

View File

@@ -67,6 +67,21 @@ class InstallCyberPanel:
try: try:
count = 0 count = 0
while (1): 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' command = 'wget https://www.litespeedtech.com/packages/5.0/lsws-5.3-ent-x86_64-linux.tar.gz'
cmd = shlex.split(command) 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.mysqlPassword = randomPassword.generate_pass()
InstallCyberPanel.mysql_Root_password = randomPassword.generate_pass() InstallCyberPanel.mysql_Root_password = randomPassword.generate_pass()
@@ -1321,7 +1336,7 @@ def Main(cwd, mysql, distro, ent):
else: else:
InstallCyberPanel.mysqlPassword = InstallCyberPanel.mysql_Root_password 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() installer.installLiteSpeed()
if ent == 0: if ent == 0:

View File

@@ -21,6 +21,8 @@ from dns.models import Records as dnsRecords
from mailServer.models import Forwardings from mailServer.models import Forwardings
from plogical.acl import ACLManager from plogical.acl import ACLManager
import os import os
from plogical.dnsUtilities import DNS
from loginSystem.models import Administrator
class MailServerManager: class MailServerManager:
@@ -428,9 +430,16 @@ class MailServerManager:
execPath = execPath + " generateKeys --domain " + domainName execPath = execPath + " generateKeys --domain " + domainName
output = subprocess.check_output(shlex.split(execPath)) 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() zone.save()
path = "/etc/opendkim/keys/" + domainName + "/default.txt" path = "/etc/opendkim/keys/" + domainName + "/default.txt"
@@ -439,6 +448,8 @@ class MailServerManager:
leftIndex = output.index('(') + 2 leftIndex = output.index('(') + 2
rightIndex = output.rindex(')') - 1 rightIndex = output.rindex(')') - 1
DNS.createDKIMRecords(domainName)
record = dnsRecords(domainOwner=zone, record = dnsRecords(domainOwner=zone,
domain_id=zone.id, domain_id=zone.id,
name="default._domainkey." + domainName, name="default._domainkey." + domainName,

View File

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

View File

@@ -134,20 +134,25 @@ def getLogsFromFile(request):
fileName = "/var/log/messages" fileName = "/var/log/messages"
elif type == "modSec": elif type == "modSec":
fileName = "/usr/local/lsws/logs/auditmodsec.log" fileName = "/usr/local/lsws/logs/auditmodsec.log"
elif type == "cyberpanel":
fileName = "/home/cyberpanel/error-logs.txt"
try:
command = "sudo tail -50 " + fileName command = "sudo tail -50 " + fileName
fewLinesOfLogFile = subprocess.check_output(shlex.split(command)) fewLinesOfLogFile = subprocess.check_output(shlex.split(command))
status = {"status": 1, "logstatus": 1, "logsdata": fewLinesOfLogFile}
status = {"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) final_json = json.dumps(status)
return HttpResponse(final_json) return HttpResponse(final_json)
except KeyError, msg: 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]") 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): def clearLogFile(request):
try: try:

File diff suppressed because it is too large Load Diff