mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-13 08:46:09 +01:00
CLI.
This commit is contained in:
@@ -1,42 +1,17 @@
|
||||
import pexpect
|
||||
import os,sys
|
||||
sys.path.append('/usr/local/CyberCP')
|
||||
import django
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
|
||||
django.setup()
|
||||
import CyberCPLogFileWriter as logging
|
||||
import subprocess
|
||||
import shlex
|
||||
from websiteFunctions.models import Websites
|
||||
from databases.models import Databases
|
||||
|
||||
|
||||
class mysqlUtilities:
|
||||
|
||||
@staticmethod
|
||||
def SendQuery(user, password, dbname, query):
|
||||
try:
|
||||
expectation = "Enter password:"
|
||||
securemysql = pexpect.spawn("mysql -u "+user+" -p")
|
||||
securemysql.expect(expectation)
|
||||
securemysql.sendline(password)
|
||||
|
||||
expectation = ["Access denied for user", "Welcome to the MariaDB monitor"]
|
||||
index = securemysql.expect(expectation)
|
||||
if index == 0:
|
||||
return "Wrong Password"
|
||||
else:
|
||||
|
||||
securemysql.sendline("USE "+dbname+";")
|
||||
expectation = "Database changed"
|
||||
securemysql.expect(expectation)
|
||||
|
||||
expectation = "Query OK"
|
||||
securemysql.sendline(query);
|
||||
securemysql.expect(expectation)
|
||||
|
||||
securemysql.sendline("exit");
|
||||
|
||||
securemysql.wait()
|
||||
return 1
|
||||
except pexpect.EOF, msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + " Exception EOF [SendQuery]")
|
||||
except BaseException, msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[SendQuery]")
|
||||
|
||||
|
||||
@staticmethod
|
||||
def createDatabase(dbname,dbuser,dbpassword):
|
||||
@@ -184,3 +159,64 @@ class mysqlUtilities:
|
||||
return 1
|
||||
except BaseException, msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[restoreDatabaseBackup]")
|
||||
|
||||
|
||||
@staticmethod
|
||||
def submitDBCreation(dbName, dbUsername, dbPassword, databaseWebsite):
|
||||
try:
|
||||
|
||||
if len(dbName) > 16 or len(dbUsername) > 16:
|
||||
raise BaseException("Length of Database name or Database user should be 16 at max.")
|
||||
|
||||
website = Websites.objects.get(domain=databaseWebsite)
|
||||
|
||||
if website.package.dataBases == 0:
|
||||
pass
|
||||
elif website.package.dataBases > website.databases_set.all().count():
|
||||
pass
|
||||
else:
|
||||
raise BaseException("Maximum database limit reached for this website.")
|
||||
|
||||
if Databases.objects.filter(dbName=dbName).exists() or Databases.objects.filter(dbUser=dbUsername).exists():
|
||||
raise BaseException("This database or user is already taken.")
|
||||
|
||||
result = mysqlUtilities.createDatabase(dbName, dbUsername, dbPassword)
|
||||
|
||||
if result == 1:
|
||||
pass
|
||||
else:
|
||||
raise BaseException(result)
|
||||
|
||||
db = Databases(website=website, dbName=dbName, dbUser=dbUsername)
|
||||
db.save()
|
||||
|
||||
return 1,'None'
|
||||
|
||||
except BaseException, msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg))
|
||||
return 0,str(msg)
|
||||
|
||||
@staticmethod
|
||||
def submitDBDeletion(dbName):
|
||||
try:
|
||||
|
||||
databaseToBeDeleted = Databases.objects.get(dbName=dbName)
|
||||
result = mysqlUtilities.deleteDatabase(dbName, databaseToBeDeleted.dbUser)
|
||||
|
||||
if result == 1:
|
||||
databaseToBeDeleted.delete()
|
||||
return 1,'None'
|
||||
else:
|
||||
return 0,result
|
||||
|
||||
except BaseException, msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg))
|
||||
return 0, str(msg)
|
||||
|
||||
@staticmethod
|
||||
def getDatabases(virtualHostName):
|
||||
try:
|
||||
website = Websites.objects.get(domain=virtualHostName)
|
||||
return website.databases_set.all()
|
||||
except:
|
||||
0
|
||||
|
||||
Reference in New Issue
Block a user