bug fix: git manager

This commit is contained in:
Usman Nasir
2021-12-23 21:14:41 +05:00
parent d278fef0d3
commit c7071a1a50
2 changed files with 125 additions and 87 deletions

View File

@@ -820,4 +820,16 @@ class ACLManager:
else: else:
return 0 return 0
@staticmethod
def FetchExternalApp(domain):
try:
childDomain = ChildDomains.objects.get(domain=domain)
return childDomain.master.externalApp
except:
domainName = Websites.objects.get(domain=domain)
return domainName.externalApp

View File

@@ -2839,14 +2839,14 @@ StrictHostKeyChecking no
try: try:
website = Websites.objects.get(domain=self.domain) website = Websites.objects.get(domain=self.domain)
folders = ['/home/%s/public_html' % (self.domain), '/home/%s' % (self.domain), folders = ['/home/%s/public_html' % (self.domain)]
'/home/vmail/%s' % (self.domain)]
databases = website.databases_set.all() databases = website.databases_set.all()
for database in databases: # for database in databases:
basePath = '/var/lib/mysql/' # basePath = '/var/lib/mysql/'
folders.append('%s%s' % (basePath, database.dbName)) # folders.append('%s%s' % (basePath, database.dbName))
except: except:
self.childWebsite = ChildDomains.objects.get(domain=self.domain) self.childWebsite = ChildDomains.objects.get(domain=self.domain)
@@ -2855,9 +2855,9 @@ StrictHostKeyChecking no
databases = self.childWebsite.master.databases_set.all() databases = self.childWebsite.master.databases_set.all()
for database in databases: # for database in databases:
basePath = '/var/lib/mysql/' # basePath = '/var/lib/mysql/'
folders.append('%s%s' % (basePath, database.dbName)) # folders.append('%s%s' % (basePath, database.dbName))
proc = httpProc(request, 'websiteFunctions/manageGIT.html', proc = httpProc(request, 'websiteFunctions/manageGIT.html',
{'domainName': self.domain, 'folders': folders}) {'domainName': self.domain, 'folders': folders})
@@ -3124,24 +3124,26 @@ StrictHostKeyChecking no
else: else:
return ACLManager.loadErrorJson() return ACLManager.loadErrorJson()
website = Websites.objects.get(domain=self.masterDomain)
command = 'git -C %s init' % (self.folder) command = 'git -C %s init' % (self.folder)
result = ProcessUtilities.outputExecutioner(command) result = ProcessUtilities.outputExecutioner(command, website.externalApp)
if result.find('Initialized empty Git repository in') > -1: if result.find('Initialized empty Git repository in') > -1:
command = 'git -C %s config --local user.email %s' % (self.folder, self.adminEmail) command = 'git -C %s config --local user.email %s' % (self.folder, self.adminEmail)
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command, website.externalApp)
command = 'git -C %s config --local user.name "%s %s"' % ( command = 'git -C %s config --local user.name "%s %s"' % (
self.folder, self.firstName, self.lastName) self.folder, self.firstName, self.lastName)
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command, website.externalApp)
## Fix permissions ## Fix permissions
from filemanager.filemanager import FileManager # from filemanager.filemanager import FileManager
#
fm = FileManager(None, None) # fm = FileManager(None, None)
fm.fixPermissions(self.masterDomain) # fm.fixPermissions(self.masterDomain)
data_ret = {'status': 1} data_ret = {'status': 1}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
@@ -3205,12 +3207,12 @@ StrictHostKeyChecking no
command = 'git -C %s config --local core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""' % ( command = 'git -C %s config --local core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""' % (
self.folder, self.masterDomain, self.externalAppLocal) self.folder, self.masterDomain, self.externalAppLocal)
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command, self.externalAppLocal)
## Check if remote exists ## Check if remote exists
command = 'git -C %s remote -v' % (self.folder) command = 'git -C %s remote -v' % (self.folder)
remoteResult = ProcessUtilities.outputExecutioner(command) remoteResult = ProcessUtilities.outputExecutioner(command, self.externalAppLocal)
## Set new remote ## Set new remote
@@ -3221,21 +3223,21 @@ StrictHostKeyChecking no
command = 'git -C %s remote set-url origin git@%s:%s/%s.git' % ( command = 'git -C %s remote set-url origin git@%s:%s/%s.git' % (
self.folder, self.gitHost, self.gitUsername, self.gitReponame) self.folder, self.gitHost, self.gitUsername, self.gitReponame)
possibleError = ProcessUtilities.outputExecutioner(command) possibleError = ProcessUtilities.outputExecutioner(command, self.externalAppLocal)
## Check if set correctly. ## Check if set correctly.
command = 'git -C %s remote -v' % (self.folder) command = 'git -C %s remote -v' % (self.folder)
remoteResult = ProcessUtilities.outputExecutioner(command) remoteResult = ProcessUtilities.outputExecutioner(command, self.externalAppLocal)
if remoteResult.find(self.gitUsername) > -1: if remoteResult.find(self.gitUsername) > -1:
## Fix permissions # ## Fix permissions
#
from filemanager.filemanager import FileManager # from filemanager.filemanager import FileManager
#
fm = FileManager(None, None) # fm = FileManager(None, None)
fm.fixPermissions(self.masterDomain) # fm.fixPermissions(self.masterDomain)
data_ret = {'status': 1} data_ret = {'status': 1}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
@@ -3283,17 +3285,19 @@ StrictHostKeyChecking no
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
self.externalApp = ACLManager.FetchExternalApp(self.domain)
command = 'git -C %s checkout %s' % (self.folder, self.branchName.strip(' ')) command = 'git -C %s checkout %s' % (self.folder, self.branchName.strip(' '))
commandStatus = ProcessUtilities.outputExecutioner(command) commandStatus = ProcessUtilities.outputExecutioner(command, self.externalApp)
if commandStatus.find('Switched to branch') > -1: if commandStatus.find('Switched to branch') > -1:
## Fix permissions # ## Fix permissions
#
from filemanager.filemanager import FileManager # from filemanager.filemanager import FileManager
#
fm = FileManager(None, None) # fm = FileManager(None, None)
fm.fixPermissions(self.masterDomain) # fm.fixPermissions(self.masterDomain)
data_ret = {'status': 1, 'commandStatus': commandStatus + 'Refreshing page in 3 seconds..'} data_ret = {'status': 1, 'commandStatus': commandStatus + 'Refreshing page in 3 seconds..'}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
@@ -3337,17 +3341,19 @@ StrictHostKeyChecking no
## ##
self.externalApp = ACLManager.FetchExternalApp(self.domain)
command = 'git -C %s checkout -b "%s"' % (self.folder, self.newBranchName) command = 'git -C %s checkout -b "%s"' % (self.folder, self.newBranchName)
commandStatus = ProcessUtilities.outputExecutioner(command) commandStatus = ProcessUtilities.outputExecutioner(command, self.externalApp)
if commandStatus.find(self.newBranchName) > -1: if commandStatus.find(self.newBranchName) > -1:
## Fix permissions # ## Fix permissions
#
from filemanager.filemanager import FileManager # from filemanager.filemanager import FileManager
#
fm = FileManager(None, None) # fm = FileManager(None, None)
fm.fixPermissions(self.masterDomain) # fm.fixPermissions(self.masterDomain)
data_ret = {'status': 1, 'commandStatus': commandStatus} data_ret = {'status': 1, 'commandStatus': commandStatus}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
@@ -3389,13 +3395,15 @@ StrictHostKeyChecking no
else: else:
return ACLManager.loadErrorJson() return ACLManager.loadErrorJson()
self.externalApp = ACLManager.FetchExternalApp(self.domain)
## Check if remote exists ## Check if remote exists
command = 'git -C %s add -A' % (self.folder) command = 'git -C %s add -A' % (self.folder)
ProcessUtilities.outputExecutioner(command) ProcessUtilities.outputExecutioner(command, self.externalApp)
command = 'git -C %s commit -m "%s"' % (self.folder, self.commitMessage.replace('"', '')) command = 'git -C %s commit -m "%s"' % (self.folder, self.commitMessage.replace('"', ''))
commandStatus = ProcessUtilities.outputExecutioner(command) commandStatus = ProcessUtilities.outputExecutioner(command, self.externalApp)
if commandStatus.find('nothing to commit') == -1: if commandStatus.find('nothing to commit') == -1:
@@ -3430,10 +3438,10 @@ StrictHostKeyChecking no
## Fix permissions ## Fix permissions
from filemanager.filemanager import FileManager # from filemanager.filemanager import FileManager
#
fm = FileManager(None, None) # fm = FileManager(None, None)
fm.fixPermissions(self.masterDomain) # fm.fixPermissions(self.masterDomain)
data_ret = {'status': 1, 'commandStatus': commandStatus} data_ret = {'status': 1, 'commandStatus': commandStatus}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
@@ -3467,25 +3475,27 @@ StrictHostKeyChecking no
else: else:
return ACLManager.loadErrorJson() return ACLManager.loadErrorJson()
self.externalApp = ACLManager.FetchExternalApp(self.domain)
### set default ssh key ### set default ssh key
command = 'git -C %s config --local core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""' % ( command = 'git -C %s config --local core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""' % (
self.folder, self.masterDomain, self.externalAppLocal) self.folder, self.masterDomain, self.externalAppLocal)
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command, self.externalApp)
## Check if remote exists ## Check if remote exists
command = 'git -C %s pull' % (self.folder) command = 'git -C %s pull' % (self.folder)
commandStatus = ProcessUtilities.outputExecutioner(command) commandStatus = ProcessUtilities.outputExecutioner(command, self.externalApp)
if commandStatus.find('Already up to date') == -1: if commandStatus.find('Already up to date') == -1:
## Fix permissions ## Fix permissions
from filemanager.filemanager import FileManager # from filemanager.filemanager import FileManager
#
fm = FileManager(None, None) # fm = FileManager(None, None)
fm.fixPermissions(self.masterDomain) # fm.fixPermissions(self.masterDomain)
data_ret = {'status': 1, 'commandStatus': commandStatus} data_ret = {'status': 1, 'commandStatus': commandStatus}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
@@ -3519,20 +3529,22 @@ StrictHostKeyChecking no
else: else:
return ACLManager.loadErrorJson() return ACLManager.loadErrorJson()
self.externalApp = ACLManager.FetchExternalApp(self.domain)
### set default ssh key ### set default ssh key
command = 'git -C %s config --local core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""' % ( command = 'git -C %s config --local core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""' % (
self.folder, self.masterDomain, self.externalAppLocal) self.folder, self.masterDomain, self.externalAppLocal)
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command, self.externalApp)
## ##
command = 'git -C %s push' % (self.folder) command = 'git -C %s push' % (self.folder)
commandStatus = ProcessUtilities.outputExecutioner(command, 'root', False) commandStatus = ProcessUtilities.outputExecutioner(command, self.externalApp, False)
if commandStatus.find('has no upstream branch') > -1: if commandStatus.find('has no upstream branch') > -1:
command = 'git -C %s rev-parse --abbrev-ref HEAD' % (self.folder) command = 'git -C %s rev-parse --abbrev-ref HEAD' % (self.folder)
currentBranch = ProcessUtilities.outputExecutioner(command, 'root', False).rstrip('\n') currentBranch = ProcessUtilities.outputExecutioner(command, self.externalApp, False).rstrip('\n')
if currentBranch.find('fatal: ambiguous argument') > -1: if currentBranch.find('fatal: ambiguous argument') > -1:
data_ret = {'status': 0, 'error_message': 'You need to commit first.', data_ret = {'status': 0, 'error_message': 'You need to commit first.',
@@ -3541,7 +3553,7 @@ StrictHostKeyChecking no
return HttpResponse(json_data) return HttpResponse(json_data)
command = 'git -C %s push --set-upstream origin %s' % (self.folder, currentBranch) command = 'git -C %s push --set-upstream origin %s' % (self.folder, currentBranch)
commandStatus = ProcessUtilities.outputExecutioner(command, 'root', False) commandStatus = ProcessUtilities.outputExecutioner(command, self.externalApp, False)
if commandStatus.find('Everything up-to-date') == -1 and commandStatus.find( if commandStatus.find('Everything up-to-date') == -1 and commandStatus.find(
'rejected') == -1 and commandStatus.find('Permission denied') == -1: 'rejected') == -1 and commandStatus.find('Permission denied') == -1:
@@ -3609,33 +3621,35 @@ StrictHostKeyChecking no
## ##
self.externalApp = ACLManager.FetchExternalApp(self.domain)
if self.overrideData: if self.overrideData:
command = 'rm -rf %s' % (self.folder) command = 'rm -rf %s' % (self.folder)
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command, self.externalApp)
## Set defauly key ## Set defauly key
command = 'git config --global core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""' % ( command = 'git config --global core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""' % (
self.masterDomain, self.externalAppLocal) self.masterDomain, self.externalAppLocal)
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command, self.externalApp)
## ##
command = 'git clone git@%s:%s/%s.git %s' % (self.gitHost, self.gitUsername, self.gitReponame, self.folder) command = 'git clone git@%s:%s/%s.git %s' % (self.gitHost, self.gitUsername, self.gitReponame, self.folder)
commandStatus = ProcessUtilities.outputExecutioner(command) commandStatus = ProcessUtilities.outputExecutioner(command, self.externalApp)
if commandStatus.find('already exists') == -1 and commandStatus.find('Permission denied') == -1: if commandStatus.find('already exists') == -1 and commandStatus.find('Permission denied') == -1:
from filemanager.filemanager import FileManager # from filemanager.filemanager import FileManager
#
fm = FileManager(None, None) # fm = FileManager(None, None)
fm.fixPermissions(self.masterDomain) # fm.fixPermissions(self.masterDomain)
command = 'git -C %s config --local user.email %s' % (self.folder, self.adminEmail) command = 'git -C %s config --local user.email %s' % (self.folder, self.adminEmail)
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command, self.externalApp)
command = 'git -C %s config --local user.name "%s %s"' % (self.folder, self.firstName, self.lastName) command = 'git -C %s config --local user.name "%s %s"' % (self.folder, self.firstName, self.lastName)
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command, self.externalApp)
data_ret = {'status': 1, 'commandStatus': commandStatus} data_ret = {'status': 1, 'commandStatus': commandStatus}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
@@ -3643,10 +3657,10 @@ StrictHostKeyChecking no
else: else:
from filemanager.filemanager import FileManager # from filemanager.filemanager import FileManager
#
fm = FileManager(None, None) # fm = FileManager(None, None)
fm.fixPermissions(self.masterDomain) # fm.fixPermissions(self.masterDomain)
data_ret = {'status': 0, 'error_message': 'Failed to clone.', 'commandStatus': commandStatus} data_ret = {'status': 0, 'error_message': 'Failed to clone.', 'commandStatus': commandStatus}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
@@ -3676,22 +3690,24 @@ StrictHostKeyChecking no
else: else:
return ACLManager.loadErrorJson() return ACLManager.loadErrorJson()
self.externalApp = ACLManager.FetchExternalApp(self.domain)
command = 'rm -rf %s/.git' % (self.folder) command = 'rm -rf %s/.git' % (self.folder)
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command, self.externalApp)
gitConfFolder = '/home/cyberpanel/git' gitConfFolder = '/home/cyberpanel/git'
gitConFile = '%s/%s' % (gitConfFolder, self.masterDomain) gitConFile = '%s/%s' % (gitConfFolder, self.masterDomain)
finalFile = '%s/%s' % (gitConFile, self.folder.split('/')[-1]) finalFile = '%s/%s' % (gitConFile, self.folder.split('/')[-1])
command = 'rm -rf %s' % (finalFile) command = 'rm -rf %s' % (finalFile)
ProcessUtilities.outputExecutioner(command) ProcessUtilities.outputExecutioner(command, self.externalApp)
## Fix permissions ## Fix permissions
from filemanager.filemanager import FileManager # from filemanager.filemanager import FileManager
#
fm = FileManager(None, None) # fm = FileManager(None, None)
fm.fixPermissions(self.masterDomain) # fm.fixPermissions(self.masterDomain)
data_ret = {'status': 1} data_ret = {'status': 1}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
@@ -3766,15 +3782,17 @@ StrictHostKeyChecking no
## Move to original file ## Move to original file
self.externalApp = ACLManager.FetchExternalApp(self.domain)
command = 'mv %s %s/.gitignore' % (tempPath, self.folder) command = 'mv %s %s/.gitignore' % (tempPath, self.folder)
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command, self.externalApp)
## Fix permissions ## Fix permissions
from filemanager.filemanager import FileManager # from filemanager.filemanager import FileManager
#
fm = FileManager(None, None) # fm = FileManager(None, None)
fm.fixPermissions(self.masterDomain) # fm.fixPermissions(self.masterDomain)
data_ret = {'status': 1} data_ret = {'status': 1}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
@@ -3806,8 +3824,10 @@ StrictHostKeyChecking no
initCommand = """log --pretty=format:"%h|%s|%cn|%cd" -50""" initCommand = """log --pretty=format:"%h|%s|%cn|%cd" -50"""
self.externalApp = ACLManager.FetchExternalApp(self.domain)
command = 'git -C %s %s' % (self.folder, initCommand) command = 'git -C %s %s' % (self.folder, initCommand)
commits = ProcessUtilities.outputExecutioner(command).split('\n') commits = ProcessUtilities.outputExecutioner(command, self.externalApp).split('\n')
json_data = "[" json_data = "["
checker = 0 checker = 0
@@ -3870,8 +3890,10 @@ StrictHostKeyChecking no
## ##
self.externalApp = ACLManager.FetchExternalApp(self.domain)
command = 'git -C %s diff-tree --no-commit-id --name-only -r %s' % (self.folder, self.commit) command = 'git -C %s diff-tree --no-commit-id --name-only -r %s' % (self.folder, self.commit)
files = ProcessUtilities.outputExecutioner(command).split('\n') files = ProcessUtilities.outputExecutioner(command, self.externalApp).split('\n')
data_ret = {'status': 1, 'files': files} data_ret = {'status': 1, 'files': files}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
@@ -3910,9 +3932,11 @@ StrictHostKeyChecking no
else: else:
return ACLManager.loadErrorJson('status', 'Invalid characters in your input.') return ACLManager.loadErrorJson('status', 'Invalid characters in your input.')
self.externalApp = ACLManager.FetchExternalApp(self.domain)
command = 'git -C %s show %s -- %s/%s' % ( command = 'git -C %s show %s -- %s/%s' % (
self.folder, self.commit, self.folder, self.file.strip('\n').strip(' ')) self.folder, self.commit, self.folder, self.file.strip('\n').strip(' '))
fileChangedContent = ProcessUtilities.outputExecutioner(command).split('\n') fileChangedContent = ProcessUtilities.outputExecutioner(command, self.externalApp).split('\n')
initialNumber = 0 initialNumber = 0
## Find initial line numbers ## Find initial line numbers
@@ -4123,8 +4147,10 @@ StrictHostKeyChecking no
## Check if remote exists ## Check if remote exists
self.externalApp = ACLManager.FetchExternalApp(self.domain)
command = 'git -C %s pull' % (self.folder) command = 'git -C %s pull' % (self.folder)
commandStatus = ProcessUtilities.outputExecutioner(command) commandStatus = ProcessUtilities.outputExecutioner(command, self.externalApp)
if commandStatus.find('Already up to date') == -1: if commandStatus.find('Already up to date') == -1:
message = '[Webhook Fired] Status: %s.' % (commandStatus) message = '[Webhook Fired] Status: %s.' % (commandStatus)
@@ -4188,10 +4214,10 @@ StrictHostKeyChecking no
## Fix permissions ## Fix permissions
from filemanager.filemanager import FileManager # from filemanager.filemanager import FileManager
#
fm = FileManager(None, None) # fm = FileManager(None, None)
fm.fixPermissions(self.masterDomain) # fm.fixPermissions(self.masterDomain)
data_ret = {'status': 1, 'commandStatus': commandStatus} data_ret = {'status': 1, 'commandStatus': commandStatus}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)