Minor bug fixes

This commit is contained in:
usmannasir
2018-07-28 01:25:51 +05:00
parent 7944a7f78e
commit ebcad8c587
7 changed files with 431 additions and 18 deletions

View File

@@ -2052,6 +2052,10 @@ class preFlightsChecks:
cmd = shlex.split(command) cmd = shlex.split(command)
subprocess.call(cmd) subprocess.call(cmd)
command = 'systemctl restart systemd-logind'
cmd = shlex.split(command)
subprocess.call(cmd)
count = 0 count = 0

View File

@@ -35,6 +35,10 @@ class ApplicationInstaller(multi.Thread):
self.setupGit() self.setupGit()
elif self.installApp == 'pull': elif self.installApp == 'pull':
self.gitPull() self.gitPull()
elif self.installApp == 'detach':
self.detachRepo()
elif self.installApp == 'changeBranch':
self.changeBranch()
except BaseException, msg: except BaseException, msg:
logging.writeToFile( str(msg) + ' [ApplicationInstaller.run]') logging.writeToFile( str(msg) + ' [ApplicationInstaller.run]')
@@ -480,6 +484,36 @@ class ApplicationInstaller(multi.Thread):
logging.writeToFile(str(msg)+ " [ApplicationInstaller.gitPull]") logging.writeToFile(str(msg)+ " [ApplicationInstaller.gitPull]")
return 0 return 0
def detachRepo(self):
try:
domain = self.extraArgs['domainName']
command = 'sudo rm -rf /home/' + domain + '/public_html'
subprocess.check_output(shlex.split(command))
command = 'sudo mkdir /home/' + domain + '/public_html'
subprocess.check_output(shlex.split(command))
website = Websites.objects.get(domain=domain)
externalApp = website.externalApp
##
command = "sudo chown -R " + externalApp + ":" + externalApp + " " + '/home/' + domain + '/public_html'
cmd = shlex.split(command)
subprocess.call(cmd)
gitPath = '/home/cyberpanel/' + domain + '.git'
os.remove(gitPath)
return 0
except BaseException, msg:
logging.writeToFile(str(msg)+ " [ApplicationInstaller.gitPull]")
return 0
def installJoomla(self): def installJoomla(self):
try: try:
@@ -666,3 +700,25 @@ class ApplicationInstaller(multi.Thread):
statusFile.writelines(str(msg) + " [404]") statusFile.writelines(str(msg) + " [404]")
statusFile.close() statusFile.close()
return 0 return 0
def changeBranch(self):
try:
domainName = self.extraArgs['domainName']
githubBranch = self.extraArgs['githubBranch']
try:
command = 'sudo GIT_SSH_COMMAND="ssh -i /root/.ssh/cyberpanel -o StrictHostKeyChecking=no" git -C /home/' + domainName + '/public_html/ checkout -b' + githubBranch
subprocess.check_output(shlex.split(command))
except subprocess.CalledProcessError, msg:
logging.writeToFile('Failed to change branch: ' + str(msg))
return 0
##
return 0
except BaseException, msg:
return 0

View File

