Files
CyberPanel/loginSystem/views.py

263 lines
10 KiB
Python
Raw Normal View History

2017-10-24 19:16:36 +05:00
# -*- coding: utf-8 -*-
2019-12-10 15:09:10 +05:00
2017-10-24 19:16:36 +05:00
2022-04-20 17:20:54 +05:00
from django.shortcuts import render, redirect
2019-12-11 10:40:35 +05:00
from .models import Administrator
2017-10-24 19:16:36 +05:00
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
2019-12-11 10:40:35 +05:00
from .models import ACL
2018-08-18 00:39:10 +05:00
from plogical.acl import ACLManager
from django.views.decorators.csrf import ensure_csrf_cookie
2019-07-24 22:37:37 +05:00
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
from django.conf import settings
from django.http import HttpResponse
from django.utils import translation
2017-10-24 19:16:36 +05:00
# Create your views here.
2022-04-24 22:41:34 +05:00
VERSION = '2.3'
2023-01-23 11:36:41 +05:00
BUILD = 3
2020-03-29 21:18:55 +05:00
2021-10-16 00:28:44 +06:00
2017-10-24 19:16:36 +05:00
def verifyLogin(request):
try:
userID = request.session['userID']
2021-10-16 00:28:44 +06:00
data = {'userID': userID, 'loginStatus': 1, 'error_message': "None"}
2017-10-24 19:16:36 +05:00
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"
2018-02-16 00:57:46 +05:00
elif data['languageSelection'] == "Greek":
user_Language = "gr"
elif data['languageSelection'] == "Russian":
user_Language = "ru"
elif data['languageSelection'] == "Turkish":
user_Language = "tr"
2018-05-14 22:26:25 +05:00
elif data['languageSelection'] == "Spanish":
user_Language = "es"
2018-07-30 04:40:39 +05:00
elif data['languageSelection'] == "French":
user_Language = "fr"
2018-08-28 01:19:34 +05:00
elif data['languageSelection'] == "Polish":
user_Language = "pl"
elif data['languageSelection'] == "Vietnamese":
user_Language = "vi"
2019-02-03 13:37:14 +05:00
elif data['languageSelection'] == "Italian":
user_Language = "it"
elif data['languageSelection'] == "German":
user_Language = "de"
2020-04-22 21:46:31 +05:00
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)
2017-10-24 19:16:36 +05:00
except:
user_Language = 'en'
translation.activate(user_Language)
response = HttpResponse()
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, user_Language)
2017-10-24 19:16:36 +05:00
admin = Administrator.objects.get(userName=username)
2020-01-21 20:35:03 +05:00
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
2017-10-24 19:16:36 +05:00
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']
2020-08-11 08:59:47 +05:00
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
2017-10-24 19:16:36 +05:00
request.session['userID'] = admin.pk
2019-07-24 22:37:37 +05:00
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')
2020-01-23 14:41:22 +05:00
request.session.set_expiry(43200)
2017-10-24 19:16:36 +05:00
data = {'userID': admin.pk, 'loginStatus': 1, 'error_message': "None"}
json_data = json.dumps(data)
response.write(json_data)
return response
2017-10-24 19:16:36 +05:00
else:
data = {'userID': 0, 'loginStatus': 0, 'error_message': "wrong-password"}
json_data = json.dumps(data)
response.write(json_data)
return response
2017-10-24 19:16:36 +05:00
2019-12-10 15:09:10 +05:00
except BaseException as msg:
2017-10-24 19:16:36 +05:00
data = {'userID': 0, 'loginStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data)
return HttpResponse(json_data)
@ensure_csrf_cookie
2017-10-24 19:16:36 +05:00
def loadLoginPage(request):
try:
userID = request.session['userID']
2018-08-18 00:39:10 +05:00
currentACL = ACLManager.loadedACL(userID)
2017-10-24 19:16:36 +05:00
cpuRamDisk = SystemInformation.cpuRamDisk()
2018-08-18 00:39:10 +05:00
if currentACL['admin'] == 1:
admin = 1
else:
admin = 0
finaData = {"admin": admin, 'ramUsage': cpuRamDisk['ramUsage'], 'cpuUsage': cpuRamDisk['cpuUsage'],
2017-10-24 19:16:36 +05:00
'diskUsage': cpuRamDisk['diskUsage']}
2022-04-20 17:20:54 +05:00
from baseTemplate.views import renderBase
return redirect(renderBase)
#return render(request, 'baseTemplate/homePage.html', finaData)
2017-10-24 19:16:36 +05:00
except KeyError:
numberOfAdministrator = Administrator.objects.count()
password = hashPassword.hash_password('1234567')
2019-03-30 14:21:52 +05:00
noOfRules = FirewallRules.objects.count()
2017-10-24 19:16:36 +05:00
2019-03-30 14:21:52 +05:00
if noOfRules == 0:
2017-10-24 19:16:36 +05:00
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()
2019-03-26 16:19:03 +05:00
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()
2017-12-09 22:30:10 +05:00
newFWRule = FirewallRules(name="ftptls", proto="tcp", port="40110-40210")
newFWRule.save()
2020-02-01 17:52:33 +05:00
newFWRule = FirewallRules(name="POP3S", proto="tcp", port="995")
newFWRule.save()
2019-07-24 22:37:37 +05:00
newFWRule = FirewallRules(name="quic", proto="udp", port="443")
newFWRule.save()
2019-03-30 14:21:52 +05:00
if numberOfAdministrator == 0:
ACLManager.createDefaultACLs()
acl = ACL.objects.get(name='admin')
token = hashPassword.generateToken('admin', '1234567')
email = 'example@example.org'
2021-10-16 00:28:44 +06:00
admin = Administrator(userName="admin", password=password, type=1, email=email,
firstName="Cyber", lastName="Panel", acl=acl, token=token)
2019-03-30 14:21:52 +05:00
admin.save()
2020-03-29 21:18:55 +05:00
vers = version(currentVersion=VERSION, build=BUILD)
2019-03-30 14:21:52 +05:00
vers.save()
2021-10-16 00:28:44 +06:00
package = Package(admin=admin, packageName="Default", diskSpace=1000, bandwidth=1000, ftpAccounts=1000,
dataBases=1000, emailAccounts=1000, allowedDomains=20)
2019-03-30 14:21:52 +05:00
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})
2017-10-24 19:16:36 +05:00
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})
2017-10-24 19:16:36 +05:00
2021-10-16 00:28:44 +06:00
@ensure_csrf_cookie
2017-10-24 19:16:36 +05:00
def logout(request):
try:
del request.session['userID']
return render(request, 'loginSystem/login.html', {})
except:
2021-10-16 00:28:44 +06:00
return render(request, 'loginSystem/login.html', {})