Files
CyberPanel/serverLogs/views.py

297 lines
9.6 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
from django.shortcuts import render,redirect
from loginSystem.views import loadLoginPage
from django.http import HttpResponse
import json
import plogical.CyberCPLogFileWriter as logging
from plogical.installUtilities import installUtilities
2017-12-16 11:59:47 +05:00
import subprocess
import shlex
from plogical.virtualHostUtilities import virtualHostUtilities
2018-08-18 00:39:10 +05:00
from plogical.acl import ACLManager
2019-03-26 16:19:03 +05:00
from plogical.processUtilities import ProcessUtilities
2019-10-15 22:59:22 +05:00
import os
2017-10-24 19:16:36 +05:00
# Create your views here.
def logsHome(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadError()
2017-10-24 19:16:36 +05:00
except KeyError:
return redirect(loadLoginPage)
return render(request,'serverLogs/index.html')
def accessLogs(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
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
else:
return ACLManager.loadError()
2017-10-24 19:16:36 +05:00
return render(request,'serverLogs/accessLogs.html')
2019-12-10 15:09:10 +05:00
except KeyError as msg:
2017-10-24 19:16:36 +05:00
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[accessLogs]")
return redirect(loadLoginPage)
def errorLogs(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
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
else:
return ACLManager.loadError()
2017-10-24 19:16:36 +05:00
return render(request,'serverLogs/errorLogs.html')
2019-12-10 15:09:10 +05:00
except KeyError as msg:
2017-10-24 19:16:36 +05:00
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[accessLogs]")
return redirect(loadLoginPage)
def ftplogs(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
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
else:
return ACLManager.loadError()
2017-10-24 19:16:36 +05:00
return render(request,'serverLogs/ftplogs.html')
2019-12-10 15:09:10 +05:00
except KeyError as msg:
2017-10-24 19:16:36 +05:00
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[accessLogs]")
return redirect(loadLoginPage)
def emailLogs(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
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
else:
return ACLManager.loadError()
2017-10-24 19:16:36 +05:00
return render(request,'serverLogs/emailLogs.html')
2019-12-10 15:09:10 +05:00
except KeyError as msg:
2017-10-24 19:16:36 +05:00
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[accessLogs]")
return redirect(loadLoginPage)
def modSecAuditLogs(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
2018-08-18 00:39:10 +05:00
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadError()
return render(request,'serverLogs/modSecAuditLog.html')
2019-12-10 15:09:10 +05:00
except KeyError as msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[accessLogs]")
return redirect(loadLoginPage)
2017-10-24 19:16:36 +05:00
def getLogsFromFile(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
2018-08-18 00:39:10 +05:00
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadErrorJson('logstatus', 0)
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
data = json.loads(request.body)
type = data['type']
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
if type == "access":
fileName = installUtilities.Server_root_path + "/logs/access.log"
elif type == "error":
fileName = installUtilities.Server_root_path + "/logs/error.log"
elif type == "email":
2020-05-24 11:10:01 +01:00
if ProcessUtilities.decideDistro() == ProcessUtilities.centos or ProcessUtilities.decideDistro() == ProcessUtilities.cent8:
2019-10-15 22:59:22 +05:00
fileName = "/var/log/maillog"
else:
fileName = "/var/log/mail.log"
2018-08-18 00:39:10 +05:00
elif type == "ftp":
2020-05-24 11:10:01 +01:00
if ProcessUtilities.decideDistro() == ProcessUtilities.centos or ProcessUtilities.decideDistro() == ProcessUtilities.cent8:
2019-10-15 22:59:22 +05:00
fileName = "/var/log/messages"
else:
fileName = "/var/log/syslog"
2018-08-18 00:39:10 +05:00
elif type == "modSec":
fileName = "/usr/local/lsws/logs/auditmodsec.log"
2018-11-21 14:50:27 +05:00
elif type == "cyberpanel":
fileName = "/home/cyberpanel/error-logs.txt"
2017-10-24 19:16:36 +05:00
2018-11-21 14:50:27 +05:00
try:
command = "sudo tail -50 " + fileName
2019-03-26 16:19:03 +05:00
fewLinesOfLogFile = ProcessUtilities.outputExecutioner(command)
2018-11-21 14:50:27 +05:00
status = {"status": 1, "logstatus": 1, "logsdata": fewLinesOfLogFile}
final_json = json.dumps(status)
return HttpResponse(final_json)
except:
status = {"status": 1, "logstatus": 1, "logsdata": 'Emtpy File.'}
final_json = json.dumps(status)
return HttpResponse(final_json)
2017-10-24 19:16:36 +05:00
2019-12-10 15:09:10 +05:00
except KeyError as msg:
2018-11-21 14:50:27 +05:00
status = {"status": 0, "logstatus":0,"error":"Could not fetch data from log file, please see CyberCP main log file through command line."}
2017-10-24 19:16:36 +05:00
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[getLogsFromFile]")
2018-11-21 14:50:27 +05:00
final_json = json.dumps(status)
return HttpResponse(final_json)
def clearLogFile(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadErrorJson('cleanStatus', 0)
try:
2018-08-18 00:39:10 +05:00
if request.method == 'POST':
2018-08-18 00:39:10 +05:00
data = json.loads(request.body)
2018-08-18 00:39:10 +05:00
fileName = data['fileName']
2019-12-10 23:04:24 +05:00
execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/serverLogs.py"
2018-08-18 00:39:10 +05:00
execPath = execPath + " cleanLogFile --fileName " + fileName
2019-03-26 16:19:03 +05:00
output = ProcessUtilities.outputExecutioner(execPath)
2018-08-18 00:39:10 +05:00
if output.find("1,None") > -1:
data_ret = {'cleanStatus': 1, 'error_message': "None"}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
else:
data_ret = {'cleanStatus': 0, 'error_message': output}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
2019-12-10 15:09:10 +05:00
except BaseException as msg:
data_ret = {'cleanStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
2019-12-10 15:09:10 +05:00
except KeyError as msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
data_ret = {'cleanStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
2019-10-15 22:59:22 +05:00
return HttpResponse(json_data)
def serverMail(request):
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadError()
smtpPath = '/home/cyberpanel/smtpDetails'
data = {}
if os.path.exists(smtpPath):
mailSettings = json.loads(open(smtpPath, 'r').read())
data['smtpHost'] = mailSettings['smtpHost']
data['smtpPort'] = mailSettings['smtpPort']
data['smtpUserName'] = mailSettings['smtpUserName']
data['smtpPassword'] = mailSettings['smtpPassword']
return render(request,'serverLogs/serverMail.html', data)
except KeyError as msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[accessLogs]")
return redirect(loadLoginPage)
def saveSMTPSettings(request):
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadErrorJson('logstatus', 0)
data = json.loads(request.body)
mailer = data['mailer']
smtpPath = '/home/cyberpanel/smtpDetails'
if mailer != 'SMTP':
if os.path.exists(smtpPath):
os.remove(smtpPath)
else:
import smtplib
smtpHost = data['smtpHost']
smtpPort = data['smtpPort']
smtpUserName = data['smtpUserName']
smtpPassword = data['smtpPassword']
try:
verifyLogin = smtplib.SMTP(str(smtpHost), int(smtpPort))
2020-09-15 05:03:50 +03:00
if int(smtpPort) == 587:
verifyLogin.starttls()
verifyLogin.login(str(smtpUserName), str(smtpPassword))
writeToFile = open(smtpPath, 'w')
writeToFile.write(json.dumps(data))
writeToFile.close()
command = 'chmod 600 %s' % (smtpPath)
ProcessUtilities.executioner(command)
except smtplib.SMTPHeloError:
data_ret = {"status": 0, 'error_message': 'The server did not reply properly to the HELO greeting.'}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except smtplib.SMTPAuthenticationError:
data_ret = {"status": 0, 'error_message': 'Username and password combination not accepted.'}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except smtplib.SMTPException:
data_ret = {"status": 0, 'error_message': 'No suitable authentication method was found.'}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
status = {"status": 1}
final_json = json.dumps(status)
return HttpResponse(final_json)
except BaseException as msg:
status = {"status": 0, 'error_message': str(msg)}
final_json = json.dumps(status)
return HttpResponse(final_json)