@@ -4235,7 +4235,7 @@ app.controller('installJoomlaCTRL', function($scope, $http, $timeout) {
}); });
app.controller('setupGit', function($scope, $http, $timeout) { app.controller('setupGit', function($scope, $http, $timeout, $window) {
$scope.installationDetailsForm = false; $scope.installationDetailsForm = false;
$scope.installationProgress = true; $scope.installationProgress = true;
@@ -4298,6 +4298,7 @@ app.controller('setupGit', function($scope, $http, $timeout) {
$scope.installPercentage = "100"; $scope.installPercentage = "100";
$scope.currentStatus = response.data.currentStatus; $scope.currentStatus = response.data.currentStatus;
$timeout.cancel(); $timeout.cancel();
$timeout(function() { $window.location.reload(); }, 3000);
} }
else{ else{
@@ -4405,7 +4406,6 @@ app.controller('setupGit', function($scope, $http, $timeout) {
}; };
$scope.goBack = function () { $scope.goBack = function () {
$scope.installationDetailsForm = false; $scope.installationDetailsForm = false;
$scope.installationProgress = true; $scope.installationProgress = true;
@@ -4418,5 +4418,133 @@ app.controller('setupGit', function($scope, $http, $timeout) {
$("#installProgress").css("width", "0%"); $("#installProgress").css("width", "0%");
}; };
/// Detach Repo
$scope.failedMesg = true;
$scope.successMessage = true;
$scope.couldNotConnect = true;
$scope.gitLoading = true;
$scope.successMessageBranch = true;
$scope.detachRepo = function(){
$scope.failedMesg = true;
$scope.successMessage = true;
$scope.couldNotConnect = true;
$scope.gitLoading = false;
$scope.successMessageBranch = true;
url = "/websites/detachRepo";
var data = {
domain: domain
};
var config = {
headers : {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
$scope.gitLoading = true;
if (response.data.status === 1)
{
$scope.failedMesg = true;
$scope.successMessage = false;
$scope.couldNotConnect = true;
$scope.successMessageBranch = true;
$timeout(function() { $window.location.reload(); }, 3000);
}
else{
$scope.failedMesg = false;
$scope.successMessage = true;
$scope.couldNotConnect = true;
$scope.successMessageBranch = true;
$scope.errorMessage = response.data.error_message;
}
}
function cantLoadInitialDatas(response) {
$scope.failedMesg = true;
$scope.successMessage = true;
$scope.couldNotConnect = false;
$scope.gitLoading = true;
$scope.successMessageBranch = true;
}
};
$scope.changeBranch = function(){
$scope.failedMesg = true;
$scope.successMessage = true;
$scope.couldNotConnect = true;
$scope.gitLoading = false;
$scope.successMessageBranch = true;
url = "/websites/changeBranch";
var data = {
domain: domain,
githubBranch: $scope.githubBranch
};
var config = {
headers : {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
$scope.gitLoading = true;
if (response.data.status === 1)
{
$scope.failedMesg = true;
$scope.successMessage = true;
$scope.couldNotConnect = true;
$scope.successMessageBranch = false;
}
else{
$scope.failedMesg = false;
$scope.successMessage = true;
$scope.couldNotConnect = true;
$scope.successMessageBranch = true;
$scope.errorMessage = response.data.error_message;
}
}
function cantLoadInitialDatas(response) {
$scope.failedMesg = true;
$scope.successMessage = true;
$scope.couldNotConnect = false;
$scope.gitLoading = true;
$scope.successMessageBranch = true;
}
};
}); });

View File

@@ -4235,7 +4235,7 @@ app.controller('installJoomlaCTRL', function($scope, $http, $timeout) {
}); });
app.controller('setupGit', function($scope, $http, $timeout) { app.controller('setupGit', function($scope, $http, $timeout, $window) {
$scope.installationDetailsForm = false; $scope.installationDetailsForm = false;
$scope.installationProgress = true; $scope.installationProgress = true;
@@ -4298,6 +4298,7 @@ app.controller('setupGit', function($scope, $http, $timeout) {
$scope.installPercentage = "100"; $scope.installPercentage = "100";
$scope.currentStatus = response.data.currentStatus; $scope.currentStatus = response.data.currentStatus;
$timeout.cancel(); $timeout.cancel();
$timeout(function() { $window.location.reload(); }, 3000);
} }
else{ else{
@@ -4405,7 +4406,6 @@ app.controller('setupGit', function($scope, $http, $timeout) {
}; };
$scope.goBack = function () { $scope.goBack = function () {
$scope.installationDetailsForm = false; $scope.installationDetailsForm = false;
$scope.installationProgress = true; $scope.installationProgress = true;
@@ -4418,5 +4418,133 @@ app.controller('setupGit', function($scope, $http, $timeout) {
$("#installProgress").css("width", "0%"); $("#installProgress").css("width", "0%");
}; };
/// Detach Repo
$scope.failedMesg = true;
$scope.successMessage = true;
$scope.couldNotConnect = true;
$scope.gitLoading = true;
$scope.successMessageBranch = true;
$scope.detachRepo = function(){
$scope.failedMesg = true;
$scope.successMessage = true;
$scope.couldNotConnect = true;
$scope.gitLoading = false;
$scope.successMessageBranch = true;
url = "/websites/detachRepo";
var data = {
domain: domain
};
var config = {
headers : {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
$scope.gitLoading = true;
if (response.data.status === 1)
{
$scope.failedMesg = true;
$scope.successMessage = false;
$scope.couldNotConnect = true;
$scope.successMessageBranch = true;
$timeout(function() { $window.location.reload(); }, 3000);
}
else{
$scope.failedMesg = false;
$scope.successMessage = true;
$scope.couldNotConnect = true;
$scope.successMessageBranch = true;
$scope.errorMessage = response.data.error_message;
}
}
function cantLoadInitialDatas(response) {
$scope.failedMesg = true;
$scope.successMessage = true;
$scope.couldNotConnect = false;
$scope.gitLoading = true;
$scope.successMessageBranch = true;
}
};
$scope.changeBranch = function(){
$scope.failedMesg = true;
$scope.successMessage = true;
$scope.couldNotConnect = true;
$scope.gitLoading = false;
$scope.successMessageBranch = true;
url = "/websites/changeBranch";
var data = {
domain: domain,
githubBranch: $scope.githubBranch
};
var config = {
headers : {
'X-CSRFToken': getCookie('csrftoken')
}
};
$http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas);
function ListInitialDatas(response) {
$scope.gitLoading = true;
if (response.data.status === 1)
{
$scope.failedMesg = true;
$scope.successMessage = true;
$scope.couldNotConnect = true;
$scope.successMessageBranch = false;
}
else{
$scope.failedMesg = false;
$scope.successMessage = true;
$scope.couldNotConnect = true;
$scope.successMessageBranch = true;
$scope.errorMessage = response.data.error_message;
}
}
function cantLoadInitialDatas(response) {
$scope.failedMesg = true;
$scope.successMessage = true;
$scope.couldNotConnect = false;
$scope.gitLoading = true;
$scope.successMessageBranch = true;
}
};
}); });

View File

@@ -1,21 +1,21 @@
{% extends "baseTemplate/index.html" %} {% extends "baseTemplate/index.html" %}
{% load i18n %} {% load i18n %}
{% block title %}{% trans "Attach Git - CyberPanel" %}{% endblock %} {% block title %}{% trans "Git Management - CyberPanel" %}{% endblock %}
{% block content %} {% block content %}
{% load static %} {% load static %}
{% get_current_language as LANGUAGE_CODE %} {% get_current_language as LANGUAGE_CODE %}
<!-- Current language: {{ LANGUAGE_CODE }} --> <!-- Current language: {{ LANGUAGE_CODE }} -->
<div class="container"> <div ng-controller="setupGit" class="container">
<div id="page-title"> <div id="page-title">
<h2>{% trans "Attach Git" %}</h2> <h2>{% trans "Git Management" %}</h2>
<p>{% trans "Attach git to your website" %}</p> <p>{% trans "Attach git to your websites." %}</p>
</div> </div>
{% if not installed %} {% if not installed %}
<div ng-controller="setupGit" class="panel"> <div class="panel">
<div class="panel-body"> <div class="panel-body">
<h3 class="title-hero"> <h3 class="title-hero">
<span id="domainNamePage">{{ domainName }}</span> - {% trans "Attach Git" %} <img ng-hide="gitLoading" src="{% static 'images/loading.gif' %}"> <span id="domainNamePage">{{ domainName }}</span> - {% trans "Attach Git" %} <img ng-hide="gitLoading" src="{% static 'images/loading.gif' %}">
@@ -120,7 +120,7 @@
</div> </div>
<div ng-hide="installationSuccessfull" class="alert alert-success"> <div ng-hide="installationSuccessfull" class="alert alert-success">
<p>{% trans "GIT Successfully attached. Visit:" %} {$ installationURL $}</p> <p>{% trans "GIT Successfully attached, refreshing page in 3 seconds... Visit:" %} {$ installationURL $}</p>
</div> </div>
@@ -194,7 +194,7 @@
{% else %} {% else %}
<div ng-controller="setupGit" class="panel"> <div class="panel">
<div class="panel-body"> <div class="panel-body">
<h3 class="title-hero"> <h3 class="title-hero">
<span id="domainNamePage">{{ domainName }}</span> <img ng-hide="gitLoading" src="{% static 'images/loading.gif' %}"> <span id="domainNamePage">{{ domainName }}</span> <img ng-hide="gitLoading" src="{% static 'images/loading.gif' %}">
@@ -220,9 +220,9 @@
<div class="tab-pane fade active in" id="tab-example-1"> <div class="tab-pane fade active in" id="tab-example-1">
<ul class="list-group row"> <ul class="list-group row">
<li class="col-md-3"> <li class="col-md-3">
<a href="" ng-click="setProvider('github')" class="list-group-item"> <a href="" ng-click="detachRepo()" class="list-group-item">
<i class="fa fa-github" aria-hidden="true"></i> <i class="fa fa-github" aria-hidden="true"></i>
Detach Repo {% trans 'Detach Repo' %}
<i class="glyph-icon icon-chevron-right"></i> <i class="glyph-icon icon-chevron-right"></i>
</a> </a>
</li> </li>
@@ -231,6 +231,28 @@
<h4 class="alert-title">{% trans 'Webhook URL' %}</h4> <h4 class="alert-title">{% trans 'Webhook URL' %}</h4>
<p>{% trans "Add this URL to Webhooks section of your Git respository, if you've used hostname SSL then replace IP with your hostname. Otherwise use IP and disable SSL check while configuring webhook. This will initiate a pull from your resposity as soon as you commit some changes."%} <code>{{ webhookURL }}</code></p> <p>{% trans "Add this URL to Webhooks section of your Git respository, if you've used hostname SSL then replace IP with your hostname. Otherwise use IP and disable SSL check while configuring webhook. This will initiate a pull from your resposity as soon as you commit some changes."%} <code>{{ webhookURL }}</code></p>
</div> </div>
<div ng-hide="" class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-7">
<div ng-hide="failedMesg" class="alert alert-danger">
<p>{% trans "Error message:" %} {$ errorMessage $}</p>
</div>
<div ng-hide="successMessage" class="alert alert-success">
<p>{% trans "Repo successfully detached, refreshing in 3 seconds.." %}</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>
</div> </div>
@@ -251,7 +273,7 @@
<div ng-hide="installationDetailsForm" class="form-group"> <div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label"></label> <label class="col-sm-3 control-label"></label>
<div class="col-sm-4"> <div class="col-sm-4">
<button type="button" ng-click="attachRepo()" class="btn btn-primary btn-lg btn-block">{% trans "Change Branch" %}</button> <button type="button" ng-click="changeBranch()" class="btn btn-primary btn-lg btn-block">{% trans "Change Branch" %}</button>
</div> </div>
</div> </div>
@@ -264,7 +286,7 @@
<p>{% trans "Error message:" %} {$ errorMessage $}</p> <p>{% trans "Error message:" %} {$ errorMessage $}</p>
</div> </div>
<div ng-hide="successMessage" class="alert alert-success"> <div ng-hide="successMessageBranch" class="alert alert-success">
<p>{% trans "Branch successfully changed." %}</p> <p>{% trans "Branch successfully changed." %}</p>
</div> </div>
@@ -275,7 +297,7 @@
</div> </div>
</div> </div>
</div> </div>
</form> </form>

View File

@@ -94,7 +94,8 @@ urlpatterns = [
url(r'^setupGitRepo$', views.setupGitRepo, name='setupGitRepo'), url(r'^setupGitRepo$', views.setupGitRepo, name='setupGitRepo'),
url(r'^(?P<domain>([\da-z\.-]+\.[a-z\.]{2,12}|[\d\.]+)([\/:?=&#]{1}[\da-z\.-]+)*[\/\?]?)/gitNotify$', views.gitNotify, name='gitNotify'), url(r'^(?P<domain>([\da-z\.-]+\.[a-z\.]{2,12}|[\d\.]+)([\/:?=&#]{1}[\da-z\.-]+)*[\/\?]?)/gitNotify$', views.gitNotify, name='gitNotify'),
url(r'^detachRepo$', views.detachRepo, name='detachRepo'),
url(r'^changeBranch$', views.changeBranch, name='changeBranch'),
] ]

View File

@@ -2602,4 +2602,78 @@ def gitNotify(request, domain):
except KeyError, msg: except KeyError, msg:
data_ret = {"pulled":0,"error":str(msg)} data_ret = {"pulled":0,"error":str(msg)}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
def detachRepo(request):
try:
val = request.session['userID']
admin = Administrator.objects.get(pk=val)
if request.method == 'POST':
try:
data = json.loads(request.body)
mailUtilities.checkHome()
extraArgs = {}
extraArgs['domainName'] = data['domain']
background = ApplicationInstaller('detach', extraArgs)
background.start()
time.sleep(2)
data_ret = {'status': 1, 'error_message': 'None'}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except BaseException, msg:
data_ret = {'status': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except KeyError, msg:
status = {"status":0,"error":str(msg)}
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[installWordpress]")
return HttpResponse("Not Logged in as admin")
def changeBranch(request):
try:
val = request.session['userID']
admin = Administrator.objects.get(pk=val)
if request.method == 'POST':
try:
data = json.loads(request.body)
mailUtilities.checkHome()
extraArgs = {}
extraArgs['domainName'] = data['domain']
extraArgs['githubBranch'] = data['githubBranch']
background = ApplicationInstaller('changeBranch', extraArgs)
background.start()
time.sleep(2)
data_ret = {'status': 1, 'error_message': 'None'}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except BaseException, msg:
data_ret = {'status': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except KeyError, msg:
status = {"status":0,"error":str(msg)}
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[installWordpress]")
return HttpResponse("Not Logged in as admin")