mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-02 11:26:28 +01:00
Initial Domain Alias.
This commit is contained in:
@@ -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:
|
||||
|
||||
BIN
static/images/icons/web-domain.png
Normal file
BIN
static/images/icons/web-domain.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
141
websiteFunctions/templates/websiteFunctions/domainAlias.html
Normal file
141
websiteFunctions/templates/websiteFunctions/domainAlias.html
Normal 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 %}
|
||||
@@ -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' %}">
|
||||
|
||||
@@ -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'),
|
||||
|
||||
|
||||
]
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user