Files
CyberPanel/databases/views.py

283 lines
9.5 KiB
Python
Raw Normal View History

2017-10-24 19:16:36 +05:00
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render,redirect
from django.http import HttpResponse
from loginSystem.models import Administrator
from websiteFunctions.models import Websites
import plogical.CyberCPLogFileWriter as logging
from plogical.mysqlUtilities import mysqlUtilities
from loginSystem.views import loadLoginPage
from models import Databases
import json
import shlex
import subprocess
2018-08-18 00:39:10 +05:00
from plogical.acl import ACLManager
2017-10-24 19:16:36 +05:00
# Create your views here.
def loadDatabaseHome(request):
try:
val = request.session['userID']
try:
return render(request, 'databases/index.html')
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse(str(msg))
except KeyError:
return redirect(loadLoginPage)
def createDatabase(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
2017-10-24 19:16:36 +05:00
try:
2018-08-18 00:39:10 +05:00
currentACL = ACLManager.loadedACL(userID)
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
if currentACL['admin'] == 1:
pass
elif currentACL['createDatabase'] == 1:
pass
2017-10-24 19:16:36 +05:00
else:
2018-08-18 00:39:10 +05:00
return ACLManager.loadError()
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
websitesName = ACLManager.findAllSites(currentACL, userID)
2017-10-24 19:16:36 +05:00
return render(request, 'databases/createDatabase.html', {'websitesList':websitesName})
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse(str(msg))
except KeyError:
return redirect(loadLoginPage)
def submitDBCreation(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
2017-10-24 19:16:36 +05:00
try:
if request.method == 'POST':
data = json.loads(request.body)
databaseWebsite = data['databaseWebsite']
dbName = data['dbName']
dbUsername = data['dbUsername']
dbPassword = data['dbPassword']
2017-12-09 22:30:10 +05:00
webUsername = data['webUserName']
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
elif currentACL['createDatabase'] == 1:
pass
else:
return ACLManager.loadErrorJson('createDBStatus', 0)
2018-06-30 15:29:56 +05:00
2017-10-24 19:16:36 +05:00
dbName = webUsername+"_"+dbName
dbUsername = webUsername+"_"+dbUsername
2018-06-05 00:53:45 +05:00
result = mysqlUtilities.submitDBCreation(dbName, dbUsername, dbPassword, databaseWebsite)
2017-10-24 19:16:36 +05:00
2018-06-05 00:53:45 +05:00
if result[0] == 1:
data_ret = {'createDBStatus': 1, 'error_message': "None"}
2017-10-24 19:16:36 +05:00
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
else:
2018-06-05 00:53:45 +05:00
data_ret = {'createDBStatus': 0, 'error_message': result[1]}
2017-10-24 19:16:36 +05:00
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except BaseException,msg:
data_ret = {'createDBStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except KeyError,msg:
data_ret = {'createDBStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def deleteDatabase(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
2017-10-24 19:16:36 +05:00
try:
2018-08-18 00:39:10 +05:00
currentACL = ACLManager.loadedACL(userID)
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
if currentACL['admin'] == 1:
pass
elif currentACL['deleteDatabase'] == 1:
pass
2017-10-24 19:16:36 +05:00
else:
2018-08-18 00:39:10 +05:00
return ACLManager.loadError()
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
websitesName = ACLManager.findAllSites(currentACL, userID)
2017-10-24 19:16:36 +05:00
return render(request, 'databases/deleteDatabase.html', {'websitesList':websitesName})
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse(str(msg))
except KeyError:
return redirect(loadLoginPage)
def fetchDatabases(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
2017-10-24 19:16:36 +05:00
try:
data = json.loads(request.body)
2018-08-18 00:39:10 +05:00
currentACL = ACLManager.loadedACL(userID)
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
if currentACL['admin'] == 1:
pass
elif currentACL['deleteDatabase'] == 1:
pass
else:
return ACLManager.loadErrorJson('fetchStatus', 0)
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
databaseWebsite = data['databaseWebsite']
2018-06-30 15:29:56 +05:00
2017-10-24 19:16:36 +05:00
website = Websites.objects.get(domain=databaseWebsite)
databases = Databases.objects.filter(website=website)
json_data = "["
checker = 0
for items in databases:
dic = { 'id':items.pk,
'dbName': items.dbName,
'dbUser': items.dbUser,}
if checker == 0:
json_data = json_data + json.dumps(dic)
checker = 1
else:
json_data = json_data + ',' + json.dumps(dic)
json_data = json_data + ']'
final_json = json.dumps({'fetchStatus': 1, 'error_message': "None", "data": json_data})
return HttpResponse(final_json)
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
final_json = json.dumps({'fetchStatus': 0, 'error_message': str(msg)})
return HttpResponse(final_json)
except KeyError:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
final_json = json.dumps({'fetchStatus': 0, 'error_message': "Not logged in."})
return HttpResponse(final_json)
def submitDatabaseDeletion(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
2017-10-24 19:16:36 +05:00
try:
if request.method == 'POST':
data = json.loads(request.body)
dbName = data['dbName']
2018-08-18 00:39:10 +05:00
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
elif currentACL['deleteDatabase'] == 1:
pass
else:
return ACLManager.loadErrorJson('deleteStatus', 0)
2017-10-24 19:16:36 +05:00
2018-06-05 00:53:45 +05:00
result = mysqlUtilities.submitDBDeletion(dbName)
2017-10-24 19:16:36 +05:00
2018-06-05 00:53:45 +05:00
if result[0] == 1:
2017-10-24 19:16:36 +05:00
data_ret = {'deleteStatus': 1, 'error_message': "None"}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
else:
2018-06-05 00:53:45 +05:00
data_ret = {'deleteStatus': 0, 'error_message': result[1]}
2017-10-24 19:16:36 +05:00
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except BaseException,msg:
data_ret = {'deleteStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except KeyError,msg:
data_ret = {'deleteStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def listDBs(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
2017-10-24 19:16:36 +05:00
try:
2018-08-18 00:39:10 +05:00
currentACL = ACLManager.loadedACL(userID)
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
if currentACL['admin'] == 1:
pass
elif currentACL['listDatabases'] == 1:
pass
2017-10-24 19:16:36 +05:00
else:
2018-08-18 00:39:10 +05:00
return ACLManager.loadError()
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
websitesName = ACLManager.findAllSites(currentACL, userID)
2017-10-24 19:16:36 +05:00
return render(request, 'databases/listDataBases.html', {'websiteList':websitesName})
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse(str(msg))
except KeyError:
return redirect(loadLoginPage)
def changePassword(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
2017-10-24 19:16:36 +05:00
try:
if request.method == 'POST':
data = json.loads(request.body)
userName = data['dbUserName']
dbPassword = data['dbPassword']
2018-08-18 00:39:10 +05:00
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
elif currentACL['listDatabases'] == 1:
pass
else:
return ACLManager.loadErrorJson('changePasswordStatus', 0)
2018-06-30 15:29:56 +05:00
2017-10-24 19:16:36 +05:00
passFile = "/etc/cyberpanel/mysqlPassword"
f = open(passFile)
data = f.read()
password = data.split('\n', 1)[0]
passwordCMD = "use mysql;SET PASSWORD FOR '" + userName + "'@'localhost' = PASSWORD('" + dbPassword + "');FLUSH PRIVILEGES;"
2017-11-05 03:02:51 +05:00
command = 'sudo mysql -u root -p' + password + ' -e "' + passwordCMD + '"'
2017-10-24 19:16:36 +05:00
cmd = shlex.split(command)
res = subprocess.call(cmd)
if res == 1:
data_ret = {'changePasswordStatus': 0, 'error_message': "Please see CyberPanel main log file."}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
data_ret = {'changePasswordStatus': 1, 'error_message': "None"}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except BaseException,msg:
data_ret = {'changePasswordStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except KeyError,msg:
data_ret = {'changePasswordStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
2018-08-18 00:39:10 +05:00
return HttpResponse(json_data)