git manager initial

This commit is contained in:
Usman Nasir
2020-03-07 19:01:54 +05:00
parent acdcfcb797
commit 2dc5ecd361
8 changed files with 148 additions and 31 deletions

View File

@@ -0,0 +1,64 @@
{% extends "baseTemplate/index.html" %}
{% load i18n %}
{% block title %}{% trans "Manage Git - CyberPanel" %}{% endblock %}
{% block content %}
{% load static %}
{% get_current_language as LANGUAGE_CODE %}
<!-- Current language: {{ LANGUAGE_CODE }} -->
<div class="container">
<div id="page-title">
<h2>{% trans "Manage GIT" %}</h2>
<p>{% trans "Manage and track folders via Git for " %} {{ domainName }}.</p>
</div>
<div ng-controller="sshAccess" class="panel">
<div class="panel-body">
<h3 class="title-hero">
{% trans "Manage and track folders via Git for " %} {{ domainName }}.</span> <img
ng-hide="wpInstallLoading" src="{% static 'images/loading.gif' %}">
</h3>
<div class="example-box-wrapper">
<form action="/" class="form-horizontal bordered-row">
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Website" %} </label>
<div class="col-sm-6">
<select ng-change="showFTPDetails()" ng-model="ftpDomain" class="form-control">
{% for item in folders %}
<option>{{ item }}</option>
{% endfor %}
</select>
</div>
</div>
</form>
<table class="table">
<thead>
<tr>
<th>Folder</th>
<th>Remote</th>
<th>Branch</th>
<th>Status</th>
<th>Manage</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="record in records | filter:logSearch">
<td ng-bind="record.domain"></td>
<td ng-bind="record.ipAddress"></td>
<td ng-bind="record.time"></td>
<td ng-bind="record.resource"></td>
<td ng-bind="record.size"></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -26,6 +26,9 @@
<h3 class="content-box-header">
{% trans "Resource Usage" %} <img ng-hide="domainLoading" src="/static/images/loading.gif">
<a style="float: right; margin-left: 2%" class="btn btn-border btn-alt border-orange btn-link font-orange" href="/websites/{{ domain }}/manageGIT" title="Manage Git"><span>{% trans "Manage Git" %}</span></a>
<a style="float: right; margin-left: 2%"
class="btn btn-border btn-alt border-azure btn-link font-azure"
href="/websites/{{ domain }}/setupStaging" title=""><span>{% trans "Clone/Staging" %}</span></a>
@@ -33,7 +36,6 @@
href="/websites/{{ domain }}/sshAccess" title=""><span>{% trans "Set up SSH Access" %}</span></a>
</h3>
<div class="content-box-wrapper">
<div class="row">
@@ -107,6 +109,7 @@
</div>
</div>
</div>
</div>
</div>

View File

@@ -117,6 +117,10 @@ urlpatterns = [
url(r'^detachRepo$', views.detachRepo, name='detachRepo'),
url(r'^changeBranch$', views.changeBranch, name='changeBranch'),
### Manage GIT
url(r'^(?P<domain>(.*))/manageGIT$', views.manageGIT, name='manageGIT'),
## Catch all for domains
url(r'^(?P<domain>(.*))/(?P<childDomain>(.*))$', views.launchChild, name='launchChild'),
url(r'^(?P<domain>(.*))$', views.domain, name='domain'),

View File

@@ -705,5 +705,23 @@ def startSync(request):
userID = request.session['userID']
wm = WebsiteManager()
return wm.startSync(userID, json.loads(request.body))
except KeyError:
return redirect(loadLoginPage)
### Manage GIT
def manageGIT(request, domain):
try:
if not request.GET._mutable:
request.GET._mutable = True
request.GET['domain'] = domain
userID = request.session['userID']
wm = WebsiteManager(domain)
return wm.manageGIT(request, userID)
except KeyError:
return redirect(loadLoginPage)

View File

@@ -2869,3 +2869,29 @@ StrictHostKeyChecking no
data_ret = {'status': 0, 'createWebSiteStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def manageGIT(self, request=None, userID=None, data=None):
try:
currentACL = ACLManager.loadedACL(userID)
admin = Administrator.objects.get(pk=userID)
if ACLManager.checkOwnership(self.domain, admin, currentACL) == 1:
pass
else:
return ACLManager.loadError()
website = Websites.objects.get(domain=self.domain)
externalApp = website.externalApp
folders = ['/home/%s' % (self.domain), '/home/vmail/%s' % (self.domain)]
databases = website.databases_set.all()
for database in databases:
basePath = '/var/lib/mysql/'
folders.append('%s%s' % (basePath, database.dbName))
return render(request, 'websiteFunctions/manageGIT.html',
{'domainName': self.domain, 'folders': folders})
except BaseException as msg:
return HttpResponse(str(msg))