mirror of
				https://github.com/usmannasir/cyberpanel.git
				synced 2025-10-31 10:26:01 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			1603 lines
		
	
	
		
			56 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			1603 lines
		
	
	
		
			56 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/local/CyberCP/bin/python
 | |
| import os, sys
 | |
| 
 | |
| sys.path.append('/usr/local/CyberCP')
 | |
| import django
 | |
| 
 | |
| os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
 | |
| django.setup()
 | |
| from inspect import stack
 | |
| from cli.cliLogger import cliLogger as logger
 | |
| import json
 | |
| from plogical.virtualHostUtilities import virtualHostUtilities
 | |
| import re
 | |
| from websiteFunctions.models import Websites, ChildDomains
 | |
| from plogical.dnsUtilities import DNS
 | |
| import time
 | |
| import plogical.backupUtilities as backupUtilities
 | |
| import requests
 | |
| from loginSystem.models import Administrator
 | |
| from packages.models import Package
 | |
| from plogical.mysqlUtilities import mysqlUtilities
 | |
| from cli.cliParser import cliParser
 | |
| from plogical.vhost import vhost
 | |
| from plogical.mailUtilities import mailUtilities
 | |
| from plogical.ftpUtilities import FTPUtilities
 | |
| from plogical.sslUtilities import sslUtilities
 | |
| from plogical.processUtilities import ProcessUtilities
 | |
| from plogical.backupSchedule import backupSchedule
 | |
| 
 | |
| # All that we see or seem is but a dream within a dream.
 | |
| 
 | |
| def get_cyberpanel_version():
 | |
|     with open('/usr/local/CyberCP/version.txt') as version:
 | |
|         version_file = version.read()
 | |
|         version = json.loads(str(version_file))
 | |
|     return f"{version['version']}.{version['build']}"
 | |
| 
 | |
| 
 | |
| class cyberPanel:
 | |
| 
 | |
|     def printStatus(self, operationStatus, errorMessage):
 | |
|         data = json.dumps({'success': operationStatus,
 | |
|                            'errorMessage': errorMessage
 | |
|                            })
 | |
|         print(data)
 | |
| 
 | |
|     ## Website Functions
 | |
| 
 | |
|     def createWebsite(self, package, owner, domainName, email, php, ssl, dkim, openBasedir):
 | |
|         try:
 | |
|             from random import randint
 | |
|             externalApp = "".join(re.findall("[a-zA-Z]+", domainName))[:5] + str(randint(1000, 9999))
 | |
|             phpSelection = 'PHP ' + php
 | |
| 
 | |
|             try:
 | |
|                 counter = 0
 | |
|                 _externalApp = externalApp
 | |
|                 while True:
 | |
|                     tWeb = Websites.objects.get(externalApp=externalApp)
 | |
|                     externalApp = '%s%s' % (_externalApp, str(counter))
 | |
|                     counter = counter + 1
 | |
|             except BaseException as msg:
 | |
|                 logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|                 time.sleep(2)
 | |
| 
 | |
|             result = virtualHostUtilities.createVirtualHost(domainName, email, phpSelection, externalApp, ssl, dkim,
 | |
|                                                             openBasedir, owner, package, 0)
 | |
| 
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(0, result[1])
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def createDomain(self, masterDomain, domainName, owner, php, ssl, dkim, openBasedir, path):
 | |
|         try:
 | |
| 
 | |
|             complete_path = '/home/' + masterDomain + '/' + path
 | |
|             phpSelection = 'PHP ' + php
 | |
| 
 | |
|             result = virtualHostUtilities.createDomain(masterDomain, domainName, phpSelection, complete_path, ssl, dkim, openBasedir, owner, 0)
 | |
| 
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(0, result[1])
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def deleteWebsite(self, domainName):
 | |
|         try:
 | |
|             vhost.deleteVirtualHostConfigurations(domainName)
 | |
|             self.printStatus(1, 'None')
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     def deleteChild(self, childDomain):
 | |
|         try:
 | |
| 
 | |
|             result = virtualHostUtilities.deleteDomain(childDomain)
 | |
| 
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(0, result[1])
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     def listWebsitesJson(self):
 | |
|         try:
 | |
| 
 | |
|             websites = Websites.objects.all()
 | |
|             ipFile = "/etc/cyberpanel/machineIP"
 | |
|             with open(ipFile, 'r') as f:
 | |
|                 ipData = f.read()
 | |
|             ipAddress = ipData.split('\n', 1)[0]
 | |
| 
 | |
|             json_data = []
 | |
| 
 | |
|             for items in websites:
 | |
|                 if items.state == 0:
 | |
|                     state = "Suspended"
 | |
|                 else:
 | |
|                     state = "Active"
 | |
|                 dic = {'domain': items.domain, 'adminEmail': items.adminEmail, 'ipAddress': ipAddress,
 | |
|                        'admin': items.admin.userName, 'package': items.package.packageName, 'state': state}
 | |
|                 json_data.append(dic)
 | |
| 
 | |
|             final_json = json.dumps(json_data)
 | |
|             print(final_json)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     def listWebsitesPretty(self):
 | |
|         try:
 | |
|             from prettytable import PrettyTable
 | |
| 
 | |
|             websites = Websites.objects.all()
 | |
|             ipFile = "/etc/cyberpanel/machineIP"
 | |
|             f = open(ipFile)
 | |
|             ipData = f.read()
 | |
|             ipAddress = ipData.split('\n', 1)[0]
 | |
| 
 | |
|             table = PrettyTable(['ID', 'Domain', 'IP Address', 'Package', 'Owner', 'State', 'Email'])
 | |
| 
 | |
|             for items in websites:
 | |
|                 if items.state == 0:
 | |
|                     state = "Suspended"
 | |
|                 else:
 | |
|                     state = "Active"
 | |
|                 table.add_row(
 | |
|                     [items.id, items.domain, ipAddress, items.package.packageName, items.admin.userName, state,
 | |
|                      items.adminEmail])
 | |
