Initial Command Line Interface.

This commit is contained in:
usmannasir
2018-06-01 02:08:21 +05:00
parent 2f80c99b60
commit 798d87bed2
12 changed files with 2402 additions and 2517 deletions

0
cli/__init__.py Normal file
View File

28
cli/cliLogger.py Normal file
View File

@@ -0,0 +1,28 @@
import subprocess
import time
class cliLogger:
fileName = "/home/cyberpanel/error-logs.txt"
@staticmethod
def writeforCLI(message, level, method):
try:
file = open(cliLogger.fileName, 'a')
file.writelines("[" + time.strftime(
"%I-%M-%S-%a-%b-%Y") + "] [" + level + ":" + method + "] " + message + "\n")
file.close()
file.close()
except IOError:
return "Can not write to error file!"
@staticmethod
def readLastNFiles(numberOfLines,fileName):
try:
lastFewLines = subprocess.check_output(["tail", "-n",str(numberOfLines),fileName])
return lastFewLines
except subprocess.CalledProcessError,msg:
return "File was empty"

123
cli/cyberPanel.py Executable file
View File

@@ -0,0 +1,123 @@
#!/usr/bin/env python2.7
import os,sys
sys.path.append('/usr/local/CyberCP')
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
django.setup()
import argparse
from inspect import stack
from cliLogger import cliLogger as logger
import json
from plogical.virtualHostUtilities import virtualHostUtilities
import re
from websiteFunctions.models import Websites, ChildDomains
from plogical.vhost import vhost
class cyberPanel:
def printStatus(self, operationStatus, errorMessage):
data = json.dumps({'success': operationStatus,
'errorMessage': errorMessage
})
print data
def createWebsite(self, package, owner, domainName, email, php, ssl, dkim, openBasedir):
try:
externalApp = "".join(re.findall("[a-zA-Z]+", domainName))[:7]
numberOfWebsites = str(Websites.objects.count() + ChildDomains.objects.count())
sslpath = "/home/" + domainName + "/public_html"
phpSelection = 'PHP ' + php
result = virtualHostUtilities.createVirtualHost(domainName, email, phpSelection, externalApp, numberOfWebsites, ssl, sslpath, dkim,
openBasedir, owner, package)
if result[0] == 1:
self.printStatus(1,'None')
else:
self.printStatus(0, result[1])
except BaseException, msg:
logger.writeforCLI(str(msg), "Error", stack()[0][3])
self.printStatus(0, str(msg))
def deleteWebsite(self, domainName):
try:
numberOfWebsites = Websites.objects.count() + ChildDomains.objects.count()
vhost.deleteVirtualHostConfigurations(domainName, numberOfWebsites)
self.printStatus(1, 'None')
except BaseException, msg:
logger.writeforCLI(str(msg), "Error", stack()[0][3])
print 0
def main():
parser = argparse.ArgumentParser(description='CyberPanel Command Line Interface!')
parser.add_argument('function', help='Specific a operation to perform!')
## Website creation arguemtns
parser.add_argument('--package', help='Select a package for website.')
parser.add_argument('--owner', help='Select a website owner.')
parser.add_argument('--domainName', help='Domain name!')
parser.add_argument('--email', help='Administrator email.')
parser.add_argument('--php', help='Administrator email.')
parser.add_argument('--ssl', help='Weather to obtain SSL.')
parser.add_argument('--dkim', help='DKIM Signing')
parser.add_argument('--openBasedir', help='To enable or disable open_basedir protection for domain.')
args = parser.parse_args()
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"
if not args.owner:
print "\n\nPlease enter the owner name. For example:\n\n" + completeCommandExample + "\n\n"
if not args.domainName:
print "\n\nPlease enter the domain name. For example:\n\n" + completeCommandExample + "\n\n"
if not args.email:
print "\n\nPlease enter the email. For example:\n\n" + completeCommandExample + "\n\n"
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"
if args.ssl:
ssl = args.ssl
else:
ssl = 0
if args.dkim:
dkim = args.dkim
else:
dkim = 0
if args.openBasedir:
openBasedir = args.openBasedir
else:
openBasedir = 0
cyberpanel = cyberPanel()
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 = cyberPanel()
cyberpanel.deleteWebsite(args.domainName)
if __name__ == "__main__":
main()