mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2026-02-28 09:20:43 +01:00
Initial Commit
This commit is contained in:
0
api/__init__.py
Normal file
0
api/__init__.py
Normal file
BIN
api/__init__.pyc
Normal file
BIN
api/__init__.pyc
Normal file
Binary file not shown.
6
api/admin.py
Normal file
6
api/admin.py
Normal file
@@ -0,0 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
BIN
api/admin.pyc
Normal file
BIN
api/admin.pyc
Normal file
Binary file not shown.
8
api/apps.py
Normal file
8
api/apps.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class ApiConfig(AppConfig):
|
||||
name = 'api'
|
||||
0
api/migrations/__init__.py
Normal file
0
api/migrations/__init__.py
Normal file
6
api/models.py
Normal file
6
api/models.py
Normal file
@@ -0,0 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
BIN
api/models.pyc
Normal file
BIN
api/models.pyc
Normal file
Binary file not shown.
6
api/tests.py
Normal file
6
api/tests.py
Normal file
@@ -0,0 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
18
api/urls.py
Normal file
18
api/urls.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from django.conf.urls import url
|
||||
import views
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^createWebsite', views.createWebsite, name='createWebsiteAPI'),
|
||||
url(r'^deleteWebsite', views.deleteWebsite, name='deleteWebsiteAPI'),
|
||||
url(r'^submitWebsiteStatus', views.submitWebsiteStatus, name='submitWebsiteStatusAPI'),
|
||||
|
||||
url(r'^verifyConn', views.verifyConn, name='verifyConnAPI'),
|
||||
|
||||
url(r'^loginAPI', views.loginAPI, name='loginAPI'),
|
||||
|
||||
url(r'^changeUserPassAPI', views.changeUserPassAPI, name='changeUserPassAPI'),
|
||||
url(r'^changePackageAPI', views.changePackageAPI, name='changePackageAPI'),
|
||||
url(r'^fetchSSHkey', views.fetchSSHkey, name='fetchSSHkey'),
|
||||
url(r'^remoteTransfer', views.remoteTransfer, name='remoteTransfer'),
|
||||
url(r'^fetchAccountsFromRemoteServer', views.fetchAccountsFromRemoteServer, name='fetchAccountsFromRemoteServer'),
|
||||
]
|
||||
427
api/views.py
Normal file
427
api/views.py
Normal file
@@ -0,0 +1,427 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
from websiteFunctions.models import Websites
|
||||
import json
|
||||
from django.shortcuts import render,redirect
|
||||
from django.http import HttpResponse
|
||||
from loginSystem.models import Administrator
|
||||
from plogical.virtualHostUtilities import virtualHostUtilities
|
||||
from plogical import hashPassword
|
||||
from plogical.installUtilities import installUtilities
|
||||
from packages.models import Package
|
||||
import shutil
|
||||
from plogical.mysqlUtilities import mysqlUtilities
|
||||
from databases.models import Databases
|
||||
from baseTemplate.views import renderBase
|
||||
from random import randint
|
||||
import plogical.remoteBackup as rBackup
|
||||
from websiteFunctions.models import Websites
|
||||
# Create your views here.
|
||||
|
||||
|
||||
def verifyConn(request):
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
data = json.loads(request.body)
|
||||
adminUser = data['adminUser']
|
||||
adminPass = data['adminPass']
|
||||
|
||||
|
||||
admin = Administrator.objects.get(userName=adminUser)
|
||||
|
||||
if hashPassword.check_password(admin.password, adminPass):
|
||||
data_ret = {"verifyConn": 1}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
else:
|
||||
data_ret = {"verifyConn": 0}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except BaseException, msg:
|
||||
data_ret = {'verifyConn': 0, 'error_message': str(msg)}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
def createWebsite(request):
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
data = json.loads(request.body)
|
||||
|
||||
adminUser = data['adminUser']
|
||||
adminPass = data['adminPass']
|
||||
domain = data['domainName']
|
||||
adminEmail = data['ownerEmail']
|
||||
packageName = data['packageName']
|
||||
websiteOwner = data['websiteOwner']
|
||||
ownerPassword = data['ownerPassword']
|
||||
|
||||
|
||||
try:
|
||||
website = Websites.objects.get(domain=domain)
|
||||
data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0,
|
||||
'error_message': "Website Already Exists"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
except:
|
||||
pass
|
||||
|
||||
phpSelection = "PHP 7.0"
|
||||
|
||||
admin = Administrator.objects.get(userName=adminUser)
|
||||
|
||||
if hashPassword.check_password(admin.password, adminPass):
|
||||
pass
|
||||
else:
|
||||
data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0,
|
||||
'error_message': "Could not authorize access to API"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
if adminEmail is None:
|
||||
adminEmail = "usman@cyberpersons.com"
|
||||
|
||||
try:
|
||||
websiteOwn = Administrator(userName=websiteOwner, password=hashPassword.hash_password(ownerPassword),
|
||||
email=adminEmail, type=3, owner=admin.pk,
|
||||
initWebsitesLimit=1)
|
||||
websiteOwn.save()
|
||||
except BaseException,msg:
|
||||
pass
|
||||
|
||||
|
||||
if virtualHostUtilities.checkIfVirtualHostExists(domain) == 1:
|
||||
data_ret = {"existsStatus": 1, 'createWebSiteStatus': 0,
|
||||
'error_message': "This domain already exists in Litespeed Configurations, first delete the domain to perform sweap."}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
if virtualHostUtilities.createDirectoryForVirtualHost(domain, adminEmail, phpSelection) != 1:
|
||||
numberOfWebsites = Websites.objects.count()
|
||||
virtualHostUtilities.deleteVirtualHostConfigurations(domain, numberOfWebsites)
|
||||
data_ret = {"existsStatus": 1, 'createWebSiteStatus': 0,
|
||||
'error_message': "Can not create configurations, see CyberCP main log file."}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
if virtualHostUtilities.createConfigInMainVirtualHostFile(domain) != 1:
|
||||
numberOfWebsites = Websites.objects.count()
|
||||
virtualHostUtilities.deleteVirtualHostConfigurations(domain, numberOfWebsites)
|
||||
data_ret = {"existsStatus": 1, 'createWebSiteStatus': 0,
|
||||
'error_message': "Can not create configurations, see CyberCP main log file."}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
installUtilities.reStartLiteSpeed()
|
||||
|
||||
selectedPackage = Package.objects.get(packageName=packageName)
|
||||
|
||||
websiteOwn = Administrator.objects.get(userName=websiteOwner)
|
||||
|
||||
website = Websites(admin=websiteOwn, package=selectedPackage, domain=domain, adminEmail=adminEmail,
|
||||
phpSelection=phpSelection, ssl=0)
|
||||
|
||||
website.save()
|
||||
|
||||
shutil.copy("/usr/local/CyberCP/index.html", "/home/" + domain + "/public_html/index.html")
|
||||
|
||||
data_ret = {'createWebSiteStatus': 1, 'error_message': "None", "existsStatus": 0}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except BaseException, msg:
|
||||
numberOfWebsites = Websites.objects.count()
|
||||
virtualHostUtilities.deleteVirtualHostConfigurations(domain, numberOfWebsites)
|
||||
data_ret = {'createWebSiteStatus': 0, 'error_message': str(msg), "existsStatus": 0}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
def changeUserPassAPI(request):
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
data = json.loads(request.body)
|
||||
|
||||
|
||||
websiteOwner = data['websiteOwner']
|
||||
ownerPassword = data['ownerPassword']
|
||||
adminUser = data['adminUser']
|
||||
adminPass = data['adminPass']
|
||||
|
||||
admin = Administrator.objects.get(userName=adminUser)
|
||||
|
||||
if hashPassword.check_password(admin.password, adminPass):
|
||||
pass
|
||||
else:
|
||||
data_ret = {"changeStatus": 0,
|
||||
'error_message': "Could not authorize access to API"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
websiteOwn = Administrator.objects.get(userName=websiteOwner)
|
||||
websiteOwn.password = hashPassword.hash_password(ownerPassword)
|
||||
websiteOwn.save()
|
||||
|
||||
|
||||
|
||||
data_ret = {'changeStatus': 1, 'error_message': "None"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except BaseException, msg:
|
||||
data_ret = {'changeStatus': 0, 'error_message': str(msg)}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
def changePackageAPI(request):
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
data = json.loads(request.body)
|
||||
|
||||
websiteName = data['websiteName']
|
||||
packageName = data['packageName']
|
||||
adminUser = data['adminUser']
|
||||
adminPass = data['adminPass']
|
||||
|
||||
admin = Administrator.objects.get(userName=adminUser)
|
||||
|
||||
if hashPassword.check_password(admin.password, adminPass):
|
||||
pass
|
||||
else:
|
||||
data_ret = {"changePackage": 0,
|
||||
'error_message': "Could not authorize access to API"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
website = Websites.objects.get(domain=websiteName)
|
||||
pack = Package.objects.get(packageName=packageName)
|
||||
|
||||
website.package = pack
|
||||
website.save()
|
||||
|
||||
|
||||
|
||||
data_ret = {'changePackage': 1, 'error_message': "None"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except BaseException, msg:
|
||||
data_ret = {'changePackage': 0, 'error_message': str(msg)}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
def deleteWebsite(request):
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
data = json.loads(request.body)
|
||||
websiteName = data['domainName']
|
||||
adminUser = data['adminUser']
|
||||
adminPass = data['adminPass']
|
||||
|
||||
admin = Administrator.objects.get(userName=adminUser)
|
||||
|
||||
if hashPassword.check_password(admin.password, adminPass):
|
||||
pass
|
||||
else:
|
||||
data_ret = {"websiteDeleteStatus": 0,
|
||||
'error_message': "Could not authorize access to API"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
numberOfWebsites = Websites.objects.count()
|
||||
|
||||
virtualHostUtilities.deleteVirtualHostConfigurations(websiteName, numberOfWebsites)
|
||||
|
||||
delWebsite = Websites.objects.get(domain=websiteName)
|
||||
databases = Databases.objects.filter(website=delWebsite)
|
||||
|
||||
for items in databases:
|
||||
mysqlUtilities.deleteDatabase(items.dbName, items.dbUser)
|
||||
|
||||
delWebsite.delete()
|
||||
|
||||
installUtilities.reStartLiteSpeed()
|
||||
|
||||
data_ret = {'websiteDeleteStatus': 1, 'error_message': "None"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except BaseException, msg:
|
||||
data_ret = {'websiteDeleteStatus': 0, 'error_message': str(msg)}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def submitWebsiteStatus(request):
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
data = json.loads(request.body)
|
||||
websiteName = data['websiteName']
|
||||
state = data['state']
|
||||
adminUser = data['adminUser']
|
||||
adminPass = data['adminPass']
|
||||
|
||||
admin = Administrator.objects.get(userName=adminUser)
|
||||
|
||||
if hashPassword.check_password(admin.password, adminPass):
|
||||
pass
|
||||
else:
|
||||
data_ret = {"websiteStatus": 0,
|
||||
'error_message': "Could not authorize access to API"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
website = Websites.objects.get(domain=websiteName)
|
||||
|
||||
if state == "Suspend":
|
||||
virtualHostUtilities.suspendVirtualHost(websiteName)
|
||||
installUtilities.reStartLiteSpeed()
|
||||
website.state = 0
|
||||
else:
|
||||
virtualHostUtilities.UnsuspendVirtualHost(websiteName)
|
||||
installUtilities.reStartLiteSpeed()
|
||||
website.state = 1
|
||||
|
||||
website.save()
|
||||
|
||||
data_ret = {'websiteStatus': 1, 'error_message': "None"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except BaseException, msg:
|
||||
data_ret = {'websiteStatus': 0, 'error_message': str(msg)}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
def loginAPI(request):
|
||||
try:
|
||||
if request.method == "POST":
|
||||
|
||||
username = request.POST['username']
|
||||
password = request.POST['password']
|
||||
|
||||
admin = Administrator.objects.get(userName=username)
|
||||
|
||||
if hashPassword.check_password(admin.password, password):
|
||||
request.session['userID'] = admin.pk
|
||||
return redirect(renderBase)
|
||||
else:
|
||||
return HttpResponse("Invalid Credentials.")
|
||||
|
||||
|
||||
except BaseException, msg:
|
||||
data = {'userID': 0, 'loginStatus': 0, 'error_message': str(msg)}
|
||||
json_data = json.dumps(data)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
|
||||
def fetchSSHkey(request):
|
||||
try:
|
||||
if request.method == "POST":
|
||||
data = json.loads(request.body)
|
||||
username = data['username']
|
||||
password = data['password']
|
||||
|
||||
admin = Administrator.objects.get(userName=username)
|
||||
|
||||
if hashPassword.check_password(admin.password, password):
|
||||
pubKey = "/root/.ssh/cyberpanel.pub"
|
||||
|
||||
f = open(pubKey)
|
||||
data = f.read()
|
||||
data_ret = {'pubKeyStatus': 1, 'error_message': "None", "pubKey":data}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
else:
|
||||
data_ret = {'pubKeyStatus': 0, 'error_message': "Invalid Credentials"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
except BaseException, msg:
|
||||
data = {'pubKeyStatus': 0,'error_message': str(msg)}
|
||||
json_data = json.dumps(data)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
def remoteTransfer(request):
|
||||
try:
|
||||
if request.method == "POST":
|
||||
data = json.loads(request.body)
|
||||
username = data['username']
|
||||
password = data['password']
|
||||
ipAddress = data['ipAddress']
|
||||
|
||||
admin = Administrator.objects.get(userName=username)
|
||||
if hashPassword.check_password(admin.password, password):
|
||||
dir = str(randint(1000, 9999))
|
||||
transferRequest = rBackup.remoteBackup.remoteTransfer(ipAddress, dir)
|
||||
|
||||
if transferRequest[0] == 1:
|
||||
pass
|
||||
else:
|
||||
data_ret = {'transferStatus': 0, 'error_message': transferRequest[1]}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
return HttpResponse(json.dumps({"transferStatus": 1, "dir":dir}))
|
||||
|
||||
|
||||
else:
|
||||
data_ret = {'transferStatus': 0, 'error_message': "Invalid Credentials"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except BaseException, msg:
|
||||
data = {'transferStatus': 0,'error_message': str(msg)}
|
||||
json_data = json.dumps(data)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def fetchAccountsFromRemoteServer(request):
|
||||
try:
|
||||
if request.method == "POST":
|
||||
data = json.loads(request.body)
|
||||
username = data['username']
|
||||
password = data['password']
|
||||
|
||||
admin = Administrator.objects.get(userName=username)
|
||||
if hashPassword.check_password(admin.password, password):
|
||||
|
||||
records = Websites.objects.all()
|
||||
|
||||
json_data = "["
|
||||
checker = 0
|
||||
|
||||
for items in records:
|
||||
dic = {
|
||||
'website': items.domain,
|
||||
'php': items.phpSelection,
|
||||
'package': items.package.packageName,
|
||||
'email': items.adminEmail,
|
||||
}
|
||||
|
||||
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)
|
||||
else:
|
||||
data_ret = {'fetchStatus': 0, 'error_message': "Invalid Credentials"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except BaseException, msg:
|
||||
data = {'transferStatus': 0,'error_message': str(msg)}
|
||||
json_data = json.dumps(data)
|
||||
return HttpResponse(json_data)
|
||||
Reference in New Issue
Block a user