Initial Domain Alias.

This commit is contained in:
usmannasir
2018-05-05 00:10:05 +05:00
parent f0eba42696
commit 1071ae6ec5
8 changed files with 232 additions and 8 deletions

View File

@@ -295,8 +295,6 @@ def getCurrentRecordsForDomain(request):
records = Records.objects.filter(domain_id=domain.id)
json_data = "["
checker = 0
fetchType = ""
@@ -319,6 +317,9 @@ def getCurrentRecordsForDomain(request):
elif currentSelection == 'srvRecord':
fetchType = 'SRV'
json_data = "["
checker = 0
for items in records:
if items.type == fetchType:

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -448,6 +448,7 @@ app.controller('websitePages', function($scope,$http) {
};
$scope.fileManagerURL = "/filemanager/"+$("#domainNamePage").text();
$scope.domainAliasURL = "/websites/"+$("#domainNamePage").text()+"/domainAlias";
$scope.previewUrl = "/preview/"+$("#domainNamePage").text()+"/";
var logType = 0;

View File

@@ -448,6 +448,7 @@ app.controller('websitePages', function($scope,$http) {
};
$scope.fileManagerURL = "/filemanager/"+$("#domainNamePage").text();
$scope.domainAliasURL = "/websites/"+$("#domainNamePage").text()+"/domainAlias";
$scope.previewUrl = "/preview/"+$("#domainNamePage").text()+"/";
var logType = 0;
@@ -2420,5 +2421,21 @@ app.controller('manageCronController', function($scope,$http) {
});
/* Java script code to manage cron ends here */
/* Java script code to manage cron */
app.controller('manageAliasController', function($scope,$http) {
$scope.aliasTable = false;
$scope.domainAliasForm = true;
$scope.aliasError = true;
$scope.couldNotConnect = true;
$scope.aliasCreated = true;
$scope.manageAliasLoading = true;
});
/* Java script code to manage cron ends here */

View File

@@ -0,0 +1,141 @@
{% extends "baseTemplate/index.html" %}
{% load i18n %}
{% block title %}{% trans "Domain Aliases - CyberPanel" %}{% endblock %}
{% block content %}
{% load static %}
{% get_current_language as LANGUAGE_CODE %}
<!-- Current language: {{ LANGUAGE_CODE }} -->
<div ng-controller="manageAliasController" class="container">
<div id="page-title">
<h2>{% trans "Domain Aliases" %}</h2>
<p>{% trans "With Domain Aliases you can visit example.com using example.net and view the same content." %}</p>
</div>
<div class="panel">
<div class="panel-body">
<h3 class="title-hero">
{% trans "Domain Aliases" %} <img ng-hide="manageAliasLoading" src="{% static 'images/loading.gif' %}">
</h3>
<div class="example-box-wrapper">
<form action="/" class="form-horizontal bordered-row">
<!------ Modification form that appears after a click --------------->
<div class="form-group">
<div class="col-sm-4">
<button class="btn ra-100 btn-blue-alt">Create Alias</button>
</div>
</div>
<table ng-hide="aliasTable" cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered" ng-hide="aliasTable">
<thead>
<tr>
<th>{% trans "Master Domain" %}</th>
<th>{% trans "Alias" %}</th>
<th>{% trans "File System Path" %}</th>
<th>{% trans "SSL" %}</th>
<th>{% trans "Delete" %}</th>
</tr>
</thead>
<tbody>
{% if noAlias == 1 %}
{% for alias in aliases %}
<tr>
<td>{{ masterDomain }}</td>
<td>{{ alias }}</td>
<td>{{ path }}</td>
<td><button type="button" ng-click="issueSSL(record.childDomain,record.path)" class="btn ra-100 btn-purple">{% trans "Issue" %}</button></td>
<td>
<a class="btn btn-warning" ng-click="removeAlias()" href=""><i class="glyph-icon icon-trash" title="{% trans "Delete" %}"></i></a>
</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td>{{ masterDomain }}</td>
<td colspan="4">{% trans 'Domain Aliases not found.' %}</td>
</tr>
{% endif %}
</tbody>
</table>
<!------ Modification form that appears after a click --------------->
<div ng-hide="domainAliasForm">
<form action="/" class="form-horizontal bordered-row ng-scope ng-dirty ng-valid-parse ng-valid ng-valid-required">
<input type="hidden" ng-value="line" required="">
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Alias Domain" %}</label>
<div class="col-sm-6">
<input type="text" class="form-control ng-pristine ng-untouched ng-not-empty ng-valid ng-valid-required" ng-model="aliasDomain" required="">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Additional Features" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="sslCheck" type="checkbox" value="">
SSL
<div ng-show="sslCheck" style="margin-top: 2%;margin-bottom: -2%" class="alert alert-warning">
<p>{% trans "For SSL to work DNS of domain should point to server, otherwise self signed SSL will be issued, you can add your own SSL later." %}</p>
</div>
</label>
</div>
</div>
</div>
<hr>
</form>
<div ng-hide="addAliasButton" class="form-group">
<label class="col-sm-3 control-label"></label>
<div class="col-sm-4">
<button type="button" ng-click="addAliasFunc()" class="btn btn-primary btn-lg btn-block">{% trans "Create Alias" %}</button>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"></label>
<div class="col-sm-4">
<div ng-hide="aliasError" class="alert alert-danger">
<p>{% trans "Operation failed. Error message:" %} {$ errorMessage $}</p>
</div>
<div ng-hide="aliasCreated" class="alert alert-success">
<p>{% trans "Alias successfully created." %}</p>
</div>
<div ng-hide="couldNotConnect" class="alert alert-danger">
<p>{% trans "Could not connect to server. Please refresh this page." %}</p>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -258,7 +258,7 @@
<div class="row">
<div class="col-md-4" style="margin-bottom: 2%;">
<div class="col-md-3" style="margin-bottom: 2%;">
<a href="" ng-click="showCreateDomainForm()" title="{% trans 'Add Domains' %}" href="" >
<img src="{% static 'images/icons/domains.png' %}">
</a>
@@ -269,7 +269,7 @@
</div>
<div class="col-md-4" style="margin-bottom: 2%;">
<div class="col-md-3" style="margin-bottom: 2%;">
<a href="" ng-click="showListDomains()" title="{% trans 'List Domains' %}" href="" title="{% trans 'List Domains' %}">
<img src="{% static 'images/icons/sort.png' %}">
</a>
@@ -279,8 +279,18 @@
</div>
<div class="col-md-3" style="margin-bottom: 2%;">
<a href="{$ domainAliasURL $}" target="_blank" title="{% trans 'Domain Alias' %}" href="" title="{% trans 'Domain Alias' %}">
<img src="{% static 'images/icons/web-domain.png' %}">
</a>
<a href="{$ domainAliasURL $}" target="_blank" title="{% trans 'Domain Alias' %}" href="" title="{% trans 'Domain Alias' %}">
<span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Domain Alias" %}</span>
</a>
<div class="col-md-4" style="margin-bottom: 2%;">
</div>
<div class="col-md-3" style="margin-bottom: 2%;">
<a href="{% url 'listCron' %}" target="_blank" title="{% trans 'Add new Cron Job' %}" href="" title="{% trans 'List Domains' %}">
<img src="{% static 'images/icons/repeat.png' %}">
</a>
@@ -668,6 +678,7 @@
<form ng-hide="configurationsBoxRewrite" class="form-horizontal bordered-row">
<div ng-hide="rewriteRulesFetched" class="alert alert-success">
<div ng-hide="rewriteRulesFetched" class="alert alert-success">
<p>{% trans "Current rewrite rules in the file fetched." %}</p>
</div>
@@ -806,7 +817,7 @@
</div>
<div class="col-md-3" style="margin-bottom: 2%;">
<div class="col-md-4" style="margin-bottom: 2%;">
<a href="{% url 'createFTPAccount' %}" title="{% trans 'Create FTP Account' %}">
<img src="{% static 'images/icons/ftp-upload.png' %}">
@@ -818,7 +829,7 @@
</div>
<div class="col-md-3" style="margin-bottom: 2%;">
<div class="col-md-4" style="margin-bottom: 2%;">
<a href="{% url 'deleteFTPAccount' %}" title="{% trans 'Delete FTP Account' %}">
<img src="{% static 'images/icons/delete-ftp.png' %}">

View File

@@ -67,4 +67,9 @@ urlpatterns = [
url(r'^addNewCron',views.addNewCron,name="addNewCron"),
## Domain Alias
url(r'^(?P<domain>([\da-z\.-]+\.[a-z\.]{2,12}|[\d\.]+)([\/:?=&#]{1}[\da-z\.-]+)*[\/\?]?)/domainAlias$', views.domainAlias, name='domainAlias'),
]

View File

@@ -2611,4 +2611,52 @@ def addNewCron(request):
except KeyError, msg:
status = {"addNewCron": 0, "error": "Not Logged in"}
final_json = json.dumps(status)
return HttpResponse(final_json)
return HttpResponse(final_json)
def domainAlias(request,domain):
try:
val = request.session['userID']
try:
admin = Administrator.objects.get(pk=request.session['userID'])
confPath = os.path.join(virtualHostUtilities.Server_root, "conf/httpd_config.conf")
command = "sudo cat " + confPath
httpdConfig = subprocess.check_output(shlex.split(command)).splitlines()
path = "/home/" + domain + "/public_html"
listenerTrueCheck = 0
noAlias = 0
aliases = []
for items in httpdConfig:
if items.find("listener Default{") > -1 or items.find("Default {") > -1:
listenerTrueCheck = 1
continue
if listenerTrueCheck == 1:
if items.find(domain) > -1 and items.find('map') > -1:
data = filter(None, items.split(" "))
if data[1] == domain:
length = len(data)
if length == 3:
break
else:
noAlias = 1
for i in range(3, length):
aliases.append(data[i])
return render(request, 'websiteFunctions/domainAlias.html', {
'masterDomain': domain,
'aliases':aliases,
'path':path,
'noAlias':noAlias
})
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse(str(msg))
except KeyError:
return redirect(loadLoginPage)