|             print(table)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     def changePHP(self, virtualHostName, phpVersion):
 | |
|         try:
 | |
| 
 | |
|             phpVersion = 'PHP ' + phpVersion
 | |
| 
 | |
|             confPath = virtualHostUtilities.Server_root + "/conf/vhosts/" + virtualHostName
 | |
|             completePathToConfigFile = confPath + "/vhost.conf"
 | |
| 
 | |
|             result = vhost.changePHP(completePathToConfigFile, phpVersion)
 | |
| 
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(0, result[1])
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def changePackage(self, virtualHostName, packageName):
 | |
|         try:
 | |
|             if Websites.objects.filter(domain=virtualHostName).count() == 0:
 | |
|                 self.printStatus(0, 'This website does not exists.')
 | |
|             if Package.objects.filter(packageName=packageName).count() == 0:
 | |
|                 self.printStatus(0, 'This package does not exists.')
 | |
| 
 | |
|             website = Websites.objects.get(domain=virtualHostName)
 | |
|             package = Package.objects.get(packageName=packageName)
 | |
| 
 | |
|             website.package = package
 | |
|             website.save()
 | |
| 
 | |
|             self.printStatus(1, 'None')
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
| 
 | |
|     ## DNS Functions
 | |
| 
 | |
|     def listDNSJson(self, virtualHostName):
 | |
|         try:
 | |
| 
 | |
|             records = DNS.getDNSRecords(virtualHostName)
 | |
| 
 | |
|             json_data = "["
 | |
|             checker = 0
 | |
| 
 | |
|             for items in records:
 | |
|                 dic = {'id': items.id,
 | |
|                        'type': items.type,
 | |
|                        'name': items.name,
 | |
|                        'content': items.content,
 | |
|                        'priority': items.prio,
 | |
|                        'ttl': items.ttl
 | |
|                        }
 | |
| 
 | |
|                 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(json_data)
 | |
|             print(final_json)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     def listDNSPretty(self, virtualHostName):
 | |
|         try:
 | |
|             from prettytable import PrettyTable
 | |
| 
 | |
|             records = DNS.getDNSRecords(virtualHostName)
 | |
| 
 | |
|             table = PrettyTable(['ID', 'TYPE', 'Name', 'Value', 'Priority', 'TTL'])
 | |
|             for items in records:
 | |
|                 if len(items.content) >= 30:
 | |
|                     content = items.content[0:30] + " ..."
 | |
|                 else:
 | |
|                     content = items.content
 | |
|                 table.add_row([items.id, items.type, items.name, content, items.prio, items.ttl])
 | |
|             print(table)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     def listDNSZonesJson(self):
 | |
|         try:
 | |
| 
 | |
|             records = DNS.getDNSZones()
 | |
| 
 | |
|             json_data = "["
 | |
|             checker = 0
 | |
| 
 | |
|             for items in records:
 | |
|                 dic = {'id': items.id,
 | |
|                        'name': items.name,
 | |
|                        }
 | |
| 
 | |
|                 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(json_data)
 | |
|             print(final_json)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     def listDNSZonesPretty(self):
 | |
|         try:
 | |
|             from prettytable import PrettyTable
 | |
| 
 | |
|             records = records = DNS.getDNSZones()
 | |
| 
 | |
|             table = PrettyTable(['ID', 'Name'])
 | |
| 
 | |
|             for items in records:
 | |
|                 table.add_row([items.id, items.name])
 | |
|             print(table)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     def createDNSZone(self, virtualHostName, owner):
 | |
|         try:
 | |
|             admin = Administrator.objects.get(userName=owner)
 | |
|             DNS.dnsTemplate(virtualHostName, admin)
 | |
|             self.printStatus(1, 'None')
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def createDNSRecord(self, virtualHostName, name, recordType, value, priority, ttl):
 | |
|         try:
 | |
|             import tldextract
 | |
| 
 | |
|             no_cache_extract = tldextract.TLDExtract(cache_dir=None)
 | |
|             extractDomain = no_cache_extract(virtualHostName)
 | |
|             topLevelDomain = extractDomain.domain + '.' + extractDomain.suffix
 | |
| 
 | |
|             zone = DNS.getZoneObject(topLevelDomain)
 | |
|             DNS.createDNSRecord(zone, name, recordType, value, int(priority), int(ttl))
 | |
|             self.printStatus(1, 'None')
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def deleteDNSZone(self, virtualHostName):
 | |
|         try:
 | |
|             DNS.deleteDNSZone(virtualHostName)
 | |
|             self.printStatus(1, 'None')
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def deleteDNSRecord(self, recordID):
 | |
|         try:
 | |
|             DNS.deleteDNSRecord(recordID)
 | |
|             self.printStatus(1, 'None')
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     ## Backup Functions
 | |
| 
 | |
|     def createBackup(self, virtualHostName, backupPath=None):
 | |
|         try:
 | |
|             # Setup default backup path to /home/<domain name>/backup if not passed in
 | |
|             if backupPath is None:
 | |
|                 backupPath = '/home/' + virtualHostName + '/backup'
 | |
| 
 | |
|             # remove trailing slash in path
 | |
|             backupPath = backupPath.rstrip("/")
 | |
|             backuptime = time.strftime("%m.%d.%Y_%H-%M-%S")
 | |
|             backupLogPath = "/usr/local/lscp/logs/backup_log." + backuptime
 | |
| 
 | |
|             print('Backup logs to be generated in %s' % (backupLogPath))
 | |
|             tempStoragePath = backupPath + '/backup-' + virtualHostName + '-' + backuptime
 | |
|             backupName = 'backup-' + virtualHostName + '-' + backuptime
 | |
|             backupDomain = virtualHostName
 | |
|             backupUtilities.submitBackupCreation(tempStoragePath, backupName, backupPath, backupDomain)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     def restoreBackup(self, fileName):
 | |
|         try:
 | |
|             if os.path.exists('/home/backup/' + fileName):
 | |
|                 dir = "CyberPanelRestore"
 | |
