2018-06-30 15:29:56 +05:00
|
|
|
#!/usr/local/CyberCP/bin/python2
|
2018-06-01 02:08:21 +05:00
|
|
|
import os,sys
|
|
|
|
|
sys.path.append('/usr/local/CyberCP')
|
|
|
|
|
import django
|
|
|
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
|
2019-07-18 14:08:00 +05:00
|
|
|
try:
|
|
|
|
|
django.setup()
|
|
|
|
|
except:
|
|
|
|
|
pass
|
2017-10-24 19:16:36 +05:00
|
|
|
import CyberCPLogFileWriter as logging
|
|
|
|
|
import subprocess
|
2018-06-01 02:08:21 +05:00
|
|
|
import shlex
|
2019-07-18 14:08:00 +05:00
|
|
|
try:
|
|
|
|
|
from dns.models import Domains,Records
|
|
|
|
|
from processUtilities import ProcessUtilities
|
|
|
|
|
from manageServices.models import PDNSStatus, SlaveServers
|
|
|
|
|
except:
|
|
|
|
|
pass
|
2017-10-24 19:16:36 +05:00
|
|
|
|
|
|
|
|
class DNS:
|
|
|
|
|
|
|
|
|
|
nsd_base = "/etc/nsd/nsd.conf"
|
|
|
|
|
zones_base_dir = "/usr/local/lsws/conf/zones/"
|
|
|
|
|
create_zone_dir = "/usr/local/lsws/conf/zones"
|
2019-08-22 14:07:46 +05:00
|
|
|
defaultNameServersPath = '/home/cyberpanel/defaultNameservers'
|
2017-10-24 19:16:36 +05:00
|
|
|
|
2018-06-01 02:08:21 +05:00
|
|
|
## DNS Functions
|
2017-10-24 19:16:36 +05:00
|
|
|
|
|
|
|
|
@staticmethod
|
2018-06-01 02:08:21 +05:00
|
|
|
def dnsTemplate(domain, admin):
|
2017-10-24 19:16:36 +05:00
|
|
|
try:
|
|
|
|
|
|
2018-06-01 02:08:21 +05:00
|
|
|
ipFile = "/etc/cyberpanel/machineIP"
|
|
|
|
|
f = open(ipFile)
|
|
|
|
|
ipData = f.read()
|
|
|
|
|
ipAddress = ipData.split('\n', 1)[0]
|
|
|
|
|
|
|
|
|
|
import tldextract
|
|
|
|
|
|
|
|
|
|
extractDomain = tldextract.extract(domain)
|
|
|
|
|
topLevelDomain = extractDomain.domain + '.' + extractDomain.suffix
|
|
|
|
|
subDomain = extractDomain.subdomain
|
|
|
|
|
|
|
|
|
|
if len(subDomain) == 0:
|
|
|
|
|
|
|
|
|
|
if Domains.objects.filter(name=topLevelDomain).count() == 0:
|
2019-02-04 01:03:18 +05:00
|
|
|
try:
|
|
|
|
|
pdns = PDNSStatus.objects.get(pk=1)
|
|
|
|
|
if pdns.type == 'MASTER':
|
|
|
|
|
zone = Domains(admin=admin, name=topLevelDomain, type="MASTER")
|
2019-06-27 13:07:47 +05:00
|
|
|
zone.save()
|
|
|
|
|
|
|
|
|
|
for items in SlaveServers.objects.all():
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=topLevelDomain,
|
|
|
|
|
type="NS",
|
|
|
|
|
content=items.slaveServer,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
|
|
|
|
|
2019-02-04 01:03:18 +05:00
|
|
|
else:
|
|
|
|
|
zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE")
|
|
|
|
|
except:
|
|
|
|
|
zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE")
|
|
|
|
|
|
|
|
|
|
|
2018-06-01 02:08:21 +05:00
|
|
|
zone.save()
|
|
|
|
|
|
2019-06-27 13:07:47 +05:00
|
|
|
if zone.type == 'NATIVE':
|
|
|
|
|
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=topLevelDomain,
|
|
|
|
|
type="NS",
|
|
|
|
|
content='hostmaster.%s' % (topLevelDomain),
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
|
|
|
|
|
2019-08-22 14:07:46 +05:00
|
|
|
if os.path.exists(DNS.defaultNameServersPath):
|
|
|
|
|
defaultNS = open(DNS.defaultNameServersPath, 'r').readlines()
|
2019-06-27 13:07:47 +05:00
|
|
|
|
2019-08-22 14:07:46 +05:00
|
|
|
for items in defaultNS:
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=topLevelDomain,
|
|
|
|
|
type="NS",
|
|
|
|
|
content=items,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
|
|
|
|
else:
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=topLevelDomain,
|
|
|
|
|
type="NS",
|
|
|
|
|
content='ns1.%s' % (topLevelDomain),
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
|
|
|
|
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=topLevelDomain,
|
|
|
|
|
type="NS",
|
|
|
|
|
content='ns2.%s' % (topLevelDomain),
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
2019-06-26 03:57:16 +05:00
|
|
|
|
2018-06-01 02:08:21 +05:00
|
|
|
content = "ns1." + topLevelDomain + " hostmaster." + topLevelDomain + " 1 10800 3600 604800 3600"
|
|
|
|
|
|
|
|
|
|
soaRecord = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=topLevelDomain,
|
|
|
|
|
type="SOA",
|
|
|
|
|
content=content,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
soaRecord.save()
|
|
|
|
|
|
|
|
|
|
## Main A record.
|
|
|
|
|
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=topLevelDomain,
|
|
|
|
|
type="A",
|
|
|
|
|
content=ipAddress,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
|
|
|
|
|
|
|
|
|
# CNAME Records.
|
|
|
|
|
|
|
|
|
|
cNameValue = "www." + topLevelDomain
|
|
|
|
|
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=cNameValue,
|
|
|
|
|
type="CNAME",
|
|
|
|
|
content=topLevelDomain,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
|
|
|
|
|
|
|
|
|
cNameValue = "ftp." + topLevelDomain
|
|
|
|
|
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=cNameValue,
|
|
|
|
|
type="CNAME",
|
|
|
|
|
content=topLevelDomain,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
|
|
|
|
|
|
|
|
|
## MX Record.
|
|
|
|
|
|
|
|
|
|
mxValue = "mail." + topLevelDomain
|
|
|
|
|
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=topLevelDomain,
|
|
|
|
|
type="MX",
|
|
|
|
|
content=mxValue,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio="10",
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
|
|
|
|
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=mxValue,
|
|
|
|
|
type="A",
|
|
|
|
|
content=ipAddress,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
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()
|
2017-10-24 19:16:36 +05:00
|
|
|
else:
|
2018-06-01 02:08:21 +05:00
|
|
|
if Domains.objects.filter(name=topLevelDomain).count() == 0:
|
2019-02-04 01:03:18 +05:00
|
|
|
try:
|
|
|
|
|
pdns = PDNSStatus.objects.get(pk=1)
|
|
|
|
|
if pdns.type == 'MASTER':
|
|
|
|
|
zone = Domains(admin=admin, name=topLevelDomain, type="MASTER")
|
|
|
|
|
else:
|
|
|
|
|
zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE")
|
|
|
|
|
except:
|
|
|
|
|
zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE")
|
2018-06-01 02:08:21 +05:00
|
|
|
|
|
|
|
|
content = "ns1." + topLevelDomain + " hostmaster." + topLevelDomain + " 1 10800 3600 604800 3600"
|
|
|
|
|
|
|
|
|
|
soaRecord = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=topLevelDomain,
|
|
|
|
|
type="SOA",
|
|
|
|
|
content=content,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
soaRecord.save()
|
|
|
|
|
|
|
|
|
|
## Main A record.
|
|
|
|
|
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=topLevelDomain,
|
|
|
|
|
type="A",
|
|
|
|
|
content=ipAddress,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
|
|
|
|
|
|
|
|
|
# CNAME Records.
|
|
|
|
|
|
|
|
|
|
cNameValue = "www." + topLevelDomain
|
|
|
|
|
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=cNameValue,
|
|
|
|
|
type="CNAME",
|
|
|
|
|
content=topLevelDomain,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
|
|
|
|
|
|
|
|
|
cNameValue = "ftp." + topLevelDomain
|
|
|
|
|
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=cNameValue,
|
|
|
|
|
type="CNAME",
|
|
|
|
|
content=topLevelDomain,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
|
|
|
|
|
|
|
|
|
## MX Record.
|
|
|
|
|
|
|
|
|
|
mxValue = "mail." + topLevelDomain
|
|
|
|
|
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=topLevelDomain,
|
|
|
|
|
type="MX",
|
|
|
|
|
content=mxValue,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio="10",
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
|
|
|
|
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=mxValue,
|
|
|
|
|
type="A",
|
|
|
|
|
content=ipAddress,
|
|
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
|
|
|
|
|
2018-06-11 21:04:55 +05:00
|
|
|
## 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()
|
|
|
|
|
|
2018-06-01 02:08:21 +05:00
|
|
|
## Creating sub-domain level record.
|
|
|
|
|
|
|
|
|
|
zone = Domains.objects.get(name=topLevelDomain)
|
|
|
|
|
|
|
|
|
|
actualSubDomain = subDomain + "." + topLevelDomain
|
|
|
|
|
|
|
|
|
|
## Main A record.
|
|
|
|
|
|
|
|
|
|
DNS.createDNSRecord(zone, actualSubDomain, "A", ipAddress, 0, 3600)
|
|
|
|
|
|
|
|
|
|
# CNAME Records.
|
|
|
|
|
|
|
|
|
|
cNameValue = "www." + actualSubDomain
|
|
|
|
|
|
|
|
|
|
DNS.createDNSRecord(zone, cNameValue, "CNAME", actualSubDomain, 0, 3600)
|
2017-10-24 19:16:36 +05:00
|
|
|
|
2018-12-13 04:23:08 +05:00
|
|
|
if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu:
|
|
|
|
|
command = 'sudo systemctl restart pdns'
|
|
|
|
|
ProcessUtilities.executioner(command)
|
|
|
|
|
|
2019-12-10 15:09:10 +05:00
|
|
|
except BaseException as msg:
|
2018-06-01 02:08:21 +05:00
|
|
|
logging.CyberCPLogFileWriter.writeToFile(
|
|
|
|
|
"We had errors while creating DNS records for: " + domain + ". Error message: " + str(msg))
|
2017-10-24 19:16:36 +05:00
|
|
|
|
|
|
|
|
@staticmethod
|
2018-06-01 02:08:21 +05:00
|
|
|
def createDKIMRecords(domain):
|
2017-10-24 19:16:36 +05:00
|
|
|
try:
|
|
|
|
|
|
2018-06-01 02:08:21 +05:00
|
|
|
import tldextract
|
2017-10-24 19:16:36 +05:00
|
|
|
|
2018-06-01 02:08:21 +05:00
|
|
|
extractDomain = tldextract.extract(domain)
|
|
|
|
|
topLevelDomain = extractDomain.domain + '.' + extractDomain.suffix
|
2017-10-24 19:16:36 +05:00
|
|
|
|
2018-06-01 02:08:21 +05:00
|
|
|
zone = Domains.objects.get(name=topLevelDomain)
|
2017-10-24 19:16:36 +05:00
|
|
|
|
2018-06-01 02:08:21 +05:00
|
|
|
path = "/etc/opendkim/keys/" + topLevelDomain + "/default.txt"
|
|
|
|
|
command = "sudo cat " + path
|
2019-03-26 16:19:03 +05:00
|
|
|
output = subprocess.check_output(shlex.split(command))
|
2018-11-07 22:50:14 +05:00
|
|
|
leftIndex = output.index('(') + 2
|
|
|
|
|
rightIndex = output.rindex(')') - 1
|
2017-10-24 19:16:36 +05:00
|
|
|
|
2018-06-01 02:08:21 +05:00
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name="default._domainkey." + topLevelDomain,
|
|
|
|
|
type="TXT",
|
2018-11-07 22:50:14 +05:00
|
|
|
content=output[leftIndex:rightIndex],
|
2018-06-01 02:08:21 +05:00
|
|
|
ttl=3600,
|
|
|
|
|
prio=0,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
2017-10-24 19:16:36 +05:00
|
|
|
|
2018-12-13 04:23:08 +05:00
|
|
|
if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu:
|
|
|
|
|
command = 'sudo systemctl restart pdns'
|
|
|
|
|
ProcessUtilities.executioner(command)
|
|
|
|
|
|
2019-12-10 15:09:10 +05:00
|
|
|
except BaseException as msg:
|
2018-06-01 02:08:21 +05:00
|
|
|
logging.CyberCPLogFileWriter.writeToFile(
|
2018-06-11 21:04:55 +05:00
|
|
|
"We had errors while creating DKIM record for: " + domain + ". Error message: " + str(msg))
|
2017-10-24 19:16:36 +05:00
|
|
|
|
2018-06-05 00:53:45 +05:00
|
|
|
@staticmethod
|
|
|
|
|
def getZoneObject(virtualHostName):
|
|
|
|
|
try:
|
|
|
|
|
return Domains.objects.get(name=virtualHostName)
|
|
|
|
|
except:
|
|
|
|
|
return 0
|
|
|
|
|
|
2017-10-24 19:16:36 +05:00
|
|
|
@staticmethod
|
2018-06-01 02:08:21 +05:00
|
|
|
def createDNSRecord(zone, name, type, value, priority, ttl):
|
2018-06-11 21:04:55 +05:00
|
|
|
try:
|
2019-06-27 13:07:47 +05:00
|
|
|
|
|
|
|
|
if zone.type == 'MASTER':
|
|
|
|
|
getSOA = Records.objects.get(domainOwner=zone, type='SOA')
|
|
|
|
|
soaContent = getSOA.content.split(' ')
|
|
|
|
|
soaContent[2] = str(int(soaContent[2]) + 1)
|
|
|
|
|
getSOA.content = " ".join(soaContent)
|
|
|
|
|
getSOA.save()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-06-11 21:04:55 +05:00
|
|
|
if type == 'NS':
|
|
|
|
|
if Records.objects.filter(name=name, type=type, content=value).count() == 0:
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=name,
|
|
|
|
|
type=type,
|
|
|
|
|
content=value,
|
|
|
|
|
ttl=ttl,
|
|
|
|
|
prio=priority,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
2018-12-13 04:23:08 +05:00
|
|
|
|
|
|
|
|
if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu:
|
|
|
|
|
command = 'sudo systemctl restart pdns'
|
|
|
|
|
ProcessUtilities.executioner(command)
|
|
|
|
|
|
2018-06-11 21:04:55 +05:00
|
|
|
return
|
2018-06-05 00:53:45 +05:00
|
|
|
|
2018-11-06 00:19:58 +05:00
|
|
|
if type == 'TXT':
|
|
|
|
|
if Records.objects.filter(name=name, type=type, content=value).count() == 0:
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=name,
|
|
|
|
|
type=type,
|
|
|
|
|
content=value,
|
|
|
|
|
ttl=ttl,
|
|
|
|
|
prio=priority,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
2018-12-13 04:23:08 +05:00
|
|
|
|
|
|
|
|
if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu:
|
|
|
|
|
command = 'sudo systemctl restart pdns'
|
|
|
|
|
ProcessUtilities.executioner(command)
|
2018-11-06 00:19:58 +05:00
|
|
|
return
|
|
|
|
|
|
2018-06-27 00:16:50 +05:00
|
|
|
if type == 'MX':
|
|
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=name,
|
|
|
|
|
type=type,
|
|
|
|
|
content=value,
|
|
|
|
|
ttl=ttl,
|
|
|
|
|
prio=priority,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
2018-12-13 04:23:08 +05:00
|
|
|
|
|
|
|
|
if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu:
|
|
|
|
|
command = 'sudo systemctl restart pdns'
|
|
|
|
|
ProcessUtilities.executioner(command)
|
2018-11-06 00:19:58 +05:00
|
|
|
return
|
2018-06-27 00:16:50 +05:00
|
|
|
|
2018-06-11 21:04:55 +05:00
|
|
|
|
|
|
|
|
if Records.objects.filter(name=name, type=type).count() == 0:
|
2018-06-05 00:53:45 +05:00
|
|
|
record = Records(domainOwner=zone,
|
|
|
|
|
domain_id=zone.id,
|
|
|
|
|
name=name,
|
|
|
|
|
type=type,
|
|
|
|
|
content=value,
|
|
|
|
|
ttl=ttl,
|
|
|
|
|
prio=priority,
|
|
|
|
|
disabled=0,
|
|
|
|
|
auth=1)
|
|
|
|
|
record.save()
|
2018-12-13 04:23:08 +05:00
|
|
|
if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu:
|
|
|
|
|
command = 'sudo systemctl restart pdns'
|
|
|
|
|
ProcessUtilities.executioner(command)
|
2019-12-10 15:09:10 +05:00
|
|
|
except BaseException as msg:
|
2018-06-11 21:04:55 +05:00
|
|
|
logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [createDNSRecord]")
|
2017-10-24 19:16:36 +05:00
|
|
|
|
|
|
|
|
@staticmethod
|
2018-06-01 02:08:21 +05:00
|
|
|
def deleteDNSZone(virtualHostName):
|
2017-10-24 19:16:36 +05:00
|
|
|
try:
|
2018-06-01 02:08:21 +05:00
|
|
|
delZone = Domains.objects.get(name=virtualHostName)
|
|
|
|
|
delZone.delete()
|
|
|
|
|
except:
|
|
|
|
|
## There does not exist a zone for this domain.
|
2018-06-05 00:53:45 +05:00
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def createDNSZone(virtualHostName, admin):
|
|
|
|
|
try:
|
|
|
|
|
zone = Domains(admin=admin, name=virtualHostName, type="NATIVE")
|
|
|
|
|
zone.save()
|
|
|
|
|
except:
|
|
|
|
|
## There does not exist a zone for this domain.
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def getDNSRecords(virtualHostName):
|
|
|
|
|
try:
|
|
|
|
|
zone = Domains.objects.get(name=virtualHostName)
|
|
|
|
|
zone.save()
|
|
|
|
|
return zone.records_set.all()
|
|
|
|
|
except:
|
|
|
|
|
## There does not exist a zone for this domain.
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def getDNSZones():
|
|
|
|
|
try:
|
|
|
|
|
return Domains.objects.all()
|
|
|
|
|
except:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def deleteDNSRecord(recordID):
|
|
|
|
|
try:
|
|
|
|
|
delRecord = Records.objects.get(id=recordID)
|
|
|
|
|
delRecord.delete()
|
|
|
|
|
except:
|
|
|
|
|
## There does not exist a zone for this domain.
|
|
|
|
|
pass
|