diff --git a/api/urls.py b/api/urls.py
index f074a7072..9c63dcb57 100644
--- a/api/urls.py
+++ b/api/urls.py
@@ -21,11 +21,7 @@ urlpatterns = [
url(r'^cancelRemoteTransfer', views.cancelRemoteTransfer, name='cancelRemoteTransfer'),
-
url(r'^cyberPanelVersion', views.cyberPanelVersion, name='cyberPanelVersion'),
- url(r'^putSSHkey', views.putSSHkey, name='putSSHkey'),
-
- url(r'^changeAdminPassword', views.changeAdminPassword, name='changeAdminPassword'),
url(r'^runAWSBackups$', views.runAWSBackups, name='runAWSBackups'),
]
\ No newline at end of file
diff --git a/api/views.py b/api/views.py
index 74bef9a0a..fac066718 100644
--- a/api/views.py
+++ b/api/views.py
@@ -33,6 +33,11 @@ def verifyConn(request):
admin = Administrator.objects.get(userName=adminUser)
+ if admin.api == 0:
+ data_ret = {"verifyConn": 0, 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
if hashPassword.check_password(admin.password, adminPass):
data_ret = {"verifyConn": 1}
json_data = json.dumps(data_ret)
@@ -48,6 +53,16 @@ def verifyConn(request):
return HttpResponse(json_data)
def createWebsite(request):
+ data = json.loads(request.body)
+ adminUser = data['adminUser']
+ admin = Administrator.objects.get(userName=adminUser)
+
+ if admin.api == 0:
+ data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0,
+ 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
wm = WebsiteManager()
return wm.createWebsiteAPI(json.loads(request.body))
@@ -63,6 +78,11 @@ def getUserInfo(request):
admin = Administrator.objects.get(userName=adminUser)
+ if admin.api == 0:
+ data_ret = {"status": 0, 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
if hashPassword.check_password(admin.password, adminPass):
pass
else:
@@ -106,6 +126,11 @@ def changeUserPassAPI(request):
admin = Administrator.objects.get(userName=adminUser)
+ if admin.api == 0:
+ data_ret = {"changeStatus": 0, 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
if hashPassword.check_password(admin.password, adminPass):
pass
else:
@@ -143,6 +168,11 @@ def changePackageAPI(request):
admin = Administrator.objects.get(userName=adminUser)
+ if admin.api == 0:
+ data_ret = {"changePackage": 0, 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
if hashPassword.check_password(admin.password, adminPass):
pass
else:
@@ -173,12 +203,19 @@ def deleteWebsite(request):
try:
if request.method == 'POST':
data = json.loads(request.body)
- data['websiteName'] = data['domainName']
+
adminUser = data['adminUser']
adminPass = data['adminPass']
admin = Administrator.objects.get(userName=adminUser)
+ if admin.api == 0:
+ data_ret = {"websiteDeleteStatus": 0, 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
+ data['websiteName'] = data['domainName']
+
if hashPassword.check_password(admin.password, adminPass):
pass
else:
@@ -212,6 +249,11 @@ def submitWebsiteStatus(request):
admin = Administrator.objects.get(userName=adminUser)
+ if admin.api == 0:
+ data_ret = {"websiteStatus": 0, 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
if hashPassword.check_password(admin.password, adminPass):
pass
else:
@@ -235,6 +277,11 @@ def loginAPI(request):
admin = Administrator.objects.get(userName=username)
+ if admin.api == 0:
+ data_ret = {"userID": 0, 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
if hashPassword.check_password(admin.password, password):
request.session['userID'] = admin.pk
return redirect(renderBase)
@@ -255,6 +302,11 @@ def fetchSSHkey(request):
admin = Administrator.objects.get(userName=username)
+ if admin.api == 0:
+ data_ret = {"status": 0, 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
if hashPassword.check_password(admin.password, password):
pubKey = os.path.join("/root",".ssh",'cyberpanel.pub')
@@ -290,11 +342,18 @@ def remoteTransfer(request):
data = json.loads(request.body)
username = data['username']
password = data['password']
- ipAddress = data['ipAddress']
- accountsToTransfer = data['accountsToTransfer']
+
admin = Administrator.objects.get(userName=username)
+ if admin.api == 0:
+ data_ret = {"transferStatus": 0, 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
+ ipAddress = data['ipAddress']
+ accountsToTransfer = data['accountsToTransfer']
+
if hashPassword.check_password(admin.password, password):
dir = str(randint(1000, 9999))
@@ -335,6 +394,12 @@ def fetchAccountsFromRemoteServer(request):
password = data['password']
admin = Administrator.objects.get(userName=username)
+
+ if admin.api == 0:
+ data_ret = {"fetchStatus": 0, 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
if hashPassword.check_password(admin.password, password):
records = Websites.objects.all()
@@ -377,13 +442,20 @@ def FetchRemoteTransferStatus(request):
username = data['username']
password = data['password']
+ admin = Administrator.objects.get(userName=username)
+
+ if admin.api == 0:
+ data_ret = {"fetchStatus": 0, 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
dir = "/home/backup/transfer-"+str(data['dir'])+"/backup_log"
try:
command = "sudo cat "+ dir
status = ProcessUtilities.outputExecutioner(command)
- admin = Administrator.objects.get(userName=username)
+
if hashPassword.check_password(admin.password, password):
final_json = json.dumps({'fetchStatus': 1, 'error_message': "None", "status": status})
@@ -409,10 +481,18 @@ def cancelRemoteTransfer(request):
data = json.loads(request.body)
username = data['username']
password = data['password']
- dir = "/home/backup/transfer-"+str(data['dir'])
admin = Administrator.objects.get(userName=username)
+ if admin.api == 0:
+ data_ret = {"cancelStatus": 0, 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
+ dir = "/home/backup/transfer-"+str(data['dir'])
+
+
+
if hashPassword.check_password(admin.password, password):
path = dir + "/pid"
@@ -453,6 +533,11 @@ def cyberPanelVersion(request):
admin = Administrator.objects.get(userName=adminUser)
+ if admin.api == 0:
+ data_ret = {"getVersion": 0, 'error_message': "API Access Disabled."}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
if hashPassword.check_password(admin.password, adminPass):
Version = version.objects.get(pk=1)
@@ -482,167 +567,6 @@ def cyberPanelVersion(request):
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
-def putSSHkey(request):
- try:
- if request.method == 'POST':
-
- data = json.loads(request.body)
-
- adminUser = data['username']
- adminPass = data['password']
- pubKey = data['putSSHKey']
-
-
- admin = Administrator.objects.get(userName=adminUser)
-
- if hashPassword.check_password(admin.password, adminPass):
- keyPath = "/home/cyberpanel/.ssh"
-
- if not os.path.exists(keyPath):
- os.makedirs(keyPath)
-
-
- ## writeKey
-
- authorized_keys = keyPath+"/authorized_keys"
- presenseCheck = 0
- try:
- data = open(authorized_keys, "r").readlines()
- for items in data:
- if items.find(pubKey) > -1:
- presenseCheck = 1
- except:
- pass
-
- if presenseCheck == 0:
- writeToFile = open(authorized_keys, 'a')
- writeToFile.writelines("#Added by CyberPanel\n")
- writeToFile.writelines("\n")
- writeToFile.writelines(pubKey)
- writeToFile.writelines("\n")
- writeToFile.close()
-
- ##
-
- command = "sudo chmod g-w /home/cyberpanel"
- ProcessUtilities.executioner(command)
-
- os.chmod(keyPath,0700)
- os.chmod(authorized_keys, 0600)
-
-
- data_ret = {"putSSHKey": 1,
- 'error_message': "None",}
-
- json_data = json.dumps(data_ret)
- return HttpResponse(json_data)
- else:
- data_ret = {"putSSHKey": 0,
- 'error_message': "Could not authorize access to API"}
- json_data = json.dumps(data_ret)
- return HttpResponse(json_data)
-
- except BaseException, msg:
- data_ret = {"putSSHKey": 0,
- 'error_message': str(msg)}
- json_data = json.dumps(data_ret)
- return HttpResponse(json_data)
-
-def changeAdminPassword(request):
- try:
-
- data = json.loads(request.body)
-
- adminPass = data['password']
- randomFile = data['randomFile']
-
- if os.path.exists(randomFile):
- numberOfAdministrator = Administrator.objects.count()
- if numberOfAdministrator == 0:
- ACLManager.createDefaultACLs()
- acl = ACL.objects.get(name='admin')
- token = hashPassword.generateToken('admin', '1234567')
-
- email = 'usman@cyberpersons.com'
- admin = Administrator(userName="admin", password=hashPassword.hash_password(adminPass), type=1, email=email,
- firstName="Cyber", lastName="Panel", acl=acl, token=token)
- admin.save()
-
- vers = version(currentVersion="1.8", build=1)
- vers.save()
-
- package = Package(admin=admin, packageName="Default", diskSpace=1000,
- bandwidth=1000, ftpAccounts=1000, dataBases=1000,
- emailAccounts=1000, allowedDomains=20)
- package.save()
-
- newFWRule = FirewallRules(name="panel", proto="tcp", port="8090")
- newFWRule.save()
-
- newFWRule = FirewallRules(name="http", proto="tcp", port="80")
- newFWRule.save()
-
- newFWRule = FirewallRules(name="https", proto="tcp", port="443")
- newFWRule.save()
-
- newFWRule = FirewallRules(name="ftp", proto="tcp", port="21")
- newFWRule.save()
-
- newFWRule = FirewallRules(name="smtp", proto="tcp", port="25")
- newFWRule.save()
-
- newFWRule = FirewallRules(name="smtps", proto="tcp", port="587")
- newFWRule.save()
-
- newFWRule = FirewallRules(name="ssmtp", proto="tcp", port="465")
- newFWRule.save()
-
- newFWRule = FirewallRules(name="pop3", proto="tcp", port="110")
- newFWRule.save()
-
- newFWRule = FirewallRules(name="imap", proto="tcp", port="143")
- newFWRule.save()
-
- newFWRule = FirewallRules(name="simap", proto="tcp", port="993")
- newFWRule.save()
-
- newFWRule = FirewallRules(name="dns", proto="udp", port="53")
- newFWRule.save()
-
- newFWRule = FirewallRules(name="dnstcp", proto="tcp", port="53")
- newFWRule.save()
-
- newFWRule = FirewallRules(name="ftptls", proto="tcp", port="40110-40210")
- newFWRule.save()
-
- data_ret = {"changed": 1,
- 'error_message': "None"}
- json_data = json.dumps(data_ret)
- return HttpResponse(json_data)
- os.remove(randomFile)
- token = hashPassword.generateToken('admin', adminPass)
- admin = Administrator.objects.get(userName="admin")
- admin.password = hashPassword.hash_password(adminPass)
- admin.token = token
- admin.save()
- data_ret = {"changed": 1,
- 'error_message': "None"}
-
- json_data = json.dumps(data_ret)
- return HttpResponse(json_data)
- else:
- data_ret = {"changed": 0,
- 'error_message': "Failed to authorize access to change password!"}
-
- json_data = json.dumps(data_ret)
- return HttpResponse(json_data)
- except BaseException, msg:
- data_ret = {"changed": 0,
- 'error_message': str(msg)}
-
- json_data = json.dumps(data_ret)
- return HttpResponse(json_data)
-
def runAWSBackups(request):
try:
diff --git a/baseTemplate/templates/baseTemplate/index.html b/baseTemplate/templates/baseTemplate/index.html
index 8535e47ca..f16582147 100644
--- a/baseTemplate/templates/baseTemplate/index.html
+++ b/baseTemplate/templates/baseTemplate/index.html
@@ -401,6 +401,9 @@
{% trans "Modify ACL" %}
+ {% trans "API Access" %}
+
diff --git a/cloudAPI/views.py b/cloudAPI/views.py
index a1855b50a..d4b09a974 100644
--- a/cloudAPI/views.py
+++ b/cloudAPI/views.py
@@ -17,6 +17,9 @@ def router(request):
cm = CloudManager(data, admin)
+ if admin.api == 0:
+ return cm.ajaxPre(0, 'API Access Disabled.')
+
if controller == 'statusFunc':
pass
else:
diff --git a/containerization/container.py b/containerization/container.py
old mode 100755
new mode 100644
diff --git a/dockerManager/container.py b/dockerManager/container.py
index 43387a0fb..fa9d4ef59 100644
--- a/dockerManager/container.py
+++ b/dockerManager/container.py
@@ -86,6 +86,8 @@ class ContainerManager(multi.Thread):
execPath = "sudo python /usr/local/CyberCP/dockerManager/dockerInstall.py"
ProcessUtilities.executioner(execPath)
+ time.sleep(2)
+
except BaseException, msg:
logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, str(msg) + ' [404].', 1)
diff --git a/dockerManager/dockerInstall.py b/dockerManager/dockerInstall.py
index 420d890fa..beaf3af80 100644
--- a/dockerManager/dockerInstall.py
+++ b/dockerManager/dockerInstall.py
@@ -2,7 +2,6 @@
import sys
sys.path.append('/usr/local/CyberCP')
import plogical.CyberCPLogFileWriter as logging
-from plogical.mailUtilities import mailUtilities
from serverStatus.serverStatusUtil import ServerStatusUtil
from plogical.processUtilities import ProcessUtilities
import time
@@ -14,8 +13,6 @@ class DockerInstall:
def submitInstallDocker():
try:
- mailUtilities.checkHome()
-
statusFile = open(ServerStatusUtil.lswsInstallStatusPath, 'w')
logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath,
diff --git a/firewall/firewallManager.py b/firewall/firewallManager.py
index 6d2843a5f..9e2ee9a8d 100644
--- a/firewall/firewallManager.py
+++ b/firewall/firewallManager.py
@@ -248,8 +248,8 @@ class FirewallManager:
command = 'sudo systemctl status firewalld'
status = ProcessUtilities.outputExecutioner(command)
- if status.find("active") > -1:
- final_dic = {'status': 1, 'error_message': "none", 'firewallStatus': 1}
+ if status.find("dead") > -1:
+ final_dic = {'status': 1, 'error_message': "none", 'firewallStatus': 0}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
else:
@@ -552,8 +552,6 @@ class FirewallManager:
})
return HttpResponse(final_json)
- installUtilities.reStartLiteSpeed()
-
final_json = json.dumps({
'error_message': "None",
'requestStatus': installStatus,
@@ -790,7 +788,6 @@ class FirewallManager:
output = ProcessUtilities.outputExecutioner(execPath)
if output.find("1,None") > -1:
- installUtilities.reStartLiteSpeed()
data_ret = {'saveStatus': 1, 'error_message': "None"}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
@@ -846,7 +843,6 @@ class FirewallManager:
output = ProcessUtilities.outputExecutioner(execPath)
if output.find("1,None") > -1:
- installUtilities.reStartLiteSpeed()
data_ret = {'saveStatus': 1, 'error_message': "None"}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
@@ -971,7 +967,6 @@ class FirewallManager:
output = ProcessUtilities.outputExecutioner(execPath).split('\n')
if output.find("1,None") > -1:
- installUtilities.reStartLiteSpeed()
data_ret = {'saveStatus': 1, 'error_message': "None"}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
@@ -1115,7 +1110,6 @@ class FirewallManager:
output = ProcessUtilities.outputExecutioner(execPath)
if output.find("1,None") > -1:
- installUtilities.reStartLiteSpeed()
data_ret = {'installStatus': 1, 'error_message': "None"}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
@@ -1133,7 +1127,6 @@ class FirewallManager:
output = ProcessUtilities.outputExecutioner(execPath)
if output.find("1,None") > -1:
- installUtilities.reStartLiteSpeed()
data_ret = {'installStatus': 1, 'error_message': "None"}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
@@ -1276,7 +1269,6 @@ class FirewallManager:
output = ProcessUtilities.outputExecutioner(execPath)
if output.find("1,None") > -1:
- installUtilities.reStartLiteSpeed()
data_ret = {'saveStatus': 1, 'error_message': "None"}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
diff --git a/install/install.py b/install/install.py
index b7d38eded..3015019b6 100644
--- a/install/install.py
+++ b/install/install.py
@@ -96,22 +96,25 @@ class preFlightsChecks:
def mountTemp(self):
try:
- command = "mkdir -p /root/images/"
+ command = "dd if=/dev/zero of=/usr/.tempdisk bs=100M count=15"
preFlightsChecks.call(command, self.distro, '[mountTemp]',
'mountTemp',
1, 0, os.EX_OSERR)
- command = "dd if=/dev/zero of=/root/images/tmpfile.bin bs=1 count=0 seek=4G"
+ command = "mkfs.ext4 -F /usr/.tempdisk"
preFlightsChecks.call(command, self.distro, '[mountTemp]',
'mountTemp',
1, 0, os.EX_OSERR)
- command = "mkfs.ext4 -F /root/images/tmpfile.bin"
+ command = "mkdir -p /usr/.tmpbak/"
preFlightsChecks.call(command, self.distro, '[mountTemp]',
'mountTemp',
1, 0, os.EX_OSERR)
- command = "mount -o loop,rw,nodev,nosuid,noexec /root/images/tmpfile.bin /tmp"
+ command = "cp -pr /tmp/* /usr/.tmpbak/"
+ subprocess.call(command, shell=True)
+
+ command = "mount -o loop,rw,nodev,nosuid,noexec,nofail /usr/.tempdisk /tmp"
preFlightsChecks.call(command, self.distro, '[mountTemp]',
'mountTemp',
1, 0, os.EX_OSERR)
@@ -121,17 +124,26 @@ class preFlightsChecks:
'mountTemp',
1, 0, os.EX_OSERR)
- command = "mount -o rw,noexec,nosuid,nodev,bind /tmp /var/tmp"
+ command = "cp -pr /usr/.tmpbak/* /tmp/"
+ subprocess.call(command, shell=True)
+
+ command = "rm -rf /usr/.tmpbak"
preFlightsChecks.call(command, self.distro, '[mountTemp]',
'mountTemp',
1, 0, os.EX_OSERR)
- tmp = "/root/images/tmpfile.bin /tmp ext4 loop,rw,noexec,nosuid,nodev 0 0\n"
- varTmp = "/tmp /var/tmp none rw,noexec,nosuid,nodev,bind 0 0\n"
+ command = "mount --bind /tmp /var/tmp"
+ preFlightsChecks.call(command, self.distro, '[mountTemp]',
+ 'mountTemp',
+ 1, 0, os.EX_OSERR)
+
+
+ tmp = "/usr/.tempdisk /tmp ext4 loop,rw,noexec,nosuid,nodev,nofail 0 0\n"
+ varTmp = "/tmp /var/tmp none bind 0 0\n"
fstab = "/etc/fstab"
writeToFile = open(fstab, "a")
- writeToFile.writelines(tmp);
+ writeToFile.writelines(tmp)
writeToFile.writelines(varTmp)
writeToFile.close()
@@ -218,23 +230,23 @@ class preFlightsChecks:
count = 0
if self.distro == ubuntu:
- self.stdOut("Fix sudoers")
- try:
- fileName = '/etc/sudoers'
- data = open(fileName, 'r').readlines()
-
- writeDataToFile = open(fileName, 'w')
- for line in data:
- if line[:5] == '%sudo':
- writeDataToFile.write('%sudo ALL=(ALL:ALL) NOPASSWD: ALL\n')
- else:
- writeDataToFile.write(line)
- writeDataToFile.close()
- except IOError as err:
- self.stdOut("Error in fixing sudoers file: " + str(err), 1, 1, os.EX_OSERR)
+ # self.stdOut("Fix sudoers")
+ # try:
+ # fileName = '/etc/sudoers'
+ # data = open(fileName, 'r').readlines()
+ #
+ # writeDataToFile = open(fileName, 'w')
+ # for line in data:
+ # if line[:5] == '%sudo':
+ # writeDataToFile.write('%sudo ALL=(ALL:ALL) NOPASSWD: ALL\n')
+ # else:
+ # writeDataToFile.write(line)
+ # writeDataToFile.close()
+ # except IOError as err:
+ # self.stdOut("Error in fixing sudoers file: " + str(err), 1, 1, os.EX_OSERR)
self.stdOut("Add Cyberpanel user")
- command = "useradd cyberpanel -m -U -G sudo"
+ command = "adduser --disabled-login cyberpanel"
cmd = shlex.split(command)
res = subprocess.call(cmd)
if res != 0 and res != 9:
@@ -246,33 +258,33 @@ class preFlightsChecks:
preFlightsChecks.stdOut("CyberPanel user added")
else:
- command = "adduser cyberpanel"
+ command = "useradd -s /bin/false cyberpanel"
preFlightsChecks.call(command, self.distro, '[setup_account_cyberpanel]',
'add user cyberpanel',
1, 0, os.EX_OSERR)
- ##
-
- command = "usermod -aG wheel cyberpanel"
- preFlightsChecks.call(command, self.distro, '[setup_account_cyberpanel]',
- 'add user cyberpanel',
- 1, 0, os.EX_OSERR)
+ # ##
+ #
+ # command = "usermod -aG wheel cyberpanel"
+ # preFlightsChecks.call(command, self.distro, '[setup_account_cyberpanel]',
+ # 'add user cyberpanel',
+ # 1, 0, os.EX_OSERR)
###############################
- path = "/etc/sudoers"
-
- data = open(path, 'r').readlines()
-
- writeToFile = open(path, 'w')
-
- for items in data:
- if items.find("wheel ALL=(ALL) NOPASSWD: ALL") > -1:
- writeToFile.writelines("%wheel ALL=(ALL) NOPASSWD: ALL")
- else:
- writeToFile.writelines(items)
-
- writeToFile.close()
+ # path = "/etc/sudoers"
+ #
+ # data = open(path, 'r').readlines()
+ #
+ # writeToFile = open(path, 'w')
+ #
+ # for items in data:
+ # if items.find("wheel ALL=(ALL) NOPASSWD: ALL") > -1:
+ # writeToFile.writelines("%wheel ALL=(ALL) NOPASSWD: ALL")
+ # else:
+ # writeToFile.writelines(items)
+ #
+ # writeToFile.close()
###############################
@@ -708,65 +720,65 @@ class preFlightsChecks:
os._exit(os.EX_OSERR)
def install_gunicorn(self):
- self.stdOut("Install GUnicorn")
+ self.stdOut("Install Gunicorn")
count = 0
- while (1):
- if self.distro == ubuntu:
- command = "pip install gunicorn"
- else:
- command = "easy_install gunicorn"
- res = subprocess.call(shlex.split(command))
- if preFlightsChecks.resFailed(self.distro, res):
- count = count + 1
- preFlightsChecks.stdOut("Unable to install GUNICORN, trying again, try number: " + str(count))
- if count == 3:
- logging.InstallLog.writeToFile("Unable to install GUNICORN, exiting installer! [install_gunicorn]")
- preFlightsChecks.stdOut("Installation failed, consult: /var/log/installLogs.txt")
- os._exit(0)
- else:
- logging.InstallLog.writeToFile("GUNICORN successfully installed!")
- preFlightsChecks.stdOut("GUNICORN successfully installed!")
- break
+ # while (1):
+ # if self.distro == ubuntu:
+ # command = "pip install gunicorn"
+ # else:
+ # command = "easy_install gunicorn"
+ # res = subprocess.call(shlex.split(command))
+ # if preFlightsChecks.resFailed(self.distro, res):
+ # count = count + 1
+ # preFlightsChecks.stdOut("Unable to install GUNICORN, trying again, try number: " + str(count))
+ # if count == 3:
+ # logging.InstallLog.writeToFile("Unable to install GUNICORN, exiting installer! [install_gunicorn]")
+ # preFlightsChecks.stdOut("Installation failed, consult: /var/log/installLogs.txt")
+ # os._exit(0)
+ # else:
+ # logging.InstallLog.writeToFile("GUNICORN successfully installed!")
+ # preFlightsChecks.stdOut("GUNICORN successfully installed!")
+ # break
def setup_gunicorn(self):
try:
os.chdir(self.cwd)
-
- ##
-
- logging.InstallLog.writeToFile("Configuring Gunicorn..")
-
- service = "/etc/systemd/system/gunicorn.service"
- socket = "/etc/systemd/system/gunicorn.socket"
- conf = "/etc/tmpfiles.d/gunicorn.conf"
-
- shutil.copy("gun-configs/gunicorn.service", service)
- shutil.copy("gun-configs/gunicorn.socket", socket)
- shutil.copy("gun-configs/gunicorn.conf", conf)
-
- logging.InstallLog.writeToFile("Gunicorn Configured!")
-
- ### Enable at system startup
-
- count = 0
-
- while (1):
- command = "systemctl enable gunicorn.socket"
- res = subprocess.call(shlex.split(command))
-
- if preFlightsChecks.resFailed(self.distro, res):
- count = count + 1
- preFlightsChecks.stdOut("Trying to enable Gunicorn at system startup, try number: " + str(count))
- if count == 3:
- logging.InstallLog.writeToFile(
- "Gunicorn will not start after system restart, you can manually enable using systemctl enable gunicorn.socket! [setup_gunicorn]")
- preFlightsChecks.stdOut("Installation failed, consult: /var/log/installLogs.txt")
- break
- else:
- logging.InstallLog.writeToFile("Gunicorn can now start after system restart!")
- preFlightsChecks.stdOut("Gunicorn can now start after system restart!")
- break
+ #
+ # ##
+ #
+ # logging.InstallLog.writeToFile("Configuring Gunicorn..")
+ #
+ # service = "/etc/systemd/system/gunicorn.service"
+ # socket = "/etc/systemd/system/gunicorn.socket"
+ # conf = "/etc/tmpfiles.d/gunicorn.conf"
+ #
+ # shutil.copy("gun-configs/gunicorn.service", service)
+ # shutil.copy("gun-configs/gunicorn.socket", socket)
+ # shutil.copy("gun-configs/gunicorn.conf", conf)
+ #
+ # logging.InstallLog.writeToFile("Gunicorn Configured!")
+ #
+ # ### Enable at system startup
+ #
+ # count = 0
+ #
+ # while (1):
+ # command = "systemctl enable gunicorn.socket"
+ # res = subprocess.call(shlex.split(command))
+ #
+ # if preFlightsChecks.resFailed(self.distro, res):
+ # count = count + 1
+ # preFlightsChecks.stdOut("Trying to enable Gunicorn at system startup, try number: " + str(count))
+ # if count == 3:
+ # logging.InstallLog.writeToFile(
+ # "Gunicorn will not start after system restart, you can manually enable using systemctl enable gunicorn.socket! [setup_gunicorn]")
+ # preFlightsChecks.stdOut("Installation failed, consult: /var/log/installLogs.txt")
+ # break
+ # else:
+ # logging.InstallLog.writeToFile("Gunicorn can now start after system restart!")
+ # preFlightsChecks.stdOut("Gunicorn can now start after system restart!")
+ # break
except BaseException, msg:
logging.InstallLog.writeToFile(str(msg) + " [setup_gunicorn]")
@@ -956,8 +968,11 @@ class preFlightsChecks:
'CyberPanel Migrate',1, 1, os.EX_OSERR)
+ if not os.path.exists("/usr/local/CyberCP/public"):
+ os.mkdir("/usr/local/CyberCP/public")
+
## Moving static content to lscpd location
- command = 'mv static /usr/local/lscp/cyberpanel'
+ command = 'mv static /usr/local/CyberCP/public/'
preFlightsChecks.call(command, self.distro, '[download_install_CyberPanel]',
'Move static content', 1, 1, os.EX_OSERR)
@@ -965,41 +980,49 @@ class preFlightsChecks:
###### fix Core CyberPanel permissions
command = "find /usr/local/CyberCP -type d -exec chmod 0755 {} \;"
- preFlightsChecks.call(command, self.distro, '[download_install_CyberPanel]',
+ preFlightsChecks.call(command, self.distro, '[fixCyberPanelPermissions]',
'fix permissions /usr/local/CyberCP', 1, 0, os.EX_OSERR)
command = "find /usr/local/CyberCP -type f -exec chmod 0644 {} \;"
- preFlightsChecks.call(command, self.distro, '[download_install_CyberPanel]',
+ preFlightsChecks.call(command, self.distro, '[fixCyberPanelPermissions]',
'fix permissions /usr/local/CyberCP', 1, 0, os.EX_OSERR)
command = "chmod -R 755 /usr/local/CyberCP/bin"
- preFlightsChecks.call(command, self.distro, '[download_install_CyberPanel]',
+ preFlightsChecks.call(command, self.distro, '[fixCyberPanelPermissions]',
'fix permissions /usr/local/CyberCP', 1, 0, os.EX_OSERR)
## change owner
command = "chown -R root:root /usr/local/CyberCP"
- preFlightsChecks.call(command, self.distro, '[download_install_CyberPanel]',
+ preFlightsChecks.call(command, self.distro, '[fixCyberPanelPermissions]',
'change owner /usr/local/CyberCP', 1, 0, os.EX_OSERR)
########### Fix LSCPD
command = "find /usr/local/lscp -type d -exec chmod 0755 {} \;"
- preFlightsChecks.call(command, self.distro, '[download_install_CyberPanel]',
+ preFlightsChecks.call(command, self.distro, '[fixCyberPanelPermissions]',
'fix permissions /usr/local/CyberCP', 1, 0, os.EX_OSERR)
command = "find /usr/local/lscp -type f -exec chmod 0644 {} \;"
- preFlightsChecks.call(command, self.distro, '[download_install_CyberPanel]',
+ preFlightsChecks.call(command, self.distro, '[fixCyberPanelPermissions]',
'fix permissions /usr/local/CyberCP', 1, 0, os.EX_OSERR)
command = "chmod -R 755 /usr/local/lscp/bin"
- preFlightsChecks.call(command, self.distro, '[download_install_CyberPanel]',
+ preFlightsChecks.call(command, self.distro, '[fixCyberPanelPermissions]',
+ 'fix permissions /usr/local/CyberCP', 1, 0, os.EX_OSERR)
+
+ command = "chmod -R 755 /usr/local/lscp/fcgi-bin"
+ preFlightsChecks.call(command, self.distro, '[fixCyberPanelPermissions]',
+ 'fix permissions /usr/local/CyberCP', 1, 0, os.EX_OSERR)
+
+ command = "chown -R lscpd:lscpd /usr/local/CyberCP/public/rainloop/data"
+ preFlightsChecks.call(command, self.distro, '[fixCyberPanelPermissions]',
'fix permissions /usr/local/CyberCP', 1, 0, os.EX_OSERR)
## change owner
command = "chown -R root:root /usr/local/lscp"
- preFlightsChecks.call(command, self.distro, '[download_install_CyberPanel]',
+ preFlightsChecks.call(command, self.distro, '[fixCyberPanelPermissions]',
'change owner /usr/local/CyberCP', 1, 0, os.EX_OSERR)
@@ -1032,7 +1055,10 @@ class preFlightsChecks:
def download_install_phpmyadmin(self):
try:
- os.chdir("/usr/local/lscp/cyberpanel/")
+ if not os.path.exists("/usr/local/CyberCP/public"):
+ os.mkdir("/usr/local/CyberCP/public")
+
+ os.chdir("/usr/local/CyberCP/public")
command = 'composer create-project phpmyadmin/phpmyadmin'
preFlightsChecks.call(command, self.distro, '[download_install_phpmyadmin]',
@@ -1053,13 +1079,13 @@ class preFlightsChecks:
else:
writeToFile.writelines(items)
- writeToFile.writelines("$cfg['TempDir'] = '/usr/local/lscp/cyberpanel/phpmyadmin/tmp';\n")
+ writeToFile.writelines("$cfg['TempDir'] = '/usr/local/CyberCP/public/phpmyadmin/tmp';\n")
writeToFile.close()
- os.mkdir('/usr/local/lscp/cyberpanel/phpmyadmin/tmp')
+ os.mkdir('/usr/local/CyberCP/public/phpmyadmin/tmp')
- command = 'chown -R lscpd:lscpd /usr/local/lscp/cyberpanel/phpmyadmin'
+ command = 'chown -R lscpd:lscpd /usr/local/CyberCP/public/phpmyadmin'
subprocess.call(shlex.split(command))
except BaseException, msg:
@@ -2027,31 +2053,13 @@ class preFlightsChecks:
def downoad_and_install_raindloop(self):
try:
- ###########
- count = 0
-
- while (1):
- command = 'chown -R lscpd:lscpd /usr/local/lscp/cyberpanel/'
- cmd = shlex.split(command)
- res = subprocess.call(cmd)
-
- if preFlightsChecks.resFailed(self.distro, res):
- count = count + 1
- preFlightsChecks.stdOut(
- "Trying to change owner for /usr/local/lscp/cyberpanel/, trying again, try number: " + str(
- count))
- if count == 3:
- logging.InstallLog.writeToFile(
- "Failed to change owner for /usr/local/lscp/cyberpanel/, but installer can continue! [downoad_and_install_raindloop]")
- break
- else:
- logging.InstallLog.writeToFile("Owner changed for /usr/local/lscp/cyberpanel/!")
- preFlightsChecks.stdOut("Owner changed for /usr/local/lscp/cyberpanel/!")
- break
#######
- os.chdir("/usr/local/lscp/cyberpanel")
+ if not os.path.exists("/usr/local/CyberCP/public"):
+ os.mkdir("/usr/local/CyberCP/public")
+
+ os.chdir("/usr/local/CyberCP/public")
count = 1
@@ -2079,7 +2087,7 @@ class preFlightsChecks:
count = 0
while (1):
- command = 'unzip rainloop-community-latest.zip -d /usr/local/lscp/cyberpanel/rainloop'
+ command = 'unzip rainloop-community-latest.zip -d /usr/local/CyberCP/public/rainloop'
cmd = shlex.split(command)
@@ -2101,7 +2109,7 @@ class preFlightsChecks:
#######
- os.chdir("/usr/local/lscp/cyberpanel/rainloop")
+ os.chdir("/usr/local/CyberCP/public/rainloop")
count = 0
@@ -2148,29 +2156,6 @@ class preFlightsChecks:
break
######
- count = 0
-
- while (1):
-
- command = 'chown -R lscpd:lscpd .'
- cmd = shlex.split(command)
- res = subprocess.call(cmd)
-
- if preFlightsChecks.resFailed(self.distro, res):
- count = count + 1
- preFlightsChecks.stdOut(
- "Trying to change owner for Rainloop, trying again, try number: " + str(count))
- if count == 3:
- logging.InstallLog.writeToFile(
- "Failed to change owner for Rainloop, so you will not be able to send emails!! [downoad_and_install_raindloop]")
- break
- else:
- logging.InstallLog.writeToFile("Rainloop owner changed!")
- preFlightsChecks.stdOut("Rainloop owner changed!")
- break
-
-
-
except OSError, msg:
logging.InstallLog.writeToFile(str(msg) + " [downoad_and_install_rainloop]")
@@ -2380,6 +2365,7 @@ class preFlightsChecks:
self.setupComodoRules()
self.setupPort()
+ self.setupPythonWSGI()
logging.InstallLog.writeToFile("LSCPD successfully installed!")
@@ -2428,7 +2414,7 @@ class preFlightsChecks:
SecAuditLogParts AFH
SecAuditLogType Serial
SecAuditLog /usr/local/lscp/logs/auditmodsec.log
- SecRuleEngine On
+ SecRuleEngine Off
`
modsecurity_rules_file /usr/local/lscp/modsec/comodo/modsecurity.conf
modsecurity_rules_file /usr/local/lscp/modsec/comodo/00_Init_Initialization.conf
@@ -2492,6 +2478,41 @@ class preFlightsChecks:
except:
return 0
+ def setupPythonWSGI(self):
+ try:
+
+ command = "wget http://www.litespeedtech.com/packages/lsapi/wsgi-lsapi-1.4.tgz"
+ preFlightsChecks.call(command, self.distro, '[setupPythonWSGI]',
+ 'setupPythonWSGI',
+ 1, 0, os.EX_OSERR)
+
+ command = "tar xf wsgi-lsapi-1.4.tgz"
+ preFlightsChecks.call(command, self.distro, '[setupPythonWSGI]',
+ 'setupPythonWSGI',
+ 1, 0, os.EX_OSERR)
+
+ os.chdir("wsgi-lsapi-1.4")
+
+ command = "python ./configure.py"
+ preFlightsChecks.call(command, self.distro, '[setupPythonWSGI]',
+ 'setupPythonWSGI',
+ 1, 0, os.EX_OSERR)
+
+ command = "make"
+ preFlightsChecks.call(command, self.distro, '[setupPythonWSGI]',
+ 'setupPythonWSGI',
+ 1, 0, os.EX_OSERR)
+
+ command = "cp lswsgi /usr/local/CyberCP/bin/"
+ preFlightsChecks.call(command, self.distro, '[setupPythonWSGI]',
+ 'setupPythonWSGI',
+ 1, 0, os.EX_OSERR)
+
+ os.chdir(self.cwd)
+
+ except:
+ return 0
+
def setupLSCPDDaemon(self):
try:
@@ -2529,6 +2550,27 @@ class preFlightsChecks:
##
+ path = "/usr/local/lscpd/admin/"
+
+ command = "mkdir -p " + path
+ cmd = shlex.split(command)
+ res = subprocess.call(cmd)
+
+ path = "/usr/local/CyberCP/conf/"
+ command = "mkdir -p " + path
+ cmd = shlex.split(command)
+ res = subprocess.call(cmd)
+
+ path = "/usr/local/CyberCP/conf/token_env"
+ writeToFile = open(path, "w")
+ writeToFile.write("abc\n")
+ writeToFile.close()
+
+
+ command = "chmod 600 " + path
+ cmd = shlex.split(command)
+ res = subprocess.call(cmd)
+
count = 1
while (1):
@@ -2885,45 +2927,8 @@ class preFlightsChecks:
command = "pip uninstall --yes certbot"
res = subprocess.call(shlex.split(command))
- count = 0
- while (1):
- command = "pip install http://" + preFlightsChecks.cyberPanelMirror + "/pyOpenSSL-17.5.0.tar.gz"
-
- res = subprocess.call(shlex.split(command))
-
- if preFlightsChecks.resFailed(self.distro, res):
- count = count + 1
- preFlightsChecks.stdOut(
- "Trying to install pyOpenSSL, trying again, try number: " + str(count))
- if count == 3:
- logging.InstallLog.writeToFile(
- "Failed to install pyOpenSSL, exiting installer! [installCertBot]")
- preFlightsChecks.stdOut("Installation failed, consult: /var/log/installLogs.txt")
- os._exit(0)
- else:
- logging.InstallLog.writeToFile("pyOpenSSL successfully installed! [pip]")
- preFlightsChecks.stdOut("pyOpenSSL successfully installed! [pip]")
- break
-
- count = 0
- while (1):
- command = "pip install http://" + preFlightsChecks.cyberPanelMirror + "/certbot-0.21.1.tar.gz"
-
- res = subprocess.call(shlex.split(command))
-
- if preFlightsChecks.resFailed(self.distro, res):
- count = count + 1
- preFlightsChecks.stdOut(
- "Trying to install CertBot, trying again, try number: " + str(count))
- if count == 3:
- logging.InstallLog.writeToFile(
- "Failed to install CertBot, exiting installer! [installCertBot]")
- preFlightsChecks.stdOut("Installation failed, consult: /var/log/installLogs.txt")
- os._exit(0)
- else:
- logging.InstallLog.writeToFile("CertBot successfully installed! [pip]")
- preFlightsChecks.stdOut("CertBot successfully installed! [pip]")
- break
+ command = 'wget -O - https://get.acme.sh | sh'
+ subprocess.call(command, shell=True)
except OSError, msg:
logging.InstallLog.writeToFile(str(msg) + " [installCertBot]")
@@ -3321,8 +3326,8 @@ milter_default_action = accept
preFlightsChecks.stdOut("Python project dependant modules installed successfully!!")
break
- command = "systemctl restart gunicorn.socket"
- res = subprocess.call(shlex.split(command))
+ # command = "systemctl restart gunicorn.socket"
+ # res = subprocess.call(shlex.split(command))
command = "virtualenv --system-site-packages /usr/local/CyberCP"
res = subprocess.call(shlex.split(command))
@@ -3509,8 +3514,7 @@ def main():
else:
installCyberPanel.Main(cwd, mysql, distro, ent, serial, port)
- checks.installLSCPD()
- checks.setupLSCPDDaemon()
+
checks.setupPHPAndComposer()
checks.fix_selinux_issue()
checks.install_psmisc()
@@ -3521,8 +3525,6 @@ def main():
checks.install_unzip()
checks.install_zip()
checks.install_rsync()
- checks.downoad_and_install_raindloop()
- checks.download_install_phpmyadmin()
checks.installFirewalld()
@@ -3535,6 +3537,8 @@ def main():
checks.installPYDNS()
checks.installDockerPY()
checks.download_install_CyberPanel(installCyberPanel.InstallCyberPanel.mysqlPassword, mysql)
+ checks.downoad_and_install_raindloop()
+ checks.download_install_phpmyadmin()
checks.setupCLI()
checks.setup_cron()
checks.installTLDExtract()
@@ -3547,6 +3551,8 @@ def main():
checks.modSecPreReqs()
checks.setupVirtualEnv(distro)
+ checks.installLSCPD()
+ checks.setupLSCPDDaemon()
checks.fixCyberPanelPermissions()
diff --git a/install/lscp.tar.gz b/install/lscp.tar.gz
index c346f5bee..d25248420 100644
Binary files a/install/lscp.tar.gz and b/install/lscp.tar.gz differ
diff --git a/loginSystem/models.py b/loginSystem/models.py
index 8cad9f8d2..c450eaadb 100644
--- a/loginSystem/models.py
+++ b/loginSystem/models.py
@@ -81,6 +81,7 @@ class Administrator(models.Model):
type = models.IntegerField()
owner = models.IntegerField(default=1)
token = models.CharField(max_length=500, default='None')
+ api = models.IntegerField(default=0)
initWebsitesLimit = models.IntegerField(default=0)
acl = models.ForeignKey(ACL, default=1)
diff --git a/loginSystem/views.py b/loginSystem/views.py
index cf66976fc..737960567 100644
--- a/loginSystem/views.py
+++ b/loginSystem/views.py
@@ -149,26 +149,9 @@ def loadLoginPage(request):
numberOfAdministrator = Administrator.objects.count()
password = hashPassword.hash_password('1234567')
+ noOfRules = FirewallRules.objects.count()
- if numberOfAdministrator == 0:
- ACLManager.createDefaultACLs()
- acl = ACL.objects.get(name='admin')
-
- token = hashPassword.generateToken('admin', '1234567')
-
- email = 'usman@cyberpersons.com'
- admin = Administrator(userName="admin", password=password, type=1,email=email,
- firstName="Cyber",lastName="Panel", acl=acl, token=token)
- admin.save()
-
- vers = version(currentVersion="1.8", build=1)
- vers.save()
-
- package = Package(admin=admin, packageName="Default", diskSpace=1000,
- bandwidth=1000, ftpAccounts=1000, dataBases=1000,
- emailAccounts=1000,allowedDomains=20)
- package.save()
-
+ if noOfRules == 0:
newFWRule = FirewallRules(name="panel", proto="tcp", port="8090")
newFWRule.save()
@@ -208,6 +191,24 @@ def loadLoginPage(request):
newFWRule = FirewallRules(name="ftptls", proto="tcp", port="40110-40210")
newFWRule.save()
+ if numberOfAdministrator == 0:
+ ACLManager.createDefaultACLs()
+ acl = ACL.objects.get(name='admin')
+
+ token = hashPassword.generateToken('admin', '1234567')
+
+ email = 'usman@cyberpersons.com'
+ admin = Administrator(userName="admin", password=password, type=1,email=email,
+ firstName="Cyber",lastName="Panel", acl=acl, token=token)
+ admin.save()
+
+ vers = version(currentVersion="1.8", build=1)
+ vers.save()
+
+ package = Package(admin=admin, packageName="Default", diskSpace=1000,
+ bandwidth=1000, ftpAccounts=1000, dataBases=1000,
+ emailAccounts=1000,allowedDomains=20)
+ package.save()
return render(request, 'loginSystem/login.html', {})
else:
return render(request, 'loginSystem/login.html', {})
diff --git a/managePHP/views.py b/managePHP/views.py
index 5f57d3690..186d58250 100644
--- a/managePHP/views.py
+++ b/managePHP/views.py
@@ -1332,7 +1332,6 @@ def getRequestStatus(request):
ext.status = 0
ext.save()
- installUtilities.reStartLiteSpeed()
final_json = json.dumps({'finished': 1, 'extensionRequestStatus': 1,
'error_message': "None",
'requestStatus': requestStatus,
@@ -1349,7 +1348,6 @@ def getRequestStatus(request):
ext.status = 0
ext.save()
- installUtilities.reStartLiteSpeed()
final_json = json.dumps({'finished': 1, 'extensionRequestStatus': 1,
'error_message': "None",
'requestStatus': requestStatus,
@@ -1366,7 +1364,6 @@ def getRequestStatus(request):
ext.status = 0
ext.save()
- installUtilities.reStartLiteSpeed()
final_json = json.dumps({'finished': 1, 'extensionRequestStatus': 1,
'error_message': "None",
'requestStatus': requestStatus,
@@ -1378,7 +1375,6 @@ def getRequestStatus(request):
ext.status = 0
ext.save()
- installUtilities.reStartLiteSpeed()
final_json = json.dumps({'finished': 1, 'extensionRequestStatus': 1,
'error_message': "None",
'requestStatus': requestStatus,
diff --git a/plogical/adminPass.py b/plogical/adminPass.py
index c1521b07f..63d00e003 100644
--- a/plogical/adminPass.py
+++ b/plogical/adminPass.py
@@ -1,29 +1,53 @@
+#!/usr/local/CyberCP/bin/python2
+import os.path
+import sys
+import django
+sys.path.append('/usr/local/CyberCP')
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
+django.setup()
import argparse
-import requests
-import json
-from random import randint
+from loginSystem.models import Administrator, ACL
+from plogical import hashPassword
+from plogical.acl import ACLManager
+from packages.models import Package
+from baseTemplate.models import version
def main():
parser = argparse.ArgumentParser(description='Reset admin user password!')
parser.add_argument('--password', help='New Password')
-
- pathToFile = "/home/cyberpanel/"+str(randint(1000, 9999))
- file = open(pathToFile,"w")
- file.close()
-
args = parser.parse_args()
- finalData = json.dumps({'password': args.password,'randomFile': pathToFile})
- r = requests.post("http://localhost:5003/api/changeAdminPassword", data=finalData,
- verify=False)
+ adminPass = args.password
- data = json.loads(r.text)
+ numberOfAdministrator = Administrator.objects.count()
+ if numberOfAdministrator == 0:
+ ACLManager.createDefaultACLs()
+ acl = ACL.objects.get(name='admin')
+ token = hashPassword.generateToken('admin', '1234567')
- if data['changed'] == 1:
+ email = 'usman@cyberpersons.com'
+ admin = Administrator(userName="admin", password=hashPassword.hash_password(adminPass), type=1, email=email,
+ firstName="Cyber", lastName="Panel", acl=acl, token=token)
+ admin.save()
+
+ vers = version(currentVersion="1.8", build=1)
+ vers.save()
+
+ package = Package(admin=admin, packageName="Default", diskSpace=1000,
+ bandwidth=1000, ftpAccounts=1000, dataBases=1000,
+ emailAccounts=1000, allowedDomains=20)
+ package.save()
print("Admin password successfully changed!")
- else:
- print(data['error_message'])
+ return 1
+
+ token = hashPassword.generateToken('admin', adminPass)
+ admin = Administrator.objects.get(userName="admin")
+ admin.password = hashPassword.hash_password(adminPass)
+ admin.token = token
+ admin.save()
+
+ print("Admin password successfully changed!")
if __name__ == "__main__":
main()
\ No newline at end of file
diff --git a/plogical/installUtilities.py b/plogical/installUtilities.py
index f8b93d00f..2ffa9bbfb 100644
--- a/plogical/installUtilities.py
+++ b/plogical/installUtilities.py
@@ -142,7 +142,7 @@ class installUtilities:
else:
command = "sudo /usr/local/lsws/bin/lswsctrl restart"
- ProcessUtilities.executioner(command)
+ ProcessUtilities.normalExecutioner(command)
except OSError, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [reStartLiteSpeed]")
diff --git a/plogical/modSec.py b/plogical/modSec.py
index 29dc137e7..7b03fe572 100644
--- a/plogical/modSec.py
+++ b/plogical/modSec.py
@@ -8,6 +8,7 @@ import tarfile
import shutil
from mailUtilities import mailUtilities
from processUtilities import ProcessUtilities
+from plogical.installUtilities import installUtilities
class modSec:
@@ -149,6 +150,8 @@ modsecurity_rules_file /usr/local/lsws/conf/modsec/rules.conf
conf.close()
+ installUtilities.reStartLiteSpeed()
+
print "1,None"
return
else:
@@ -181,6 +184,8 @@ modsecurity_rules_file /usr/local/lsws/conf/modsec/rules.conf
conf.close()
+ installUtilities.reStartLiteSpeed()
+
print "1,None"
return
@@ -205,7 +210,7 @@ modsecurity_rules_file /usr/local/lsws/conf/modsec/rules.conf
rulesFile.write(data)
rulesFile.close()
- print data
+ installUtilities.reStartLiteSpeed()
print "1,None"
return
@@ -321,6 +326,7 @@ modsecurity_rules_file /usr/local/lsws/conf/modsec/rules.conf
conf.close()
+ installUtilities.reStartLiteSpeed()
print "1,None"
return
else:
@@ -344,6 +350,7 @@ modsecurity_rules_file /usr/local/lsws/conf/modsec/rules.conf
command = 'sudo chown -R lsadm:lsadm /usr/local/lsws/conf'
subprocess.call(shlex.split(command))
+ installUtilities.reStartLiteSpeed()
print "1,None"
return
@@ -368,6 +375,7 @@ modsecurity_rules_file /usr/local/lsws/conf/modsec/rules.conf
conf.writelines(items)
conf.close()
+ installUtilities.reStartLiteSpeed()
print "1,None"
@@ -376,6 +384,8 @@ modsecurity_rules_file /usr/local/lsws/conf/modsec/rules.conf
shutil.rmtree('/usr/local/lsws/conf/comodo_litespeed')
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg) + ' [disableComodo]')
+
+ installUtilities.reStartLiteSpeed()
print "1,None"
@@ -520,6 +530,8 @@ modsecurity_rules_file /usr/local/lsws/conf/modsec/owasp/rules/RESPONSE-999-EXCL
command = 'mv ' + completePath + ' ' + completePathBak
ProcessUtilities.executioner(command)
+ installUtilities.reStartLiteSpeed()
+
print "1,None"
except BaseException, msg:
@@ -551,6 +563,8 @@ modsecurity_rules_file /usr/local/lsws/conf/modsec/owasp/rules/RESPONSE-999-EXCL
command = 'mv ' + completePathBak + ' ' + completePath
ProcessUtilities.executioner(command)
+ installUtilities.reStartLiteSpeed()
+
print "1,None"
except BaseException, msg:
diff --git a/plogical/phpUtilities.py b/plogical/phpUtilities.py
index b267941f6..9c10c8f17 100644
--- a/plogical/phpUtilities.py
+++ b/plogical/phpUtilities.py
@@ -33,12 +33,15 @@ class phpUtilities:
writeToFile.writelines("PHP Extension Installed.\n")
writeToFile.close()
+ installUtilities.installUtilities.reStartLiteSpeed()
+
return 1
except:
writeToFile = open(phpUtilities.installLogPath, 'a')
writeToFile.writelines("Can not be installed.\n")
writeToFile.close()
logging.CyberCPLogFileWriter.writeToFile("[Could not Install]")
+ installUtilities.installUtilities.reStartLiteSpeed()
return 0
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[installPHPExtension]")
@@ -64,12 +67,14 @@ class phpUtilities:
writeToFile = open(phpUtilities.installLogPath, 'a')
writeToFile.writelines("PHP Extension Removed.\n")
writeToFile.close()
+ installUtilities.installUtilities.reStartLiteSpeed()
return 1
except:
writeToFile = open(phpUtilities.installLogPath, 'a')
writeToFile.writelines("Can not un-install Extension.\n")
writeToFile.close()
logging.CyberCPLogFileWriter.writeToFile("[Could not Install]")
+ installUtilities.installUtilities.reStartLiteSpeed()
return 0
except BaseException, msg:
diff --git a/plogical/processUtilities.py b/plogical/processUtilities.py
index 0345cd33a..f17517bd7 100644
--- a/plogical/processUtilities.py
+++ b/plogical/processUtilities.py
@@ -2,13 +2,29 @@ from CyberCPLogFileWriter import CyberCPLogFileWriter as logging
import subprocess
import shlex
import os
+import socket
+import threading as multi
-class ProcessUtilities:
+class ProcessUtilities(multi.Thread):
litespeedProcess = "litespeed"
ent = 1
OLS = 0
centos = 1
ubuntu = 0
+ server_address = '/usr/local/lscpd/admin/comm.sock'
+ token = "2dboNyhseD7ro8rRUsJGy9AlLxJtSjHI"
+
+ def __init__(self, function, extraArgs):
+ multi.Thread.__init__(self)
+ self.function = function
+ self.extraArgs = extraArgs
+
+ def run(self):
+ try:
+ if self.function == 'popen':
+ self.customPoen()
+ except BaseException, msg:
+ logging.writeToFile( str(msg) + ' [ApplicationInstaller.run]')
@staticmethod
def getLitespeedProcessNumber():
@@ -126,37 +142,91 @@ class ProcessUtilities:
except BaseException:
return 0
+ @staticmethod
+ def setupUDSConnection():
+ try:
+ sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+ sock.connect(ProcessUtilities.server_address)
+ return [sock, "None"]
+ except BaseException, msg:
+ logging.writeToFile(str(msg) + ". [setupUDSConnection:138]")
+ return [-1, str(msg)]
+
+ @staticmethod
+ def sendCommand(command):
+ try:
+ ret = ProcessUtilities.setupUDSConnection()
+
+ if ret[0] == -1:
+ return ret[0]
+
+ token = os.environ.get('TOKEN')
+
+ sock = ret[0]
+ sock.sendall(token + command)
+ data = ""
+
+ while (1):
+ currentData = sock.recv(32)
+ if len(currentData) == 0 or currentData == None:
+ break
+ data = data + currentData
+
+ sock.close()
+ logging.writeToFile(data)
+ return data
+ except BaseException, msg:
+ logging.writeToFile(str(msg) + " [sendCommand]")
+ return "0" + str(msg)
+
+
@staticmethod
def executioner(command):
try:
logging.writeToFile(command)
- res = subprocess.call(shlex.split(command))
- if res == 0:
- return 1
- else:
- return 0
+ ProcessUtilities.sendCommand(command)
+ return 1
except BaseException, msg:
+ logging.writeToFile(str(msg) + " [executioner]")
return 0
@staticmethod
def outputExecutioner(command):
- if type(command) == str or type(command) == unicode:
- logging.writeToFile(command)
- return subprocess.check_output(shlex.split(command))
- else:
- command = " ".join(command)
- logging.writeToFile(command + " join")
- return subprocess.check_output(shlex.split(command))
+ try:
+ if type(command) == str or type(command) == unicode:
+ logging.writeToFile(command)
+ else:
+ command = " ".join(command)
+ logging.writeToFile(command)
+
+ return ProcessUtilities.sendCommand(command)
+ except BaseException, msg:
+ logging.writeToFile(str(msg) + "[outputExecutioner:188]")
+
+ def customPoen(self):
+ try:
+ if type(self.extraArgs['command']) == str or type(self.extraArgs['command']) == unicode:
+ command = self.extraArgs['command']
+ logging.writeToFile(self.extraArgs['command'])
+ else:
+ command = " ".join(self.extraArgs['command'])
+ logging.writeToFile(command)
+
+ ProcessUtilities.sendCommand(command)
+
+ return 1
+ except BaseException, msg:
+ logging.writeToFile(str(msg) + " [customPoen]")
@staticmethod
def popenExecutioner(command):
- if type(command) == str or type(command) == unicode:
- logging.writeToFile(command)
- return subprocess.Popen(shlex.split(command))
- else:
- command = " ".join(command)
- logging.writeToFile(command)
- return subprocess.Popen(shlex.split(command))
+ try:
+ extraArgs = {}
+ extraArgs['command'] = command
+ pu = ProcessUtilities("popen", extraArgs)
+ pu.start()
+ except BaseException, msg:
+ logging.writeToFile(str(msg) + " [popenExecutioner]")
diff --git a/plogical/sslUtilities.py b/plogical/sslUtilities.py
index d2508f47d..db67d556e 100644
--- a/plogical/sslUtilities.py
+++ b/plogical/sslUtilities.py
@@ -231,12 +231,8 @@ class sslUtilities:
try:
acmePath = '/root/.acme.sh/acme.sh'
- if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu:
- acmePath = '/home/cyberpanel/.acme.sh/acme.sh'
-
- if not os.path.exists(acmePath):
- command = 'wget -O - https://get.acme.sh | sh'
- subprocess.call(command, shell=True)
+ # if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu:
+ # acmePath = '/home/cyberpanel/.acme.sh/acme.sh'
if aliasDomain == None:
diff --git a/plogical/virtualHostUtilities.py b/plogical/virtualHostUtilities.py
index 6108892b2..41fc8a632 100644
--- a/plogical/virtualHostUtilities.py
+++ b/plogical/virtualHostUtilities.py
@@ -1002,7 +1002,7 @@ class virtualHostUtilities:
def getDiskUsage(path, totalAllowed):
try:
- totalUsageInMB = subprocess.check_output(["sudo", "du", "-hs", path, "--block-size=1M"]).split()[0]
+ totalUsageInMB = ProcessUtilities.outputExecutioner(["sudo", "du", "-hs", path, "--block-size=1M"]).split()[0]
percentage = float(100) / float(totalAllowed)
diff --git a/plogical/website.py b/plogical/website.py
index 3a5c596b6..4e7a9ac3b 100644
--- a/plogical/website.py
+++ b/plogical/website.py
@@ -564,7 +564,7 @@ class WebsiteManager:
execPath = execPath + " findDomainBW --virtualHostName " + self.domain + " --bandwidth " + str(
website.package.bandwidth)
- output = subprocess.check_output(shlex.split(execPath))
+ output = ProcessUtilities.outputExecutioner(execPath)
bwData = output.split(",")
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
@@ -629,7 +629,7 @@ class WebsiteManager:
execPath = execPath + " findDomainBW --virtualHostName " + self.domain + " --bandwidth " + str(
website.package.bandwidth)
- output = subprocess.check_output(shlex.split(execPath))
+ output = ProcessUtilities.outputExecutioner(execPath)
bwData = output.split(",")
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
diff --git a/serverStatus/views.py b/serverStatus/views.py
index 9f9730493..e87be0165 100644
--- a/serverStatus/views.py
+++ b/serverStatus/views.py
@@ -310,6 +310,9 @@ def servicesAction(request):
command = 'sudo systemctl %s %s' % (action, service)
ProcessUtilities.executioner(command)
+ final_dic = {'serviceAction': 1, "error_message": 0}
+ final_json = json.dumps(final_dic)
+ return HttpResponse(final_json)
except BaseException, msg:
@@ -358,10 +361,14 @@ def switchTOLSWSStatus(request):
output = ProcessUtilities.outputExecutioner(command)
if output.find('[404]') > -1:
+ command = "sudo rm -f " + serverStatusUtil.ServerStatusUtil.lswsInstallStatusPath
+ ProcessUtilities.popenExecutioner(command)
data_ret = {'abort': 1, 'requestStatus': output, 'installed': 0}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
elif output.find('[200]') > -1:
+ command = "sudo rm -f " + serverStatusUtil.ServerStatusUtil.lswsInstallStatusPath
+ ProcessUtilities.popenExecutioner(command)
data_ret = {'abort': 1, 'requestStatus': output, 'installed': 1}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
@@ -371,6 +378,8 @@ def switchTOLSWSStatus(request):
return HttpResponse(json_data)
except BaseException, msg:
+ command = "sudo rm -f " + serverStatusUtil.ServerStatusUtil.lswsInstallStatusPath
+ ProcessUtilities.popenExecutioner(command)
data_ret = {'abort': 1, 'requestStatus': str(msg), 'installed': 0}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
@@ -563,7 +572,7 @@ def topProcessesStatus(request):
## CPU Details
command = 'sudo cat /proc/cpuinfo'
- output = subprocess.check_output(shlex.split(command)).splitlines()
+ output = ProcessUtilities.outputExecutioner(command).splitlines()
import psutil
diff --git a/static/userManagment/userManagment.js b/static/userManagment/userManagment.js
index e2685095e..f1591bbb3 100644
--- a/static/userManagment/userManagment.js
+++ b/static/userManagment/userManagment.js
@@ -1419,4 +1419,79 @@ app.controller('resellerCenterCTRL', function($scope,$http) {
};
});
-/* Java script code for reseller center acl */
\ No newline at end of file
+/* Java script code for reseller center acl */
+
+
+/* Java script code for api access */
+app.controller('apiAccessCTRL', function($scope,$http) {
+
+
+ $scope.apiAccessDropDown = true;
+ $scope.cyberpanelLoading = true;
+
+ $scope.showApiAccessDropDown = function () {
+ $scope.apiAccessDropDown = false;
+ };
+
+ $scope.saveChanges = function(){
+
+ $scope.cyberpanelLoading = false;
+
+ var url = "/users/saveChangesAPIAccess";
+
+ var data = {
+ accountUsername:$scope.accountUsername,
+ access:$scope.access,
+ };
+
+ var config = {
+ headers : {
+ 'X-CSRFToken': getCookie('csrftoken')
+ }
+ };
+
+ $http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas);
+
+
+ function ListInitialDatas(response) {
+ $scope.cyberpanelLoading = true;
+
+ if (response.data.status === 1)
+ {
+ $scope.apiAccessDropDown = true;
+ new PNotify({
+ title: 'Success!',
+ text: 'Changes successfully applied!',
+ type:'success'
+ });
+
+ }
+ else{
+ new PNotify({
+ title: 'Error!',
+ text: response.data.error_message,
+ type:'error'
+ });
+ }
+
+
+ }
+ function cantLoadInitialDatas(response) {
+ $scope.cyberpanelLoading = true;
+ new PNotify({
+ title: 'Error!',
+ text: 'Could not connect to server, please refresh this page.',
+ type:'error'
+ });
+ }
+
+
+
+
+
+ };
+
+
+
+});
+/* Java script code for api access */
\ No newline at end of file
diff --git a/userManagment/static/userManagment/userManagment.js b/userManagment/static/userManagment/userManagment.js
index e2685095e..f1591bbb3 100644
--- a/userManagment/static/userManagment/userManagment.js
+++ b/userManagment/static/userManagment/userManagment.js
@@ -1419,4 +1419,79 @@ app.controller('resellerCenterCTRL', function($scope,$http) {
};
});
-/* Java script code for reseller center acl */
\ No newline at end of file
+/* Java script code for reseller center acl */
+
+
+/* Java script code for api access */
+app.controller('apiAccessCTRL', function($scope,$http) {
+
+
+ $scope.apiAccessDropDown = true;
+ $scope.cyberpanelLoading = true;
+
+ $scope.showApiAccessDropDown = function () {
+ $scope.apiAccessDropDown = false;
+ };
+
+ $scope.saveChanges = function(){
+
+ $scope.cyberpanelLoading = false;
+
+ var url = "/users/saveChangesAPIAccess";
+
+ var data = {
+ accountUsername:$scope.accountUsername,
+ access:$scope.access,
+ };
+
+ var config = {
+ headers : {
+ 'X-CSRFToken': getCookie('csrftoken')
+ }
+ };
+
+ $http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas);
+
+
+ function ListInitialDatas(response) {
+ $scope.cyberpanelLoading = true;
+
+ if (response.data.status === 1)
+ {
+ $scope.apiAccessDropDown = true;
+ new PNotify({
+ title: 'Success!',
+ text: 'Changes successfully applied!',
+ type:'success'
+ });
+
+ }
+ else{
+ new PNotify({
+ title: 'Error!',
+ text: response.data.error_message,
+ type:'error'
+ });
+ }
+
+
+ }
+ function cantLoadInitialDatas(response) {
+ $scope.cyberpanelLoading = true;
+ new PNotify({
+ title: 'Error!',
+ text: 'Could not connect to server, please refresh this page.',
+ type:'error'
+ });
+ }
+
+
+
+
+
+ };
+
+
+
+});
+/* Java script code for api access */
\ No newline at end of file
diff --git a/userManagment/templates/userManagment/apiAccess.html b/userManagment/templates/userManagment/apiAccess.html
new file mode 100644
index 000000000..7fbdfb3b7
--- /dev/null
+++ b/userManagment/templates/userManagment/apiAccess.html
@@ -0,0 +1,70 @@
+{% extends "baseTemplate/index.html" %}
+{% load i18n %}
+{% block title %}{% trans "API Access for User - CyberPanel" %}{% endblock %}
+{% block content %}
+
+ {% load static %}
+ {% get_current_language as LANGUAGE_CODE %}
+
+
+
+
+
+
{% trans "API Access" %}
+
{% trans "Allow/Remove API access for account, this effects Cloud Platform Connection and Third Party Modules." %}
+
+
+
+
+
+
+
+
+{% endblock %}
diff --git a/userManagment/urls.py b/userManagment/urls.py
index efb042f1d..6bd16df18 100644
--- a/userManagment/urls.py
+++ b/userManagment/urls.py
@@ -28,4 +28,6 @@ urlpatterns = [
url(r'^changeACLFunc$',views.changeACLFunc,name="changeACLFunc"),
url(r'^resellerCenter$',views.resellerCenter,name="resellerCenter"),
url(r'^saveResellerChanges$',views.saveResellerChanges,name="saveResellerChanges"),
+ url(r'^apiAccess$', views.apiAccess, name="apiAccess"),
+ url(r'^saveChangesAPIAccess$', views.saveChangesAPIAccess, name="saveChangesAPIAccess"),
]
\ No newline at end of file
diff --git a/userManagment/views.py b/userManagment/views.py
index d5976a61b..ba985e7b6 100644
--- a/userManagment/views.py
+++ b/userManagment/views.py
@@ -68,6 +68,54 @@ def createUser(request):
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return redirect(loadLoginPage)
+def apiAccess(request):
+ try:
+ userID = request.session['userID']
+ currentACL = ACLManager.loadedACL(userID)
+
+ if currentACL['admin'] == 1:
+ adminNames = ACLManager.loadDeletionUsers(userID, currentACL)
+ adminNames.append("admin")
+ return render(request, 'userManagment/apiAccess.html', {'acctNames': adminNames})
+ else:
+ return ACLManager.loadError()
+
+ except BaseException, msg:
+ logging.CyberCPLogFileWriter.writeToFile(str(msg))
+ return redirect(loadLoginPage)
+
+
+def saveChangesAPIAccess(request):
+ try:
+ userID = request.session['userID']
+ currentACL = ACLManager.loadedACL(userID)
+ data = json.loads(request.body)
+
+ if currentACL['admin'] != 1:
+ finalResponse = {'status': 0, "error_message": "Only administrators are allowed to perform this task."}
+ json_data = json.dumps(finalResponse)
+ return HttpResponse(json_data)
+ else:
+ accountUsername = data['accountUsername']
+ access = data['access']
+
+ userAcct = Administrator.objects.get(userName=accountUsername)
+
+ if access == "Enable":
+ userAcct.api = 1
+ else:
+ userAcct.api = 0
+
+ userAcct.save()
+
+ finalResponse = {'status': 1}
+ json_data = json.dumps(finalResponse)
+ return HttpResponse(json_data)
+ except BaseException, msg:
+ finalResponse = {'status': 0, 'errorMessage': str(msg), 'error_message': str(msg)}
+ json_data = json.dumps(finalResponse)
+ return HttpResponse(json_data)
+
def submitUserCreation(request):
try: