DKIM Support.

This commit is contained in:
usmannasir
2018-05-01 00:49:47 +05:00
parent ff9161322a
commit 69a9dcd3d2
10 changed files with 326 additions and 18 deletions

View File

@@ -42,6 +42,91 @@ class mailUtilities:
print "0," + str(msg)
@staticmethod
def setupDKIM(virtualHostName):
try:
## Generate DKIM Keys
if os.path.exists("/etc/opendkim/keys/" + virtualHostName):
return 1, "None"
os.mkdir("/etc/opendkim/keys/" + virtualHostName)
## Generate keys
command = "opendkim-genkey -D /etc/opendkim/keys/" + virtualHostName + " -d " + virtualHostName + " -s default"
subprocess.call(shlex.split(command))
## Fix permissions
command = "chown -R root:opendkim /etc/opendkim/keys/" + virtualHostName
subprocess.call(shlex.split(command))
command = "chmod 640 /etc/opendkim/keys/" + virtualHostName + "/default.private"
subprocess.call(shlex.split(command))
command = "chmod 644 /etc/opendkim/keys/" + virtualHostName + "/default.txt"
subprocess.call(shlex.split(command))
## Edit key file
keyTable = "/etc/opendkim/KeyTable"
configToWrite = "default._domainkey." + virtualHostName + " " + virtualHostName + ":default:/etc/opendkim/keys/" + virtualHostName + "/default.private\n"
writeToFile = open(keyTable, 'a')
writeToFile.write(configToWrite)
writeToFile.close()
## Edit signing table
signingTable = "/etc/opendkim/SigningTable"
configToWrite = "*@" + virtualHostName + " default._domainkey." + virtualHostName + "\n"
writeToFile = open(signingTable, 'a')
writeToFile.write(configToWrite)
writeToFile.close()
## Trusted hosts
trustedHosts = "/etc/opendkim/TrustedHosts"
configToWrite = virtualHostName + "\n"
writeToFile = open(trustedHosts, 'a')
writeToFile.write(configToWrite)
writeToFile.close()
## Restart postfix and OpenDKIM
command = "systemctl restart opendkim"
subprocess.call(shlex.split(command))
command = "systemctl restart postfix"
subprocess.call(shlex.split(command))
return 1, "None"
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(
str(msg) + " [setupDKIM]")
return 0, str(msg)
@staticmethod
def checkIfDKIMInstalled():
try:
path = "/etc/opendkim.conf"
if os.path.exists(path):
return 1
else:
return 0
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(
str(msg) + " [checkIfDKIMInstalled]")
return 0
def main():
parser = argparse.ArgumentParser(description='CyberPanel Installer')

View File

@@ -1,7 +0,0 @@
import tldextract
ext = tldextract.extract('http://forums.bbc.co.uk')
print ext.subdomain
print ext.domain
print ext.suffix

View File

@@ -11,6 +11,7 @@ from os.path import join
from os import listdir, rmdir
from shutil import move
import randomPassword as randomPassword
from mailUtilities import mailUtilities
class virtualHostUtilities:
@@ -726,8 +727,6 @@ class virtualHostUtilities:
str(msg) + " [IO Error with per host config file [changePHP]]")
return [0,str(msg) + " [IO Error with per host config file [changePHP]]"]
@staticmethod
def getDiskUsage(path, totalAllowed):
try:
@@ -904,12 +903,21 @@ class virtualHostUtilities:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
def createVirtualHost(virtualHostName,administratorEmail,phpVersion,virtualHostUser,numberOfSites,ssl,sslPath):
def createVirtualHost(virtualHostName,administratorEmail,phpVersion,virtualHostUser,numberOfSites,ssl,sslPath,dkimCheck):
try:
if virtualHostUtilities.checkIfVirtualHostExists(virtualHostName) == 1:
print "0,Virtual Host Directory already exists!"
return
if dkimCheck == 1:
if mailUtilities.checkIfDKIMInstalled() == 0:
print "0,OpenDKIM is not installed, install OpenDKIM from DKIM Manager."
return
result = mailUtilities.setupDKIM(virtualHostName)
if result[0] == 0:
raise BaseException(result[1])
FNULL = open(os.devnull, 'w')
retValues = virtualHostUtilities.createDirectoryForVirtualHost(virtualHostName, administratorEmail,virtualHostUser, phpVersion)
@@ -944,6 +952,8 @@ def createVirtualHost(virtualHostName,administratorEmail,phpVersion,virtualHostU
command = "chown -R " + "lsadm" + ":" + "lsadm" + " " + vhostPath
cmd = shlex.split(command)
subprocess.call(cmd,stdout=FNULL, stderr=subprocess.STDOUT)
print "1,None"
@@ -953,6 +963,8 @@ def createVirtualHost(virtualHostName,administratorEmail,phpVersion,virtualHostU
str(msg) + " [createVirtualHost]")
print "0,"+str(msg)
def createDomain(masterDomain, virtualHostName, phpVersion, path,administratorEmail,virtualHostUser,restart,numberOfSites,ssl):
try:
if virtualHostUtilities.checkIfVirtualHostExists(virtualHostName) == 1:
@@ -1761,6 +1773,7 @@ def main():
parser.add_argument("--numberOfSites", help="Number of sites!")
parser.add_argument("--ssl", help="Weather to activate SSL")
parser.add_argument("--sslPath", help="Path to website document root!")
parser.add_argument('--dkimCheck', help='To enable or disable DKIM support for domain.')
## arguments for creation child domains
@@ -1803,7 +1816,11 @@ def main():
args = parser.parse_args()
if args.function == "createVirtualHost":
createVirtualHost(args.virtualHostName,args.administratorEmail,args.phpVersion,args.virtualHostUser,int(args.numberOfSites),int(args.ssl),args.sslPath)
try:
dkimCheck = int(args.dkimCheck)
except:
dkimCheck = 0
createVirtualHost(args.virtualHostName,args.administratorEmail,args.phpVersion,args.virtualHostUser,int(args.numberOfSites),int(args.ssl),args.sslPath,dkimCheck)
elif args.function == "deleteVirtualHostConfigurations":
virtualHostUtilities.deleteVirtualHostConfigurations(args.virtualHostName,int(args.numberOfSites))
elif args.function == "createDomain":