mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-07 22:06:05 +01:00
263 lines
10 KiB
Python
263 lines
10 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
|
|
from django.shortcuts import render, redirect
|
|
from .models import Administrator
|
|
from plogical import hashPassword
|
|
import json
|
|
from packages.models import Package
|
|
from firewall.models import FirewallRules
|
|
from baseTemplate.models import version
|
|
from plogical.getSystemInformation import SystemInformation
|
|
from .models import ACL
|
|
from plogical.acl import ACLManager
|
|
from django.views.decorators.csrf import ensure_csrf_cookie
|
|
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
|
|
from django.conf import settings
|
|
from django.http import HttpResponse
|
|
from django.utils import translation
|
|
# Create your views here.
|
|
|
|
VERSION = '2.3'
|
|
BUILD = 5
|
|
|
|
|
|
def verifyLogin(request):
|
|
try:
|
|
userID = request.session['userID']
|
|
data = {'userID': userID, 'loginStatus': 1, 'error_message': "None"}
|
|
json_data = json.dumps(data)
|
|
return HttpResponse(json_data)
|
|
except KeyError:
|
|
username = "not logged in"
|
|
password = ""
|
|
|
|
try:
|
|
if request.method == "POST":
|
|
data = json.loads(request.body)
|
|
|
|
username = data['username']
|
|
password = data['password']
|
|
|
|
try:
|
|
if data['languageSelection'] == "English":
|
|
user_Language = "en"
|
|
elif data['languageSelection'] == "Chinese":
|
|
user_Language = "cn"
|
|
elif data['languageSelection'] == "Bulgarian":
|
|
user_Language = "br"
|
|
elif data['languageSelection'] == "Portuguese":
|
|
user_Language = "pt"
|
|
elif data['languageSelection'] == "Japanese":
|
|
user_Language = "ja"
|
|
elif data['languageSelection'] == "Bosnian":
|
|
user_Language = "bs"
|
|
elif data['languageSelection'] == "Greek":
|
|
user_Language = "gr"
|
|
elif data['languageSelection'] == "Russian":
|
|
user_Language = "ru"
|
|
elif data['languageSelection'] == "Turkish":
|
|
user_Language = "tr"
|
|
elif data['languageSelection'] == "Spanish":
|
|
user_Language = "es"
|
|
elif data['languageSelection'] == "French":
|
|
user_Language = "fr"
|
|
elif data['languageSelection'] == "Polish":
|
|
user_Language = "pl"
|
|
elif data['languageSelection'] == "Vietnamese":
|
|
user_Language = "vi"
|
|
elif data['languageSelection'] == "Italian":
|
|
user_Language = "it"
|
|
elif data['languageSelection'] == "German":
|
|
user_Language = "de"
|
|
elif data['languageSelection'] == "Indonesian":
|
|
user_Language = "id"
|
|
elif data['languageSelection'] == "Bangla":
|
|
user_Language = "bn"
|
|
|
|
translation.activate(user_Language)
|
|
response = HttpResponse()
|
|
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, user_Language)
|
|
except:
|
|
user_Language = 'en'
|
|
translation.activate(user_Language)
|
|
response = HttpResponse()
|
|
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, user_Language)
|
|
|
|
admin = Administrator.objects.get(userName=username)
|
|
|
|
if admin.state == 'SUSPENDED':
|
|
data = {'userID': 0, 'loginStatus': 0, 'error_message': 'Account currently suspended.'}
|
|
json_data = json.dumps(data)
|
|
return HttpResponse(json_data)
|
|
|
|
if admin.twoFA:
|
|
try:
|
|
twoinit = request.session['twofa']
|
|
except:
|
|
request.session['twofa'] = 0
|
|
data = {'userID': admin.pk, 'loginStatus': 2, 'error_message': "None"}
|
|
json_data = json.dumps(data)
|
|
response.write(json_data)
|
|
return response
|
|
|
|
if hashPassword.check_password(admin.password, password):
|
|
if admin.twoFA:
|
|
if request.session['twofa'] == 0:
|
|
import pyotp
|
|
totp = pyotp.TOTP(admin.secretKey)
|
|
del request.session['twofa']
|
|
if totp.now() != data['twofa']:
|
|
request.session['twofa'] = 0
|
|
data = {'userID': 0, 'loginStatus': 0, 'error_message': "Invalid verification code."}
|
|
json_data = json.dumps(data)
|
|
response.write(json_data)
|
|
return response
|
|
|
|
request.session['userID'] = admin.pk
|
|
|
|
ipAddr = request.META.get('REMOTE_ADDR')
|
|
|
|
if ipAddr.find(':') > -1:
|
|
ipAddr = ipAddr.split(':')[:3]
|
|
request.session['ipAddr'] = ''.join(ipAddr)
|
|
else:
|
|
request.session['ipAddr'] = request.META.get('REMOTE_ADDR')
|
|
|
|
request.session.set_expiry(43200)
|
|
data = {'userID': admin.pk, 'loginStatus': 1, 'error_message': "None"}
|
|
json_data = json.dumps(data)
|
|
response.write(json_data)
|
|
return response
|
|
|
|
else:
|
|
data = {'userID': 0, 'loginStatus': 0, 'error_message': "wrong-password"}
|
|
json_data = json.dumps(data)
|
|
response.write(json_data)
|
|
return response
|
|
|
|
except BaseException as msg:
|
|
data = {'userID': 0, 'loginStatus': 0, 'error_message': str(msg)}
|
|
json_data = json.dumps(data)
|
|
return HttpResponse(json_data)
|
|
|
|
@ensure_csrf_cookie
|
|
def loadLoginPage(request):
|
|
try:
|
|
userID = request.session['userID']
|
|
currentACL = ACLManager.loadedACL(userID)
|
|
|
|
cpuRamDisk = SystemInformation.cpuRamDisk()
|
|
|
|
if currentACL['admin'] == 1:
|
|
admin = 1
|
|
else:
|
|
admin = 0
|
|
|
|
finaData = {"admin": admin, 'ramUsage': cpuRamDisk['ramUsage'], 'cpuUsage': cpuRamDisk['cpuUsage'],
|
|
'diskUsage': cpuRamDisk['diskUsage']}
|
|
|
|
from baseTemplate.views import renderBase
|
|
return redirect(renderBase)
|
|
|
|
#return render(request, 'baseTemplate/homePage.html', finaData)
|
|
except KeyError:
|
|
|
|
numberOfAdministrator = Administrator.objects.count()
|
|
password = hashPassword.hash_password('1234567')
|
|
noOfRules = FirewallRules.objects.count()
|
|
|
|
if noOfRules == 0:
|
|
newFWRule = FirewallRules(name="panel", proto="tcp", port="8090")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="http", proto="tcp", port="80")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="https", proto="tcp", port="443")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="ftp", proto="tcp", port="21")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="smtp", proto="tcp", port="25")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="smtps", proto="tcp", port="587")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="ssmtp", proto="tcp", port="465")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="pop3", proto="tcp", port="110")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="imap", proto="tcp", port="143")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="simap", proto="tcp", port="993")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="dns", proto="udp", port="53")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="dnstcp", proto="tcp", port="53")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="ftptls", proto="tcp", port="40110-40210")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="POP3S", proto="tcp", port="995")
|
|
newFWRule.save()
|
|
|
|
newFWRule = FirewallRules(name="quic", proto="udp", port="443")
|
|
newFWRule.save()
|
|
|
|
if numberOfAdministrator == 0:
|
|
ACLManager.createDefaultACLs()
|
|
acl = ACL.objects.get(name='admin')
|
|
|
|
token = hashPassword.generateToken('admin', '1234567')
|
|
|
|
email = 'example@example.org'
|
|
admin = Administrator(userName="admin", password=password, type=1, email=email,
|
|
firstName="Cyber", lastName="Panel", acl=acl, token=token)
|
|
admin.save()
|
|
|
|
vers = version(currentVersion=VERSION, build=BUILD)
|
|
vers.save()
|
|
|
|
package = Package(admin=admin, packageName="Default", diskSpace=1000, bandwidth=1000, ftpAccounts=1000,
|
|
dataBases=1000, emailAccounts=1000, allowedDomains=20)
|
|
package.save()
|
|
|
|
### Load Custom CSS
|
|
try:
|
|
from baseTemplate.models import CyberPanelCosmetic
|
|
cosmetic = CyberPanelCosmetic.objects.get(pk=1)
|
|
except:
|
|
from baseTemplate.models import CyberPanelCosmetic
|
|
cosmetic = CyberPanelCosmetic()
|
|
cosmetic.save()
|
|
|
|
return render(request, 'loginSystem/login.html', {'cosmetic': cosmetic})
|
|
else:
|
|
### Load Custom CSS
|
|
try:
|
|
from baseTemplate.models import CyberPanelCosmetic
|
|
cosmetic = CyberPanelCosmetic.objects.get(pk=1)
|
|
except:
|
|
from baseTemplate.models import CyberPanelCosmetic
|
|
cosmetic = CyberPanelCosmetic()
|
|
cosmetic.save()
|
|
return render(request, 'loginSystem/login.html', {'cosmetic': cosmetic})
|
|
|
|
|
|
@ensure_csrf_cookie
|
|
def logout(request):
|
|
try:
|
|
del request.session['userID']
|
|
return render(request, 'loginSystem/login.html', {})
|
|
except:
|
|
return render(request, 'loginSystem/login.html', {})
|