|             else:
 | |
|                 dir = 'CLI'
 | |
| 
 | |
|             backupUtilities.submitRestore(fileName, dir)
 | |
| 
 | |
|             while (1):
 | |
|                 time.sleep(1)
 | |
|                 finalData = json.dumps({'backupFile': fileName, "dir": dir})
 | |
|                 r = requests.post("http://localhost:5003/backup/restoreStatus", data=finalData,
 | |
|                                   verify=False)
 | |
|                 data = json.loads(r.text)
 | |
| 
 | |
|                 if data['abort'] == 1 and data['running'] == "Error":
 | |
|                     print('Failed to restore backup, Error message : ' + data['status'] + '\n')
 | |
|                     break
 | |
|                 elif data['abort'] == 1 and data['running'] == "Completed":
 | |
|                     print('\n\n')
 | |
|                     print('Backup restore completed.\n')
 | |
|                     break
 | |
|                 else:
 | |
|                     print('Waiting for restore to complete. Current status: ' + data['status'])
 | |
| 
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     ## Packages
 | |
| 
 | |
|     def createPackage(self, owner, packageName, diskSpace, bandwidth, emailAccounts, dataBases, ftpAccounts,
 | |
|                       allowedDomains):
 | |
|         try:
 | |
| 
 | |
|             admin = Administrator.objects.get(userName=owner)
 | |
| 
 | |
|             newPack = Package(admin=admin, packageName=packageName, diskSpace=diskSpace, bandwidth=bandwidth,
 | |
|                               emailAccounts=emailAccounts, dataBases=dataBases, ftpAccounts=ftpAccounts,
 | |
|                               allowedDomains=allowedDomains)
 | |
| 
 | |
|             newPack.save()
 | |
| 
 | |
|             self.printStatus(1, 'None')
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def deletePackage(self, packageName):
 | |
|         try:
 | |
| 
 | |
|             delPack = Package.objects.get(packageName=packageName)
 | |
|             delPack.delete()
 | |
|             self.printStatus(1, 'None')
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def listPackagesJson(self):
 | |
|         try:
 | |
| 
 | |
|             records = Package.objects.all()
 | |
| 
 | |
|             json_data = "["
 | |
|             checker = 0
 | |
| 
 | |
|             for items in records:
 | |
|                 dic = {'id': items.id,
 | |
|                        'packageName': items.packageName,
 | |
|                        'domains': items.allowedDomains,
 | |
|                        'diskSpace': items.diskSpace,
 | |
|                        'bandwidth': items.bandwidth,
 | |
|                        'ftpAccounts ': items.ftpAccounts,
 | |
|                        'dataBases': items.dataBases,
 | |
|                        'emailAccounts': items.emailAccounts
 | |
|                        }
 | |
| 
 | |
|                 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(json_data)
 | |
|             print(final_json)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     def listPackagesPretty(self):
 | |
|         try:
 | |
|             from prettytable import PrettyTable
 | |
| 
 | |
|             records = Package.objects.all()
 | |
| 
 | |
|             table = PrettyTable(
 | |
|                 ['Name', 'Domains', 'Disk Space', 'Bandwidth', 'FTP Accounts', 'Databases', 'Email Accounts'])
 | |
| 
 | |
|             for items in records:
 | |
|                 table.add_row(
 | |
|                     [items.packageName, items.allowedDomains, items.diskSpace, items.bandwidth, items.ftpAccounts,
 | |
|                      items.dataBases, items.emailAccounts])
 | |
|             print(table)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
| 
 | |
|     ## Database functions
 | |
| 
 | |
|     def createDatabase(self, dbName, dbUsername, dbPassword, databaseWebsite):
 | |
|         try:
 | |
| 
 | |
|             result = mysqlUtilities.submitDBCreation(dbName, dbUsername, dbPassword, databaseWebsite)
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(1, result[1])
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def deleteDatabase(self, dbName):
 | |
|         try:
 | |
| 
 | |
|             result = mysqlUtilities.submitDBDeletion(dbName)
 | |
| 
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(1, result[1])
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def listDatabasesJson(self, virtualHostName):
 | |
|         try:
 | |
| 
 | |
|             records = mysqlUtilities.getDatabases(virtualHostName)
 | |
| 
 | |
|             json_data = "["
 | |
|             checker = 0
 | |
| 
 | |
|             for items in records:
 | |
|                 dic = {'id': items.id,
 | |
|                        'dbName': items.dbName,
 | |
|                        'dbUser': items.dbUser,
 | |
|                        }
 | |
| 
 | |
|                 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(json_data)
 | |
|             print(final_json)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     def listDatabasesPretty(self, virtualHostName):
 | |
|         try:
 | |
|             from prettytable import PrettyTable
 | |
| 
 | |
|             records = mysqlUtilities.getDatabases(virtualHostName)
 | |
| 
 | |
|             table = PrettyTable(['ID', 'Database Name', 'Database User'])
 | |
| 
 | |
|             for items in records:
 | |
|                 table.add_row([items.id, items.dbName, items.dbUser])
 | |
|             print(table)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     ## Email functions
 | |
| 
 | |
|     def createEmail(self, domain, userName, password):
 | |
|         try:
 | |
| 
 | |
|             result = mailUtilities.createEmailAccount(domain, userName, password)
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(1, result[1])
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def deleteEmail(self, email):
 | |
|         try:
 | |
| 
 | |
|             result = mailUtilities.deleteEmailAccount(email)
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(1, result[1])
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def changeEmailPassword(self, email, password):
 | |
|         try:
 | |
| 
 | |
|             result = mailUtilities.changeEmailPassword(email, password)
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(1, result[1])
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def listEmailsJson(self, virtualHostName):
 | |
|         try:
 | |
| 
 | |
|             records = mailUtilities.getEmailAccounts(virtualHostName)
 | |
| 
 | |
|             json_data = "["
 | |
|             checker = 0
 | |
| 
 | |
|             for items in records:
 | |
|                 dic = {
 | |
|                     'email': items.email,
 | |
|                 }
 | |
