mirror of
				https://github.com/usmannasir/cyberpanel.git
				synced 2025-10-31 02:15:55 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			129 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import subprocess
 | |
| import time
 | |
| import socket
 | |
| import os
 | |
| import smtplib
 | |
| 
 | |
| class CyberCPLogFileWriter:
 | |
|     fileName = "/home/cyberpanel/error-logs.txt"
 | |
| 
 | |
|     @staticmethod
 | |
|     def AddFromHeader(sender, message):
 | |
|         try:
 | |
|             import re
 | |
| 
 | |
|             if not re.search('^From: ', message, re.MULTILINE):
 | |
|                 message = 'From: {}\n{}'.format(sender, message)
 | |
| 
 | |
|             return message
 | |
|         except BaseException as msg:
 | |
|             CyberCPLogFileWriter.writeToFile(str(msg) + ' [AddFromHeader]')
 | |
| 
 | |
|     @staticmethod
 | |
|     def SendEmail(sender, receivers, message, subject=None, type=None):
 | |
|         try:
 | |
|             smtpPath = '/home/cyberpanel/smtpDetails'
 | |
| 
 | |
|             if os.path.exists(smtpPath):
 | |
|                 import json
 | |
| 
 | |
|                 mailSettings = json.loads(open(smtpPath, 'r').read())
 | |
|                 smtpHost = mailSettings['smtpHost']
 | |
|                 smtpPort = mailSettings['smtpPort']
 | |
|                 smtpUserName = mailSettings['smtpUserName']
 | |
|                 smtpPassword = mailSettings['smtpPassword']
 | |
| 
 | |
|                 smtpServer = smtplib.SMTP(str(smtpHost), int(smtpPort))
 | |
|                 smtpServer.login(smtpUserName, smtpPassword)
 | |
| 
 | |
|                 ##
 | |
| 
 | |
|                 if subject != None:
 | |
|                     message = 'Subject: {}\n\n{}'.format(subject, message)
 | |
| 
 | |
|                 message = CyberCPLogFileWriter.AddFromHeader(sender, message)
 | |
|                 smtpServer.sendmail(smtpUserName, receivers, message)
 | |
|             else:
 | |
|                 smtpObj = smtplib.SMTP('localhost')
 | |
| 
 | |
|                 message = CyberCPLogFileWriter.AddFromHeader(sender, message)
 | |
|                 smtpObj.sendmail(sender, receivers, message)
 | |
|         except BaseException as msg:
 | |
|             CyberCPLogFileWriter.writeToFile(str(msg))
 | |
| 
 | |
|     @staticmethod
 | |
|     def writeToFile(message, email=None):
 | |
|         try:
 | |
|             print("[" + time.strftime("%m.%d.%Y_%H-%M-%S") + "] "+ message)
 | |
|             file = open(CyberCPLogFileWriter.fileName,'a')
 | |
|             file.writelines("[" + time.strftime(
 | |
|                     "%m.%d.%Y_%H-%M-%S") + "] "+ message + "\n")
 | |
|             file.close()
 | |
| 
 | |
|             ## Send Email
 | |
| 
 | |
|             emailPath = '/usr/local/CyberCP/emailDebug'
 | |
| 
 | |
|             try:
 | |
|                 if os.path.exists(emailPath):
 | |
|                     SUBJECT = "CyberPanel log reporting"
 | |
|                     adminEmailPath = '/home/cyberpanel/adminEmail'
 | |
|                     adminEmail = open(adminEmailPath, 'r').read().rstrip('\n')
 | |
|                     sender = 'root@%s' % (socket.gethostname())
 | |
|                     TO = [adminEmail]
 | |
|                     message = """\
 | |
| From: %s
 | |
| To: %s
 | |
| Subject: %s
 | |
| 
 | |
| %s
 | |
| """ % (
 | |
|                     sender, ", ".join(TO), SUBJECT, '[%s] %s. \n' % (time.strftime("%m.%d.%Y_%H-%M-%S"), message))
 | |
| 
 | |
|                     if email == None or email == 1:
 | |
|                         CyberCPLogFileWriter.SendEmail(sender, TO, message)
 | |
|             except BaseException as msg:
 | |
|                 file = open(CyberCPLogFileWriter.fileName, 'a')
 | |
|                 file.writelines("[" + time.strftime(
 | |
|                     "%m.%d.%Y_%H-%M-%S") + "] " + str(msg) + "\n")
 | |
|                 file.close()
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             return "Can not write to error file."
 | |
| 
 | |
|     @staticmethod
 | |
|     def writeforCLI(message, level, method):
 | |
|         try:
 | |
|             file = open(CyberCPLogFileWriter.fileName, 'a')
 | |
|             file.writelines("[" + time.strftime(
 | |
|                 "%m.%d.%Y_%H-%M-%S") + "] [" + level + ":" + method + "] " + message + "\n")
 | |
|             file.close()
 | |
|             file.close()
 | |
|         except BaseException:
 | |
|             return "Can not write to error file!"
 | |
| 
 | |
|     @staticmethod
 | |
|     def readLastNFiles(numberOfLines,fileName):
 | |
|         try:
 | |
| 
 | |
|             lastFewLines = str(subprocess.check_output(["tail", "-n",str(numberOfLines),fileName]).decode("utf-8"))
 | |
| 
 | |
|             return lastFewLines
 | |
| 
 | |
|         except subprocess.CalledProcessError as msg:
 | |
|             return "File was empty"
 | |
| 
 | |
|     @staticmethod
 | |
|     def statusWriter(tempStatusPath, mesg, append = None):
 | |
|         try:
 | |
|             if os.path.exists('/usr/local/CyberCP/debug'):
 | |
|                 print(mesg)
 | |
|             if append == None:
 | |
|                 statusFile = open(tempStatusPath, 'w')
 | |
|             else:
 | |
|                 statusFile = open(tempStatusPath, 'a')
 | |
|             statusFile.writelines(mesg + '\n')
 | |
|             statusFile.close()
 | |
|         except BaseException as msg:
 | |
|             CyberCPLogFileWriter.writeToFile(str(msg) + ' [statusWriter]')
 |