diff --git a/filemanager/templates/filemanager/index.html b/filemanager/templates/filemanager/index.html index 05fc2bcea..f6dad04ea 100644 --- a/filemanager/templates/filemanager/index.html +++ b/filemanager/templates/filemanager/index.html @@ -18,7 +18,7 @@ - + @@ -645,4 +645,4 @@ - + \ No newline at end of file diff --git a/install/FileManager/.idea/workspace.xml b/install/FileManager/.idea/workspace.xml index 253d35cfa..439ec97b1 100644 --- a/install/FileManager/.idea/workspace.xml +++ b/install/FileManager/.idea/workspace.xml @@ -14,8 +14,8 @@ - - + + @@ -163,18 +163,17 @@ - + - - - + @@ -265,10 +264,18 @@ + + + + + + + + - - + + diff --git a/install/install.py b/install/install.py index 3549c4fd6..27147b002 100644 --- a/install/install.py +++ b/install/install.py @@ -703,7 +703,7 @@ class preFlightsChecks: count = 0 while (1): - command = "wget http://cyberpanel.net/CyberPanel.1.6.2.tar.gz" + command = "wget http://cyberpanel.net/CyberPanel.1.6.3.tar.gz" #command = "wget http://cyberpanel.net/CyberPanelTemp.tar.gz" res = subprocess.call(shlex.split(command)) @@ -723,7 +723,7 @@ class preFlightsChecks: count = 0 while(1): - command = "tar zxf CyberPanel.1.6.2.tar.gz" + command = "tar zxf CyberPanel.1.6.3.tar.gz" #command = "tar zxf CyberPanelTemp.tar.gz" res = subprocess.call(shlex.split(command)) @@ -2490,6 +2490,31 @@ class preFlightsChecks: logging.InstallLog.writeToFile(str(msg) + " [modSecPreReqs]") return 0 + def installTLDExtract(self): + try: + count = 0 + while (1): + command = "pip install tldextract" + + res = subprocess.call(shlex.split(command)) + + if res == 1: + count = count + 1 + preFlightsChecks.stdOut( + "Trying to install tldextract, trying again, try number: " + str(count)) + if count == 3: + logging.InstallLog.writeToFile( + "Failed to install tldextract! [installTLDExtract]") + preFlightsChecks.stdOut("Installation failed, consult: /var/log/installLogs.txt") + else: + logging.InstallLog.writeToFile("tldextract successfully installed! [pip]") + preFlightsChecks.stdOut("tldextract successfully installed! [pip]") + break + except OSError, msg: + logging.InstallLog.writeToFile(str(msg) + " [installTLDExtract]") + return 0 + + def main(): @@ -2562,6 +2587,7 @@ def main(): checks.test_Requests() checks.download_install_CyberPanel(installCyberPanel.InstallCyberPanel.mysqlPassword) checks.setup_cron() + checks.installTLDExtract() checks.modSecPreReqs() checks.installation_successfull() diff --git a/plogical/test.py b/plogical/test.py index e69de29bb..4ee4dc353 100644 --- a/plogical/test.py +++ b/plogical/test.py @@ -0,0 +1,7 @@ +import tldextract + +ext = tldextract.extract('http://forums.bbc.co.uk') + +print ext.subdomain +print ext.domain +print ext.suffix \ No newline at end of file diff --git a/websiteFunctions/views.py b/websiteFunctions/views.py index d4c2efbd4..65990f9e0 100644 --- a/websiteFunctions/views.py +++ b/websiteFunctions/views.py @@ -304,66 +304,230 @@ def submitWebsiteCreation(request): ## Create Configurations ends here - ## zone creation + ##### Zone creation + + ipFile = "/etc/cyberpanel/machineIP" + f = open(ipFile) + ipData = f.read() + ipAddress = ipData.split('\n', 1)[0] + try: - newZone = Domains(admin=admin, name=domain, type="NATIVE") - newZone.save() + import tldextract - content = "ns1." + domain + " hostmaster." + domain + " 1 10800 3600 604800 3600" + extractDomain = tldextract.extract(domain) + topLevelDomain = extractDomain.domain + '.' + extractDomain.suffix + subDomain = extractDomain.subdomain - soaRecord = Records(domainOwner=newZone, - domain_id=newZone.id, - name=domain, - type="SOA", - content=content, - ttl=3600, - prio=0, - disabled=0, - auth=1) - soaRecord.save() + if len(subDomain) == 0: + if Domains.objects.filter(name=topLevelDomain).count() == 0: - try: + zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE") + zone.save() - ipFile = "/etc/cyberpanel/machineIP" - f = open(ipFile) - ipData = f.read() - recordContentA = ipData.split('\n', 1)[0] + 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() + else: + if Domains.objects.filter(name=topLevelDomain).count() == 0: + + zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE") + zone.save() + + 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() + + ## Creating sub-domain level record. + + zone = Domains.objects.get(name=topLevelDomain) + + actualSubDomain = subDomain + "." + topLevelDomain + + ## Main A record. - zone = Domains.objects.get(name=domain) record = Records(domainOwner=zone, domain_id=zone.id, - name=domain, + name=actualSubDomain, type="A", - content=recordContentA, + content=ipAddress, ttl=3600, prio=0, disabled=0, auth=1) record.save() - except BaseException,msg: - logging.CyberCPLogFileWriter.writeToFile("Unable to add A record while creating website, error: " + str(msg)) - except: - try: - ipFile = "/etc/cyberpanel/machineIP" - f = open(ipFile) - ipData = f.read() - recordContentA = ipData.split('\n', 1)[0] + # CNAME Records. + + cNameValue = "www." + actualSubDomain - zone = Domains.objects.get(name=domain) record = Records(domainOwner=zone, domain_id=zone.id, - name=domain, - type="A", - content=recordContentA, + name=cNameValue, + type="CNAME", + content=actualSubDomain, ttl=3600, prio=0, disabled=0, auth=1) record.save() - except BaseException,msg: - logging.CyberCPLogFileWriter.writeToFile("Unable to add A record while creating website, error: " + str(msg)) + + except BaseException,msg: + logging.CyberCPLogFileWriter.writeToFile("We had errors while creating DNS records for: " + domain + ". Error message: " + str(msg)) + + ## zone creation @@ -451,8 +615,6 @@ def submitDomainCreation(request): execPath = execPath + " createDomain --masterDomain " + masterDomain + " --virtualHostName " + domain + " --administratorEmail " + master.adminEmail + " --phpVersion '" + phpSelection + "' --virtualHostUser " + externalApp + " --numberOfSites " + numberOfWebsites + " --ssl " + str( data['ssl']) + " --path " + path - - output = subprocess.check_output(shlex.split(execPath)) if output.find("1,None") > -1: @@ -462,6 +624,315 @@ def submitDomainCreation(request): json_data = json.dumps(data_ret) return HttpResponse(json_data) + + ### Zone creation. + + ipFile = "/etc/cyberpanel/machineIP" + f = open(ipFile) + ipData = f.read() + ipAddress = ipData.split('\n', 1)[0] + + try: + restore = data['restore'] + restart = 0 + except BaseException,msg: + try: + + val = request.session['userID'] + admin = Administrator.objects.get(pk=val) + + 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: + zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE") + zone.save() + + 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() + else: + if Domains.objects.filter(name=topLevelDomain).count() == 0: + zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE") + zone.save() + + 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() + + ## Creating sub-domain level record. + + zone = Domains.objects.get(name=topLevelDomain) + + actualSubDomain = subDomain + "." + topLevelDomain + + ## Main A record. + + record = Records(domainOwner=zone, + domain_id=zone.id, + name=actualSubDomain, + type="A", + content=ipAddress, + ttl=3600, + prio=0, + disabled=0, + auth=1) + record.save() + + # CNAME Records. + + cNameValue = "www." + actualSubDomain + + record = Records(domainOwner=zone, + domain_id=zone.id, + name=cNameValue, + type="CNAME", + content=actualSubDomain, + ttl=3600, + prio=0, + disabled=0, + auth=1) + record.save() + + except BaseException,msg: + try: + ipFile = "/etc/cyberpanel/machineIP" + f = open(ipFile) + ipData = f.read() + recordContentA = ipData.split('\n', 1)[0] + + try: + zone = Domains.objects.get(name=domain) + record = Records(domainOwner=zone, + domain_id=zone.id, + name=domain, + type="A", + content=recordContentA, + ttl=3600, + prio=0, + disabled=0, + auth=1) + record.save() + except: + + newZone = Domains(admin=admin, name=domain, type="NATIVE") + newZone.save() + + content = "ns1." + domain + " hostmaster." + domain + " 1 10800 3600 604800 3600" + + soaRecord = Records(domainOwner=newZone, + domain_id=newZone.id, + name=domain, + type="SOA", + content=content, + ttl=3600, + prio=0, + disabled=0, + auth=1) + soaRecord.save() + + try: + ipFile = "/etc/cyberpanel/machineIP" + f = open(ipFile) + ipData = f.read() + recordContentA = ipData.split('\n', 1)[0] + + zone = Domains.objects.get(name=domain) + + record = Records(domainOwner=zone, + domain_id=zone.id, + name=domain, + type="A", + content=recordContentA, + ttl=3600, + prio=0, + disabled=0, + auth=1) + record.save() + + # For www part + + cNameValue = "www." + domain + + record = Records(domainOwner=zone, + domain_id=zone.id, + name=cNameValue, + type="CNAME", + content=domain, + ttl=3600, + prio=0, + disabled=0, + auth=1) + record.save() + except BaseException, msg: + logging.CyberCPLogFileWriter.writeToFile( + "Unable to add A record while creating website, error: " + str(msg)) + + except BaseException,msg: + logging.CyberCPLogFileWriter.writeToFile("Unable to add A record while creating website, error: " + str(msg)) + + + ## Zone creation. + + + ## Create Configurations ends here website = ChildDomains(master=master, domain=domain, path=path, phpSelection=phpSelection, ssl=ssl)