| 
 | |
|                 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(json_data)
 | |
|             print(final_json)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     def listEmailsPretty(self, virtualHostName):
 | |
|         try:
 | |
|             from prettytable import PrettyTable
 | |
| 
 | |
|             records = mailUtilities.getEmailAccounts(virtualHostName)
 | |
| 
 | |
|             table = PrettyTable(['Email'])
 | |
| 
 | |
|             for items in records:
 | |
|                 table.add_row([items.email])
 | |
|             print(table)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     ## FTP Functions
 | |
| 
 | |
|     ## FTP Functions
 | |
| 
 | |
| 
 | |
|     # FTP Functions
 | |
| 
 | |
|     def createFTPAccount(self, domain, userName, password, owner):
 | |
|         try:
 | |
| 
 | |
|             result = FTPUtilities.submitFTPCreation(domain, userName, password, 'None', owner)
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(1, result[1])
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def deleteFTPAccount(self, userName):
 | |
|         try:
 | |
| 
 | |
|             result = FTPUtilities.submitFTPDeletion(userName)
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(1, result[1])
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def changeFTPPassword(self, userName, password):
 | |
|         try:
 | |
| 
 | |
|             result = FTPUtilities.changeFTPPassword(userName, password)
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(1, result[1])
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def listFTPJson(self, virtualHostName):
 | |
|         try:
 | |
| 
 | |
|             records = FTPUtilities.getFTPRecords(virtualHostName)
 | |
| 
 | |
|             json_data = "["
 | |
|             checker = 0
 | |
| 
 | |
|             for items in records:
 | |
|                 dic = {'id': items.id,
 | |
|                        'username': items.user,
 | |
|                        'path': items.dir
 | |
|                        }
 | |
| 
 | |
|                 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(json_data)
 | |
|             print(final_json)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     def listFTPPretty(self, virtualHostName):
 | |
|         try:
 | |
|             from prettytable import PrettyTable
 | |
| 
 | |
|             records = FTPUtilities.getFTPRecords(virtualHostName)
 | |
| 
 | |
|             table = PrettyTable(['ID', 'User', 'Path'])
 | |
| 
 | |
|             for items in records:
 | |
|                 table.add_row([items.id, items.user, items.dir])
 | |
|             print(table)
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             print(0)
 | |
| 
 | |
|     ## FTP Functions
 | |
| 
 | |
| 
 | |
|     ## SSL Functions
 | |
| 
 | |
|     def issueSSL(self, virtualHost):
 | |
|         try:
 | |
| 
 | |
|             path = ''
 | |
|             adminEmail = ''
 | |
| 
 | |
|             try:
 | |
|                 website = ChildDomains.objects.get(domain=virtualHost)
 | |
|                 adminEmail = website.master.adminEmail
 | |
|                 path = website.path
 | |
|             except:
 | |
|                 website = Websites.objects.get(domain=virtualHost)
 | |
|                 adminEmail = website.adminEmail
 | |
|                 path = "/home/" + virtualHost + "/public_html"
 | |
| 
 | |
|             result = virtualHostUtilities.issueSSL(virtualHost, path, adminEmail)
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(1, result[1])
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def issueSSLForHostName(self, virtualHost):
 | |
|         try:
 | |
| 
 | |
|             path = ''
 | |
|             adminEmail = ''
 | |
| 
 | |
|             try:
 | |
|                 website = ChildDomains.objects.get(domain=virtualHost)
 | |
|                 adminEmail = website.master.adminEmail
 | |
|                 path = website.path
 | |
|             except:
 | |
|                 website = Websites.objects.get(domain=virtualHost)
 | |
|                 adminEmail = website.adminEmail
 | |
|                 path = "/home/" + virtualHost + "/public_html"
 | |
| 
 | |
|             result = virtualHostUtilities.issueSSLForHostName(virtualHost, path)
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(1, result[1])
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
|     def issueSSLForMailServer(self, virtualHost):
 | |
|         try:
 | |
| 
 | |
|             path = ''
 | |
|             adminEmail = ''
 | |
| 
 | |
|             try:
 | |
|                 website = ChildDomains.objects.get(domain=virtualHost)
 | |
|                 adminEmail = website.master.adminEmail
 | |
|                 path = website.path
 | |
|             except:
 | |
|                 website = Websites.objects.get(domain=virtualHost)
 | |
|                 adminEmail = website.adminEmail
 | |
|                 path = "/home/" + virtualHost + "/public_html"
 | |
| 
 | |
|             result = virtualHostUtilities.issueSSLForMailServer(virtualHost, path)
 | |
|             if result[0] == 1:
 | |
|                 self.printStatus(1, 'None')
 | |
|             else:
 | |
|                 self.printStatus(1, result[1])
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
| 
 | |
|     def issueSelfSignedSSL(self, virtualHost):
 | |
|         try:
 | |
| 
 | |
|             try:
 | |
|                 website = ChildDomains.objects.get(domain=virtualHost)
 | |
|                 adminEmail = website.master.adminEmail
 | |
|             except:
 | |
|                 website = Websites.objects.get(domain=virtualHost)
 | |
|                 adminEmail = website.adminEmail
 | |
| 
 | |
|             pathToStoreSSL = "/etc/letsencrypt/live/" + virtualHost
 | |
|             command = 'mkdir -p ' + pathToStoreSSL
 | |
|             ProcessUtilities.executioner(command)
 | |
| 
 | |
|             pathToStoreSSLPrivKey = "/etc/letsencrypt/live/" + virtualHost + "/privkey.pem"
 | |
|             pathToStoreSSLFullChain = "/etc/letsencrypt/live/" + virtualHost + "/fullchain.pem"
 | |
| 
 | |
|             command = 'openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" -keyout ' + pathToStoreSSLPrivKey + ' -out ' + pathToStoreSSLFullChain
 | |
|             ProcessUtilities.executioner(command)
 | |
| 
 | |
|             sslUtilities.installSSLForDomain(virtualHost, adminEmail)
 | |
|             ProcessUtilities.restartLitespeed()
 | |
|             self.printStatus(1, 'None')
 | |
| 
 | |
|         except BaseException as msg:
 | |
|             logger.writeforCLI(str(msg), "Error", stack()[0][3])
 | |
|             self.printStatus(0, str(msg))
 | |
| 
 | |
| def main():
 | |
| 
 | |
|     parser = cliParser()
 | |
|     args = parser.prepareArguments()
 | |
|     cyberpanel = cyberPanel()
 | |
| 
 | |
|     ## Website functions
 | |
| 
 | |
|     if args.function == "createWebsite":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel createWebsite --package Detault --owner admin --domainName cyberpanel.net --email support@cyberpanel.net --php 5.6'
 | |
| 
 | |
|         if not args.package:
 | |
|             print("\n\nPlease enter the package name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.owner:
 | |
|             print("\n\nPlease enter the owner name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter the domain name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.email:
 | |
|             print("\n\nPlease enter the email. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.php:
 | |
|             print("\n\nPlease enter the PHP version such as 5.6 for PHP version 5.6. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if args.ssl:
 | |
|             ssl = int(args.ssl)
 | |
|         else:
 | |
|             ssl = 0
 | |
| 
 | |
|         if args.dkim:
 | |
|             dkim = int(args.dkim)
 | |
|         else:
 | |
|             dkim = 0
 | |
| 
 | |
|         if args.openBasedir:
 | |
|             openBasedir = int(args.openBasedir)
 | |
|         else:
 | |
|             openBasedir = 0
 | |
| 
 | |
|         cyberpanel.createWebsite(args.package, args.owner, args.domainName, args.email, args.php, ssl, dkim,
 | |
|                                  openBasedir)
 | |
|     elif args.function == "deleteWebsite":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel deleteWebsite --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter the domain to delete. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.deleteWebsite(args.domainName)
 | |
|     elif args.function == "createChild":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel createChild --masterDomain cyberpanel.net --childDomain child.cyberpanel.net' \
 | |
|                                  ' --owner admin --php 5.6'
 | |
| 
 | |
|         if not args.masterDomain:
 | |
|             print("\n\nPlease enter Master domain. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.childDomain:
 | |
|             print("\n\nPlease enter the Child Domain. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.owner:
 | |
|             print("\n\nPlease enter owner for this domain DNS records. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.php:
 | |
|             print("\n\nPlease enter required PHP version. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if args.ssl:
 | |
|             ssl = int(args.ssl)
 | |
|         else:
 | |
|             ssl = 0
 | |
| 
 | |
|         if args.dkim:
 | |
|             dkim = int(args.dkim)
 | |
|         else:
 | |
|             dkim = 0
 | |
| 
 | |
|         if args.openBasedir:
 | |
|             openBasedir = int(args.openBasedir)
 | |
|         else:
 | |
|             openBasedir = 0
 | |
|             
 | |
|         if args.path:
 | |
|             path = args.path
 | |
|         else:
 | |
|             path = "public_html/" + args.childDomain
 | |
| 
 | |
|         cyberpanel.createDomain(args.masterDomain, args.childDomain, args.owner, args.php, ssl, dkim, openBasedir, path)
 | |
|     elif args.function == "deleteChild":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel deleteChild --childDomain cyberpanel.net'
 | |
| 
 | |
|         if not args.childDomain:
 | |
|             print("\n\nPlease enter the child domain to delete. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.deleteChild(args.childDomain)
 | |
|     elif args.function == "listWebsitesJson":
 | |
|         cyberpanel.listWebsitesJson()
 | |
|     elif args.function == "listWebsitesPretty":
 | |
|         cyberpanel.listWebsitesPretty()
 | |
| 
 | |
|     elif args.function == "changePHP":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel changePHP --domainName cyberpanel.net --php 5.6'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter Domain. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.php:
 | |
|             print("\n\nPlease enter required PHP version. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
| 
 | |
|         cyberpanel.changePHP(args.domainName, args.php)
 | |
|     elif args.function == "changePackage":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel changePackage --domainName cyberpanel.net --packageName CLI'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter the Domain. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.packageName:
 | |
|             print("\n\nPlease enter the package name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.changePackage(args.domainName, args.packageName)
 | |
| 
 | |
|     ## DNS Functions
 | |
| 
 | |
|     elif args.function == "listDNSJson":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel listDNSJson --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter the domain. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.listDNSJson(args.domainName)
 | |
|     elif args.function == "listDNSPretty":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel listDNSPretty --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter the domain. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.listDNSPretty(args.domainName)
 | |
|     elif args.function == "listDNSZonesJson":
 | |
|         cyberpanel.listDNSZonesJson()
 | |
|     elif args.function == "listDNSZonesPretty":
 | |
|         cyberpanel.listDNSZonesPretty()
 | |
|     elif args.function == "createDNSZone":
 | |
|         completeCommandExample = 'cyberpanel createDNSZone --owner admin --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter the domain. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.owner:
 | |
|             print("\n\nPlease enter the owner name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.createDNSZone(args.domainName, args.owner)
 | |
|     elif args.function == "deleteDNSZone":
 | |
|         completeCommandExample = 'cyberpanel deleteDNSZone --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter the domain. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.deleteDNSZone(args.domainName)
 | |
|     elif args.function == "createDNSRecord":
 | |
|         completeCommandExample = 'cyberpanel createDNSRecord --domainName cyberpanel.net --name cyberpanel.net' \
 | |
|                                  ' --recordType A --value 192.168.100.1 --priority 0 --ttl 3600'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter the domain. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.name:
 | |
|             print("\n\nPlease enter the record name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.recordType:
 | |
|             print("\n\nPlease enter the record type. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.value:
 | |
|             print("\n\nPlease enter the record value. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.priority:
 | |
|             print("\n\nPlease enter the priority. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.ttl:
 | |
|             print("\n\nPlease enter the ttl. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.createDNSRecord(args.domainName, args.name, args.recordType, args.value, args.priority, args.ttl)
 | |
|     elif args.function == "deleteDNSRecord":
 | |
|         completeCommandExample = 'cyberpanel deleteDNSRecord --recordID 200'
 | |
| 
 | |
|         if not args.recordID:
 | |
|             print("\n\nPlease enter the record ID to be deleted, you can find record ID by listing the current DNS records. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.deleteDNSRecord(args.recordID)
 | |
| 
 | |
|     ## Backup Functions.
 | |
| 
 | |
|     elif args.function == "createBackup":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel createBackup --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter the domain. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.createBackup(args.domainName)
 | |
|     elif args.function == "restoreBackup":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel restoreBackup --fileName /home/talkshosting.com/backup/backup-talksho-01-30-53-Fri-Jun-2018.tar.gz'
 | |
| 
 | |
|         if not args.fileName:
 | |
|             print("\n\nPlease enter the file name or complete path to file. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.restoreBackup(args.fileName)
 | |
| 
 | |
|     ## Package functions.
 | |
| 
 | |
|     elif args.function == "createPackage":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel createPackage --owner admin --packageName CLI --diskSpace 1000 --bandwidth 10000 --emailAccounts 100' \
 | |
|                                  ' --dataBases 100 --ftpAccounts 100 --allowedDomains 100'
 | |
| 
 | |
|         if not args.owner:
 | |
|             print("\n\nPlease enter the owner name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
|         if not args.packageName:
 | |
|             print("\n\nPlease enter the package name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
|         if not args.diskSpace:
 | |
|             print("\n\nPlease enter value for Disk Space. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.bandwidth:
 | |
|             print("\n\nPlease enter value for Bandwidth. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.emailAccounts:
 | |
|             print("\n\nPlease enter value for Email accounts. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.dataBases:
 | |
|             print("\n\nPlease enter value for Databases. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.ftpAccounts:
 | |
|             print("\n\nPlease enter value for Ftp accounts. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.allowedDomains:
 | |
|             print("\n\nPlease enter value for Allowed Child Domains. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.createPackage(args.owner, args.packageName, args.diskSpace, args.bandwidth, args.emailAccounts,
 | |
|                                  args.dataBases, args.ftpAccounts, args.allowedDomains)
 | |
|     elif args.function == "deletePackage":
 | |
|         completeCommandExample = 'cyberpanel deletePackage --packageName CLI'
 | |
|         if not args.packageName:
 | |
|             print("\n\nPlease enter the package name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.deletePackage(args.packageName)
 | |
|     elif args.function == "listPackagesJson":
 | |
|         cyberpanel.listPackagesJson()
 | |
|     elif args.function == "listPackagesPretty":
 | |
|         cyberpanel.listPackagesPretty()
 | |
| 
 | |
|     ## Database functions.
 | |
| 
 | |
|     elif args.function == "createDatabase":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel createDatabase --databaseWebsite cyberpanel.net --dbName cyberpanel ' \
 | |
|                                  '--dbUsername cyberpanel --dbPassword cyberpanel'
 | |
| 
 | |
|         if not args.databaseWebsite:
 | |
|             print("\n\nPlease enter database website. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
|         if not args.dbName:
 | |
|             print("\n\nPlease enter the database name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
|         if not args.dbUsername:
 | |
|             print("\n\nPlease enter the database username. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.dbPassword:
 | |
|             print("\n\nPlease enter the password for database. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.createDatabase(args.dbName, args.dbUsername, args.dbPassword, args.databaseWebsite)
 | |
|     elif args.function == "deleteDatabase":
 | |
|         completeCommandExample = 'cyberpanel deleteDatabase --dbName cyberpanel'
 | |
|         if not args.dbName:
 | |
|             print("\n\nPlease enter the database name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.deleteDatabase(args.dbName)
 | |
|     elif args.function == "listDatabasesJson":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel listDatabasesJson --databaseWebsite cyberpanel.net'
 | |
| 
 | |
|         if not args.databaseWebsite:
 | |
|             print("\n\nPlease enter database website. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
|         cyberpanel.listDatabasesJson(args.databaseWebsite)
 | |
|     elif args.function == "listDatabasesPretty":
 | |
|         completeCommandExample = 'cyberpanel listDatabasesPretty --databaseWebsite cyberpanel.net'
 | |
| 
 | |
|         if not args.databaseWebsite:
 | |
|             print("\n\nPlease enter database website. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.listDatabasesPretty(args.databaseWebsite)
 | |
| 
 | |
|     ## Email Functions
 | |
| 
 | |
|     elif args.function == "createEmail":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel createEmail --domainName cyberpanel.net --userName cyberpanel ' \
 | |
|                                  '--password cyberpanel'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter Domain name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
|         if not args.userName:
 | |
|             print("\n\nPlease enter the user name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.password:
 | |
|             print("\n\nPlease enter the password for database. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.createEmail(args.domainName, args.userName, args.password)
 | |
|     elif args.function == "deleteEmail":
 | |
|         completeCommandExample = 'cyberpanel deleteEmail --email cyberpanel@cyberpanel.net'
 | |
| 
 | |
|         if not args.email:
 | |
|             print("\n\nPlease enter the email. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.deleteEmail(args.email)
 | |
|     elif args.function == "changeEmailPassword":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel changeEmailPassword --email cyberpanel@cyberpanel.net --password cyberpanel'
 | |
| 
 | |
|         if not args.email:
 | |
|             print("\n\nPlease enter email. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.password:
 | |
|             print("\n\nPlease enter the password. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.changeEmailPassword(args.email, args.password)
 | |
|     elif args.function == "listEmailsJson":
 | |
|         completeCommandExample = 'cyberpanel listEmailsJson --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter domain name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.listEmailsJson(args.domainName)
 | |
|     elif args.function == "listEmailsPretty":
 | |
|         completeCommandExample = 'cyberpanel listEmailsPretty --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter domain name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.listEmailsPretty(args.domainName)
 | |
| 
 | |
|     ## FTP Functions
 | |
| 
 | |
|     elif args.function == "createFTPAccount":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel createFTPAccount --domainName cyberpanel.net --userName cyberpanel ' \
 | |
|                                  '--password cyberpanel --owner admin'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter Domain name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
|         if not args.userName:
 | |
|             print("\n\nPlease enter the user name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.password:
 | |
|             print("\n\nPlease enter the password for database. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.owner:
 | |
|             print("\n\nPlease enter the owner name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.createFTPAccount(args.domainName, args.userName, args.password, args.owner)
 | |
|     elif args.function == "deleteFTPAccount":
 | |
|         completeCommandExample = 'cyberpanel deleteFTPAccount --userName cyberpanel'
 | |
| 
 | |
|         if not args.userName:
 | |
|             print("\n\nPlease enter the user name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.deleteFTPAccount(args.userName)
 | |
|     elif args.function == "changeFTPPassword":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel changeFTPPassword --userName cyberpanel --password cyberpanel'
 | |
| 
 | |
|         if not args.userName:
 | |
|             print("\n\nPlease enter the user name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.password:
 | |
|             print("\n\nPlease enter the password for database. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.changeFTPPassword(args.userName, args.password)
 | |
|     elif args.function == "listFTPJson":
 | |
|         completeCommandExample = 'cyberpanel listFTPJson --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter domain name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.listFTPJson(args.domainName)
 | |
|     elif args.function == "listFTPPretty":
 | |
|         completeCommandExample = 'cyberpanel listFTPPretty --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter domain name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.listFTPPretty(args.domainName)
 | |
| 
 | |
|     ## SSL Functions
 | |
|     elif args.function == "issueSSL":
 | |
|         completeCommandExample = 'cyberpanel issueSSL --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter Domain name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.issueSSL(args.domainName)
 | |
|     elif args.function == "hostNameSSL":
 | |
|         completeCommandExample = 'cyberpanel hostNameSSL --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter Domain name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.issueSSLForHostName(args.domainName)
 | |
|     elif args.function == "mailServerSSL":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel mailServerSSL --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter Domain name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.issueSSLForMailServer(args.domainName)
 | |
| 
 | |
|     elif args.function == "issueSelfSignedSSL":
 | |
|         completeCommandExample = 'cyberpanel issueSelfSignedSSL --domainName cyberpanel.net'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter Domain name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         cyberpanel.issueSelfSignedSSL(args.domainName)
 | |
| 
 | |
|     elif args.function == 'utility':
 | |
|         if not os.path.exists('/usr/bin/cyberpanel_utility'):
 | |
|             command = 'wget -q -O /usr/bin/cyberpanel_utility https://cyberpanel.sh/misc/cyberpanel_utility.sh'
 | |
|             ProcessUtilities.executioner(command)
 | |
| 
 | |
|             command = 'chmod 700 /usr/bin/cyberpanel_utility'
 | |
|             ProcessUtilities.executioner(command)
 | |
| 
 | |
|         command = '/usr/bin/cyberpanel_utility'
 | |
|         ProcessUtilities.executioner(command)
 | |
|     elif args.function == 'upgrade' or args.function == 'update':
 | |
|         if not os.path.exists('/usr/bin/cyberpanel_utility'):
 | |
|             command = 'wget -q -O /usr/bin/cyberpanel_utility https://cyberpanel.sh/misc/cyberpanel_utility.sh'
 | |
|             ProcessUtilities.executioner(command)
 | |
| 
 | |
|             command = 'chmod 700 /usr/bin/cyberpanel_utility'
 | |
|             ProcessUtilities.executioner(command)
 | |
| 
 | |
|         command = '/usr/bin/cyberpanel_utility --upgrade'
 | |
|         ProcessUtilities.executioner(command)
 | |
|     elif args.function == 'help':
 | |
|         if not os.path.exists('/usr/bin/cyberpanel_utility'):
 | |
|             command = 'wget -q -O /usr/bin/cyberpanel_utility https://cyberpanel.sh/misc/cyberpanel_utility.sh'
 | |
|             ProcessUtilities.executioner(command)
 | |
| 
 | |
|             command = 'chmod 700 /usr/bin/cyberpanel_utility'
 | |
|             ProcessUtilities.executioner(command)
 | |
| 
 | |
|         command = '/usr/bin/cyberpanel_utility --help'
 | |
|         ProcessUtilities.executioner(command)
 | |
|     elif args.function == 'version' or args.function == 'v' or args.function == 'V':
 | |
|         ## Get CurrentVersion
 | |
|         print(get_cyberpanel_version())
 | |
| 
 | |
|     ### User Functions
 | |
| 
 | |
|     elif args.function == "createUser":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel createUser --firstName Cyber --lastName Panel --email email@cyberpanel.net --userName cyberpanel --password securepassword --websitesLimit 10 --selectedACL user --securityLevel HIGH'
 | |
| 
 | |
|         if not args.firstName:
 | |
|             print("\n\nPlease enter First Name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.lastName:
 | |
|             print("\n\nPlease enter Last Name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.email:
 | |
|             print("\n\nPlease enter Email. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.userName:
 | |
|             print("\n\nPlease enter User name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.password:
 | |
|             print("\n\nPlease enter password. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.websitesLimit:
 | |
|             print("\n\nPlease enter website limit. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.selectedACL:
 | |
|             print("\n\nPlease enter select acl. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.securityLevel:
 | |
|             print("\n\nPlease set security level. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         from userManagment.views import submitUserCreation
 | |
| 
 | |
|         data = {}
 | |
|         data['firstName'] = args.firstName
 | |
|         data['lastName'] = args.lastName
 | |
|         data['email'] = args.email
 | |
|         data['userName'] = args.userName
 | |
|         data['password'] = args.password
 | |
|         data['websitesLimit'] = args.websitesLimit
 | |
|         data['selectedACL'] = args.selectedACL
 | |
|         data['securityLevel'] = args.securityLevel
 | |
|         data['userID'] = 1
 | |
| 
 | |
|         response = submitUserCreation(data)
 | |
| 
 | |
|         print(response.content.decode())
 | |
| 
 | |
|     elif args.function == "deleteUser":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel deleteUser --userName cyberpanel'
 | |
| 
 | |
|         if not args.userName:
 | |
|             print("\n\nPlease enter User Name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         from userManagment.views import submitUserDeletion
 | |
| 
 | |
|         data = {}
 | |
|         data['accountUsername'] = args.userName
 | |
|         data['userID'] = 1
 | |
| 
 | |
|         response = submitUserDeletion(data)
 | |
| 
 | |
|         print(response.content.decode())
 | |
| 
 | |
|     elif args.function == "listUsers":
 | |
| 
 | |
|         from userManagment.views import fetchTableUsers
 | |
|         data = {}
 | |
|         data['userID'] = 1
 | |
|         response = fetchTableUsers(data)
 | |
| 
 | |
|         print(response.content.decode())
 | |
| 
 | |
|     elif args.function == "suspendUser":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel suspendUser --userName cyberpanel --state SUSPEND'
 | |
| 
 | |
|         if not args.userName:
 | |
|             print("\n\nPlease enter User Name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.state:
 | |
|             print("\n\nPlease enter state value i.e SUSPEND/UnSuspend. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         from userManagment.views import controlUserState
 | |
| 
 | |
|         data = {}
 | |
|         data['accountUsername'] = args.userName
 | |
|         data['state'] = args.state
 | |
|         data['userID'] = 1
 | |
| 
 | |
|         response = controlUserState(data)
 | |
| 
 | |
|         print(response.content.decode())
 | |
| 
 | |
|     elif args.function == "editUser":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel editUser --userName cyberpanel --firstName Cyber --lastName Panel --email email@cyberpanel.net --password securepassword --securityLevel HIGH'
 | |
| 
 | |
|         if not args.firstName:
 | |
|             print("\n\nPlease enter First Name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.lastName:
 | |
|             print("\n\nPlease enter Last Name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.email:
 | |
|             print("\n\nPlease enter Email. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.userName:
 | |
|             print("\n\nPlease enter User name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.password:
 | |
|             print("\n\nPlease enter password. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.securityLevel:
 | |
|             print("\n\nPlease set security level. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         from userManagment.views import saveModifications
 | |
| 
 | |
|         data = {}
 | |
|         data['accountUsername'] = args.userName
 | |
|         data['firstName'] = args.firstName
 | |
|         data['lastName'] = args.lastName
 | |
|         data['email'] = args.email
 | |
|         data['passwordByPass'] = args.password
 | |
|         data['securityLevel'] = args.securityLevel
 | |
|         data['userID'] = 1
 | |
| 
 | |
|         response = saveModifications(data)
 | |
| 
 | |
|         print(response.content.decode())
 | |
| 
 | |
|     ### Application installers
 | |
| 
 | |
|     elif args.function == "installWordPress":
 | |
|         completeCommandExample = 'cyberpanel installWordPress --domainName cyberpanel.net --email support@cyberpanel.net --userName cyberpanel --password helloworld --siteTitle "WordPress Site" --path helloworld (this is optional)'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter Domain name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.email:
 | |
|             print("\n\nPlease enter email. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.userName:
 | |
|             print("\n\nPlease enter User name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.password:
 | |
|             print("\n\nPlease enter password. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.siteTitle:
 | |
|             print("\n\nPlease enter site title. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.path:
 | |
|             home = '1'
 | |
|             path = ''
 | |
|         else:
 | |
|             home = '0'
 | |
|             path = args.path
 | |
| 
 | |
|         from websiteFunctions.website import WebsiteManager
 | |
| 
 | |
|         data = {}
 | |
|         data['adminUser'] = args.userName
 | |
|         data['blogTitle'] = args.siteTitle
 | |
|         data['domain'] = args.domainName
 | |
|         data['adminEmail'] = args.email
 | |
|         data['passwordByPass'] = args.password
 | |
|         data['home'] = home
 | |
|         data['path'] = path
 | |
| 
 | |
|         wm = WebsiteManager()
 | |
|         wm.installWordpress(1, data)
 | |
| 
 | |
|     elif args.function == "installJoomla":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel installJoomla --domainName cyberpanel.net --password helloworld --siteTitle "WordPress Site" --path helloworld (this is optional)'
 | |
| 
 | |
|         if not args.domainName:
 | |
|             print("\n\nPlease enter Domain name. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.password:
 | |
|             print("\n\nPlease enter password. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.siteTitle:
 | |
|             print("\n\nPlease enter site title. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         if not args.path:
 | |
|             home = '1'
 | |
|             path = ''
 | |
|         else:
 | |
|             home = '0'
 | |
|             path = args.path
 | |
| 
 | |
|         from websiteFunctions.website import WebsiteManager
 | |
| 
 | |
|         data = {}
 | |
|         data['prefix'] = 'jm_'
 | |
|         data['siteName'] = args.siteTitle
 | |
|         data['domain'] = args.domainName
 | |
|         data['passwordByPass'] = args.password
 | |
|         data['home'] = home
 | |
|         data['path'] = path
 | |
| 
 | |
|         wm = WebsiteManager()
 | |
|         wm.installJoomla(1, data)
 | |
| 
 | |
|     elif args.function == "switchTOLSWS":
 | |
| 
 | |
|         completeCommandExample = 'cyberpanel switchTOLSWS --licenseKey <Your lsws key here or you can enter TRIAL)'
 | |
| 
 | |
|         if not args.licenseKey:
 | |
|             print("\n\nPlease enter LiteSpeed License key. For example:\n\n" + completeCommandExample + "\n\n")
 | |
|             return
 | |
| 
 | |
|         from serverStatus.serverStatusUtil import ServerStatusUtil
 | |
| 
 | |
|         ServerStatusUtil.switchTOLSWSCLI(args.licenseKey)
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main()
 |