change auth type for cloud api

This commit is contained in:
usmannasir
2018-11-20 15:43:43 +05:00
parent 0d76751e59
commit 3ffce793cf
15 changed files with 1286 additions and 1553 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.pyc

View File

@@ -10,6 +10,7 @@ class secMiddleware:
def __call__(self, request): def __call__(self, request):
if request.method == 'POST': if request.method == 'POST':
try: try:
logging.writeToFile(request.body)
data = json.loads(request.body) data = json.loads(request.body)
for key, value in data.iteritems(): for key, value in data.iteritems():
if type(value) == str or type(value) == unicode: if type(value) == str or type(value) == unicode:

View File

@@ -560,9 +560,12 @@ def changeAdminPassword(request):
if numberOfAdministrator == 0: if numberOfAdministrator == 0:
ACLManager.createDefaultACLs() ACLManager.createDefaultACLs()
acl = ACL.objects.get(name='admin') acl = ACL.objects.get(name='admin')
token = hashPassword.generateToken('admin', '1234567')
email = 'usman@cyberpersons.com' email = 'usman@cyberpersons.com'
admin = Administrator(userName="admin", password=hashPassword.hash_password(adminPass), type=1, email=email, admin = Administrator(userName="admin", password=hashPassword.hash_password(adminPass), type=1, email=email,
firstName="Cyber", lastName="Panel", acl=acl) firstName="Cyber", lastName="Panel", acl=acl, token=token)
admin.save() admin.save()
vers = version(currentVersion="1.7", build=3) vers = version(currentVersion="1.7", build=3)

File diff suppressed because it is too large Load Diff

View File

@@ -3,16 +3,29 @@ from __future__ import unicode_literals
from cloudManager import CloudManager from cloudManager import CloudManager
import json import json
from loginSystem.models import Administrator
def router(request): def router(request):
try: try:
data = json.loads(request.body) data = json.loads(request.body)
controller = data['controller'] controller = data['controller']
cm = CloudManager(data) serverUserName = data['serverUserName']
admin = Administrator.objects.get(userName=serverUserName)
cm = CloudManager(data, admin)
if controller == 'statusFunc':
pass
else:
if cm.verifyLogin(request)[0] == 1:
pass
else:
return cm.verifyLogin(request)[1]
if controller == 'verifyLogin': if controller == 'verifyLogin':
return cm.verifyLogin() return cm.verifyLogin(request)[1]
elif controller == 'fetchWebsites': elif controller == 'fetchWebsites':
return cm.fetchWebsites() return cm.fetchWebsites()
elif controller == 'fetchWebsiteDataJSON': elif controller == 'fetchWebsiteDataJSON':
@@ -117,6 +130,20 @@ def router(request):
return cm.submitACLModifications(request) return cm.submitACLModifications(request)
elif controller == 'submitPackage': elif controller == 'submitPackage':
return cm.submitPackage(request) return cm.submitPackage(request)
elif controller == 'fetchPackages':
return cm.fetchPackages(request)
elif controller == 'submitPackageDelete':
return cm.submitPackageDelete(request)
elif controller == 'submitPackageModify':
return cm.submitPackageModify(request)
elif controller == 'getDataFromLogFile':
return cm.getDataFromLogFile(request)
elif controller == 'fetchErrorLogs':
return cm.fetchErrorLogs(request)
elif controller == 'submitApplicationInstall':
return cm.submitApplicationInstall(request)
elif controller == 'obtainServer':
return cm.obtainServer(request)
except BaseException, msg: except BaseException, msg:
cm = CloudManager(None) cm = CloudManager(None)

View File

@@ -80,6 +80,7 @@ class Administrator(models.Model):
email = models.CharField(max_length=50) email = models.CharField(max_length=50)
type = models.IntegerField() type = models.IntegerField()
owner = models.IntegerField(default=1) owner = models.IntegerField(default=1)
token = models.CharField(max_length=500, default='None')
initWebsitesLimit = models.IntegerField(default=0) initWebsitesLimit = models.IntegerField(default=0)
acl = models.ForeignKey(ACL, default=1) acl = models.ForeignKey(ACL, default=1)

View File

@@ -30,7 +30,6 @@ def verifyLogin(request):
if request.method == "POST": if request.method == "POST":
data = json.loads(request.body) data = json.loads(request.body)
username = data['username'] username = data['username']
password = data['password'] password = data['password']
@@ -153,9 +152,11 @@ def loadLoginPage(request):
acl = ACL.objects.get(name='admin') acl = ACL.objects.get(name='admin')
token = hashPassword.generateToken('admin', '1234567')
email = 'usman@cyberpersons.com' email = 'usman@cyberpersons.com'
admin = Administrator(userName="admin", password=password, type=1,email=email, admin = Administrator(userName="admin", password=password, type=1,email=email,
firstName="Cyber",lastName="Panel", acl=acl) firstName="Cyber",lastName="Panel", acl=acl, token=token)
admin.save() admin.save()
vers = version(currentVersion="1.7",build=3) vers = version(currentVersion="1.7",build=3)

View File

@@ -1427,7 +1427,7 @@ def getCurrentPHPConfig(request):
elif phpVers == "PHP 7.2": elif phpVers == "PHP 7.2":
phpVers = "php72" phpVers = "php72"
if ProcessUtilities.decideServer() == ProcessUtilities.centos: if ProcessUtilities.decideDistro() == ProcessUtilities.centos:
path = "/usr/local/lsws/ls" + phpVers + "/etc/php.ini" path = "/usr/local/lsws/ls" + phpVers + "/etc/php.ini"
else: else:
initial = phpVers[3] initial = phpVers[3]
@@ -1612,7 +1612,7 @@ def getCurrentAdvancedPHPConfig(request):
elif phpVers == "PHP 7.2": elif phpVers == "PHP 7.2":
phpVers = "php72" phpVers = "php72"
if ProcessUtilities.decideServer() == ProcessUtilities.centos: if ProcessUtilities.decideDistro() == ProcessUtilities.centos:
path = "/usr/local/lsws/ls" + phpVers + "/etc/php.ini" path = "/usr/local/lsws/ls" + phpVers + "/etc/php.ini"
else: else:
initial = phpVers[3] initial = phpVers[3]
@@ -1665,7 +1665,7 @@ def savePHPConfigAdvance(request):
elif phpVers == "PHP 7.2": elif phpVers == "PHP 7.2":
phpVers = "php72" phpVers = "php72"
if ProcessUtilities.decideServer() == ProcessUtilities.centos: if ProcessUtilities.decideDistro() == ProcessUtilities.centos:
path = "/usr/local/lsws/ls" + phpVers + "/etc/php.ini" path = "/usr/local/lsws/ls" + phpVers + "/etc/php.ini"
else: else:
initial = phpVers[3] initial = phpVers[3]

View File

@@ -113,13 +113,13 @@ class PackagesManager:
delPackage = Package.objects.get(packageName=packageName) delPackage = Package.objects.get(packageName=packageName)
delPackage.delete() delPackage.delete()
data_ret = {'deleteStatus': 1, 'error_message': "None"} data_ret = {'status': 1, 'deleteStatus': 1, 'error_message': "None"}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
except BaseException, msg: except BaseException, msg:
data_ret = {'deleteStatus': 0, 'error_message': str(msg)} data_ret = {'status': 0, 'deleteStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
@@ -196,11 +196,11 @@ class PackagesManager:
modifyPack.allowedDomains = data['allowedDomains'] modifyPack.allowedDomains = data['allowedDomains']
modifyPack.save() modifyPack.save()
data_ret = {'saveStatus': 1, 'error_message': "None"} data_ret = {'status': 1, 'saveStatus': 1, 'error_message': "None"}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
except BaseException, msg: except BaseException, msg:
data_ret = {'saveStatus': 0, 'error_message': str(msg)} data_ret = {'status': 0, 'saveStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)

View File

@@ -329,6 +329,15 @@ class ACLManager:
return packNames return packNames
@staticmethod
def loadPackageObjects(userID, finalResponse):
admin = Administrator.objects.get(pk=userID)
if finalResponse['admin'] == 1:
return Package.objects.all()
else:
return admin.package_set.all()
@staticmethod @staticmethod
def findAllSites(currentACL, userID): def findAllSites(currentACL, userID):
websiteNames = [] websiteNames = []

View File

@@ -1,6 +1,6 @@
import uuid import uuid
import hashlib import hashlib
import base64
def hash_password(password): def hash_password(password):
# uuid is used to generate a random number # uuid is used to generate a random number
@@ -11,3 +11,8 @@ def hash_password(password):
def check_password(hashed_password, user_password): def check_password(hashed_password, user_password):
password, salt = hashed_password.split(':') password, salt = hashed_password.split(':')
return password == hashlib.sha256(salt.encode() + user_password.encode()).hexdigest() return password == hashlib.sha256(salt.encode() + user_password.encode()).hexdigest()
def generateToken(serverUserName, serverPassword):
credentials = '{0}:{1}'.format(serverUserName, serverPassword).encode()
encoded_credentials = base64.b64encode(credentials).decode()
return 'Basic {0}'.format(encoded_credentials)

View File

@@ -94,7 +94,7 @@ class phpUtilities:
def savePHPConfigBasic(phpVers,allow_url_fopen,display_errors,file_uploads,allow_url_include,memory_limit,max_execution_time,upload_max_filesize,max_input_time,post_max_size): def savePHPConfigBasic(phpVers,allow_url_fopen,display_errors,file_uploads,allow_url_include,memory_limit,max_execution_time,upload_max_filesize,max_input_time,post_max_size):
try: try:
if ProcessUtilities.decideServer() == ProcessUtilities.centos: if ProcessUtilities.decideDistro() == ProcessUtilities.centos:
path = "/usr/local/lsws/ls" + phpVers + "/etc/php.ini" path = "/usr/local/lsws/ls" + phpVers + "/etc/php.ini"
else: else:
initial = phpVers[3] initial = phpVers[3]

View File

@@ -666,7 +666,7 @@ class WebsiteManager:
if output.find("1,None") > -1: if output.find("1,None") > -1:
final_json = json.dumps( final_json = json.dumps(
{'logstatus': 0, 'error_message': "Not able to fetch logs, see CyberPanel main log file!"}) {'status': 0,'logstatus': 0, 'error_message': "Not able to fetch logs, see CyberPanel main log file!"})
return HttpResponse(final_json) return HttpResponse(final_json)
## get log ends here. ## get log ends here.
@@ -700,7 +700,7 @@ class WebsiteManager:
json_data = json_data + ',' + json.dumps(dic) json_data = json_data + ',' + json.dumps(dic)
json_data = json_data + ']' json_data = json_data + ']'
final_json = json.dumps({'logstatus': 1, 'error_message': "None", "data": json_data}) final_json = json.dumps({'status': 1, 'logstatus': 1, 'error_message': "None", "data": json_data})
return HttpResponse(final_json) return HttpResponse(final_json)
def fetchErrorLogs(self, userID = None, data = None): def fetchErrorLogs(self, userID = None, data = None):
@@ -728,12 +728,12 @@ class WebsiteManager:
if output.find("1,None") > -1: if output.find("1,None") > -1:
final_json = json.dumps( final_json = json.dumps(
{'logstatus': 0, 'error_message': "Not able to fetch logs, see CyberPanel main log file!"}) {'status': 0, 'logstatus': 0, 'error_message': "Not able to fetch logs, see CyberPanel main log file!"})
return HttpResponse(final_json) return HttpResponse(final_json)
## get log ends here. ## get log ends here.
final_json = json.dumps({'logstatus': 1, 'error_message': "None", "data": output}) final_json = json.dumps({'status': 1, 'logstatus': 1, 'error_message': "None", "data": output})
return HttpResponse(final_json) return HttpResponse(final_json)
def getDataFromConfigFile(self, userID = None, data = None): def getDataFromConfigFile(self, userID = None, data = None):
@@ -753,12 +753,12 @@ class WebsiteManager:
configData = subprocess.check_output(shlex.split(command)) configData = subprocess.check_output(shlex.split(command))
if len(configData) == 0: if len(configData) == 0:
status = {"configstatus": 0, "error_message": "Configuration file is currently empty!"} status = {'status': 0, "configstatus": 0, "error_message": "Configuration file is currently empty!"}
final_json = json.dumps(status) final_json = json.dumps(status)
return HttpResponse(final_json) return HttpResponse(final_json)
status = {"configstatus": 1, "configData": configData} status = {'status': 1, "configstatus": 1, "configData": configData}
final_json = json.dumps(status) final_json = json.dumps(status)
return HttpResponse(final_json) return HttpResponse(final_json)
@@ -1257,10 +1257,15 @@ class WebsiteManager:
website = Websites.objects.get(domain=self.domain) website = Websites.objects.get(domain=self.domain)
try:
output = subprocess.check_output(["sudo", "/usr/bin/crontab", "-u", website.externalApp, "-l"])
except:
try: try:
subprocess.call(('sudo', 'crontab', '-u', website.externalApp, '-')) subprocess.call(('sudo', 'crontab', '-u', website.externalApp, '-'))
except: except:
pass data_ret = {'addNewCron': 0, 'error_message': 'Unable to initialise crontab file for user'}
final_json = json.dumps(data_ret)
return HttpResponse(final_json)
output = subprocess.check_output(["sudo", "/usr/bin/crontab", "-u", website.externalApp, "-l"]) output = subprocess.check_output(["sudo", "/usr/bin/crontab", "-u", website.externalApp, "-l"])
@@ -1507,14 +1512,14 @@ class WebsiteManager:
time.sleep(2) time.sleep(2)
data_ret = {'installStatus': 1, 'error_message': 'None', data_ret = {'status': 1, 'installStatus': 1, 'error_message': 'None',
'tempStatusPath': extraArgs['tempStatusPath']} 'tempStatusPath': extraArgs['tempStatusPath']}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
except BaseException, msg: except BaseException, msg:
data_ret = {'installStatus': 0, 'error_message': str(msg)} data_ret = {'status': 0, 'installStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
@@ -1614,7 +1619,7 @@ class WebsiteManager:
if Databases.objects.filter(dbName=dbName).exists() or Databases.objects.filter( if Databases.objects.filter(dbName=dbName).exists() or Databases.objects.filter(
dbUser=dbUser).exists(): dbUser=dbUser).exists():
data_ret = {'installStatus': 0, data_ret = {'status': 0, 'installStatus': 0,
'error_message': "0,This database or user is already taken."} 'error_message': "0,This database or user is already taken."}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
@@ -1624,7 +1629,7 @@ class WebsiteManager:
if result == 1: if result == 1:
pass pass
else: else:
data_ret = {'installStatus': 0, data_ret = {'status': 0, 'installStatus': 0,
'error_message': "0,Not able to create database."} 'error_message': "0,Not able to create database."}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
@@ -1640,7 +1645,7 @@ class WebsiteManager:
if website.master.package.dataBases > website.master.databases_set.all().count(): if website.master.package.dataBases > website.master.databases_set.all().count():
pass pass
else: else:
data_ret = {'installStatus': 0, data_ret = {'status': 0, 'installStatus': 0,
'error_message': "0,Maximum database limit reached for this website."} 'error_message': "0,Maximum database limit reached for this website."}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
@@ -1661,7 +1666,7 @@ class WebsiteManager:
if website.package.dataBases > website.databases_set.all().count(): if website.package.dataBases > website.databases_set.all().count():
pass pass
else: else:
data_ret = {'installStatus': 0, data_ret = {'status': 0, 'installStatus': 0,
'error_message': "0,Maximum database limit reached for this website."} 'error_message': "0,Maximum database limit reached for this website."}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
@@ -1676,7 +1681,7 @@ class WebsiteManager:
db.save() db.save()
if finalPath.find("..") > -1: if finalPath.find("..") > -1:
data_ret = {'installStatus': 0, data_ret = {'status': 0, 'installStatus': 0,
'error_message': "Specified path must be inside virtual host home!"} 'error_message': "Specified path must be inside virtual host home!"}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
@@ -1704,16 +1709,15 @@ class WebsiteManager:
output = subprocess.Popen(shlex.split(execPath)) output = subprocess.Popen(shlex.split(execPath))
data_ret = {"installStatus": 1, 'tempStatusPath': tempStatusPath} data_ret = {'status': 1, "installStatus": 1, 'tempStatusPath': tempStatusPath}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
## Installation ends ## Installation ends
except BaseException, msg: except BaseException, msg:
data_ret = {'installStatus': 0, 'error_message': str(msg)} data_ret = {'status': 0, 'installStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
@@ -1925,7 +1929,7 @@ class WebsiteManager:
time.sleep(2) time.sleep(2)
data_ret = {'installStatus': 1, 'error_message': 'None', data_ret = {'status': 1, 'installStatus': 1, 'error_message': 'None',
'tempStatusPath': extraArgs['tempStatusPath']} 'tempStatusPath': extraArgs['tempStatusPath']}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
@@ -1933,7 +1937,7 @@ class WebsiteManager:
## Installation ends ## Installation ends
except BaseException, msg: except BaseException, msg:
data_ret = {'installStatus': 0, 'error_message': str(msg)} data_ret = {'status': 0, 'installStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)

View File

@@ -92,9 +92,11 @@ def submitUserCreation(request):
else: else:
type = 3 type = 3
token = hashPassword.generateToken(userName, password)
password = hashPassword.hash_password(password) password = hashPassword.hash_password(password)
currentAdmin = Administrator.objects.get(pk=userID) currentAdmin = Administrator.objects.get(pk=userID)
if ACLManager.websitesLimitCheck(currentAdmin, websitesLimit) == 0: if ACLManager.websitesLimitCheck(currentAdmin, websitesLimit) == 0:
data_ret = {'status': 0, 'createStatus': 0, data_ret = {'status': 0, 'createStatus': 0,
'error_message': "You've reached maximum websites limit as a reseller."} 'error_message': "You've reached maximum websites limit as a reseller."}
@@ -112,7 +114,8 @@ def submitUserCreation(request):
password=password, password=password,
initWebsitesLimit=websitesLimit, initWebsitesLimit=websitesLimit,
owner=currentAdmin.pk, owner=currentAdmin.pk,
acl=selectedACL acl=selectedACL,
token=token
) )
newAdmin.save() newAdmin.save()
@@ -126,7 +129,8 @@ def submitUserCreation(request):
password=password, password=password,
initWebsitesLimit=websitesLimit, initWebsitesLimit=websitesLimit,
owner=currentAdmin.pk, owner=currentAdmin.pk,
acl=selectedACL acl=selectedACL,
token=token
) )
newAdmin.save() newAdmin.save()
elif currentACL['createNewUser'] == 1: elif currentACL['createNewUser'] == 1:
@@ -139,7 +143,8 @@ def submitUserCreation(request):
password=password, password=password,
initWebsitesLimit=websitesLimit, initWebsitesLimit=websitesLimit,
owner=currentAdmin.pk, owner=currentAdmin.pk,
acl=selectedACL acl=selectedACL,
token=token
) )
newAdmin.save() newAdmin.save()
else: else:
@@ -228,12 +233,14 @@ def saveModifications(request):
admin = Administrator.objects.get(pk=val) admin = Administrator.objects.get(pk=val)
user = Administrator.objects.get(userName=accountUsername) user = Administrator.objects.get(userName=accountUsername)
token = hashPassword.generateToken(accountUsername, data['password'])
password = hashPassword.hash_password(data['password']) password = hashPassword.hash_password(data['password'])
user.firstName = firstName user.firstName = firstName
user.lastName = lastName user.lastName = lastName
user.email = email user.email = email
user.password = password user.password = password
user.token = token
user.type = 0 user.type = 0
user.save() user.save()

View File

@@ -10,7 +10,10 @@
<div ng-controller="websitePages" class="container"> <div ng-controller="websitePages" class="container">
<div id="page-title"> <div id="page-title">
<h2 ><span id="domainNamePage">{{ domain }}</span> - <a target="_blank" href="{$ previewUrl $}" style="height: 23px;line-height: 21px;" class="btn btn-border btn-alt border-red btn-link font-red" title=""><span>{% trans "Preview" %}</span></a></h2> <h2><span id="domainNamePage">{{ domain }}</span> - <a target="_blank" href="{$ previewUrl $}"
style="height: 23px;line-height: 21px;"
class="btn btn-border btn-alt border-red btn-link font-red"
title=""><span>{% trans "Preview" %}</span></a></h2>
<p>{% trans "All functions related to a particular site." %}</p> <p>{% trans "All functions related to a particular site." %}</p>
</div> </div>
@@ -63,7 +66,6 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
@@ -94,7 +96,6 @@
</div> </div>
</div> </div>
</div> </div>
@@ -151,7 +152,8 @@
<div ng-hide="couldNotFetchLogs" class="alert alert-danger"> <div ng-hide="couldNotFetchLogs" class="alert alert-danger">
<p>{% trans "Could not fetch logs, see the logs file through command line. Error message:" %} {$ errorMessage $}</p> <p>{% trans "Could not fetch logs, see the logs file through command line. Error message:" %}
{$ errorMessage $}</p>
</div> </div>
@@ -160,20 +162,23 @@
</div> </div>
<div ng-hide="fetchedData" class="form-group"> <div ng-hide="fetchedData" class="form-group">
<div class="col-sm-3"> <div class="col-sm-3">
<input placeholder="Search..." ng-model="logSearch" name="dom" type="text" class="form-control" ng-model="domainNameCreate" required> <input placeholder="Search..." ng-model="logSearch" name="dom" type="text"
class="form-control" ng-model="domainNameCreate" required>
</div> </div>
<div class="col-sm-2"> <div class="col-sm-2">
<input placeholder="Page Number" type="number" class="form-control" ng-model="pageNumber" required> <input placeholder="Page Number" type="number" class="form-control"
ng-model="pageNumber" required>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<button ng-click="fetchLogs(3)" type="button" class="btn ra-100 btn-purple">{% trans "Next" %}</button> <button ng-click="fetchLogs(3)" type="button"
<button ng-click="fetchLogs(4)" type="button" class="btn ra-100 btn-purple">{% trans "Previous" %}</button> class="btn ra-100 btn-purple">{% trans "Next" %}</button>
<button ng-click="fetchLogs(4)" type="button"
class="btn ra-100 btn-purple">{% trans "Previous" %}</button>
</div> </div>
<div style="margin-bottom: 1%;" class=" col-sm-1"> <div style="margin-bottom: 1%;" class=" col-sm-1">
@@ -207,36 +212,32 @@
<div ng-hide="hideErrorLogs" class="form-group"> <div ng-hide="hideErrorLogs" class="form-group">
<div class="col-sm-2"> <div class="col-sm-2">
<input placeholder="Page Number" type="number" class="form-control" ng-model="errorPageNumber" required> <input placeholder="Page Number" type="number" class="form-control"
ng-model="errorPageNumber" required>
</div> </div>
<div class="col-sm-9"> <div class="col-sm-9">
<button ng-click="fetchErrorLogs(3)" type="button" class="btn ra-100 btn-purple">{% trans "Next" %}</button> <button ng-click="fetchErrorLogs(3)" type="button"
<button ng-click="fetchErrorLogs(4)" type="button" class="btn ra-100 btn-purple">{% trans "Previous" %}</button> class="btn ra-100 btn-purple">{% trans "Next" %}</button>
<button ng-click="fetchErrorLogs(4)" type="button"
class="btn ra-100 btn-purple">{% trans "Previous" %}</button>
</div> </div>
<div style="margin-bottom: 1%;" class=" col-sm-1"> <div style="margin-bottom: 1%;" class=" col-sm-1">
<a ng-click="hideErrorLogsbtn()" href=""><img src="/static/images/close-32.png"></a> <a ng-click="hideErrorLogsbtn()" href=""><img
src="/static/images/close-32.png"></a>
</div> </div>
<div class="col-sm-12"> <div class="col-sm-12">
<textarea ng-model="errorLogsData" rows="25" class="form-control"></textarea> <textarea ng-model="errorLogsData" rows="25"
class="form-control"></textarea>
</div> </div>
</div> </div>
</form> </form>
</div> </div>
@@ -261,7 +262,8 @@
<a href="" ng-click="showCreateDomainForm()" title="{% trans 'Add Domains' %}" href=""> <a href="" ng-click="showCreateDomainForm()" title="{% trans 'Add Domains' %}" href="">
<img src="{% static 'images/icons/domains.png' %}"> <img src="{% static 'images/icons/domains.png' %}">
</a> </a>
<a ng-click="showCreateDomainForm()" title="{% trans 'Add Domains' %}" href="" title="{% trans 'Add Domains' %}"> <a ng-click="showCreateDomainForm()" title="{% trans 'Add Domains' %}" href=""
title="{% trans 'Add Domains' %}">
<span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Add Domains" %}</span> <span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Add Domains" %}</span>
</a> </a>
@@ -269,20 +271,24 @@
<div class="col-md-3" style="margin-bottom: 2%;"> <div class="col-md-3" style="margin-bottom: 2%;">
<a href="" ng-click="showListDomains()" title="{% trans 'List Domains' %}" href="" title="{% trans 'List Domains' %}"> <a href="" ng-click="showListDomains()" title="{% trans 'List Domains' %}" href=""
title="{% trans 'List Domains' %}">
<img src="{% static 'images/icons/sort.png' %}"> <img src="{% static 'images/icons/sort.png' %}">
</a> </a>
<a ng-click="showListDomains()" title="{% trans 'List Domains' %}" href="" title="{% trans 'List Domains' %}"> <a ng-click="showListDomains()" title="{% trans 'List Domains' %}" href=""
title="{% trans 'List Domains' %}">
<span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "List Domains" %}</span> <span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "List Domains" %}</span>
</a> </a>
</div> </div>
<div class="col-md-3" style="margin-bottom: 2%;"> <div class="col-md-3" style="margin-bottom: 2%;">
<a href="{$ domainAliasURL $}" target="_blank" title="{% trans 'Domain Alias' %}" href="" title="{% trans 'Domain Alias' %}"> <a href="{$ domainAliasURL $}" target="_blank" title="{% trans 'Domain Alias' %}"
href="" title="{% trans 'Domain Alias' %}">
<img src="{% static 'images/icons/web-domain.png' %}"> <img src="{% static 'images/icons/web-domain.png' %}">
</a> </a>
<a href="{$ domainAliasURL $}" target="_blank" title="{% trans 'Domain Alias' %}" href="" title="{% trans 'Domain Alias' %}"> <a href="{$ domainAliasURL $}" target="_blank" title="{% trans 'Domain Alias' %}"
href="" title="{% trans 'Domain Alias' %}">
<span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Domain Alias" %}</span> <span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Domain Alias" %}</span>
</a> </a>
@@ -290,39 +296,44 @@
<div class="col-md-3" style="margin-bottom: 2%;"> <div class="col-md-3" style="margin-bottom: 2%;">
<a href="{% url 'listCron' %}" target="_blank" title="{% trans 'Add new Cron Job' %}" href="" title="{% trans 'List Domains' %}"> <a href="{% url 'listCron' %}" target="_blank" title="{% trans 'Add new Cron Job' %}"
href="" title="{% trans 'List Domains' %}">
<img src="{% static 'images/icons/repeat.png' %}"> <img src="{% static 'images/icons/repeat.png' %}">
</a> </a>
<a href="{% url 'listCron' %}" target="_blank" title="{% trans 'List Domains' %}" title="{% trans 'Add new Cron Job' %}"> <a href="{% url 'listCron' %}" target="_blank" title="{% trans 'List Domains' %}"
title="{% trans 'Add new Cron Job' %}">
<span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Cron Jobs" %}</span> <span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Cron Jobs" %}</span>
</a> </a>
</div> </div>
<!---------- HTML For creating domains ---------------> <!---------- HTML For creating domains --------------->
<div class="col-md-12"> <div class="col-md-12">
<form id="domainCreationForm" name="websiteCreationForm" action="/" class="form-horizontal bordered-row"> <form id="domainCreationForm" name="websiteCreationForm" action="/"
class="form-horizontal bordered-row">
<div ng-hide="installationDetailsForm" class="form-group"> <div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label">{% trans "Domain Name" %}</label> <label class="col-sm-3 control-label">{% trans "Domain Name" %}</label>
<div class="col-sm-6"> <div class="col-sm-6">
<input name="dom" type="text" class="form-control" ng-model="domainNameCreate" required> <input name="dom" type="text" class="form-control"
ng-model="domainNameCreate" required>
</div> </div>
<div style="margin-bottom: 1%;" class=" col-sm-1"> <div style="margin-bottom: 1%;" class=" col-sm-1">
<a title="{% trans 'Cancel' %}" ng-click="hideDomainCreationForm()" href=""><img src="/static/images/close-32.png"></a> <a title="{% trans 'Cancel' %}" ng-click="hideDomainCreationForm()" href=""><img
src="/static/images/close-32.png"></a>
</div> </div>
</div> </div>
<div ng-hide="installationDetailsForm" class="form-group"> <div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label">{% trans "Path" %}</label> <label class="col-sm-3 control-label">{% trans "Path" %}</label>
<div class="col-sm-6"> <div class="col-sm-6">
<input placeholder="{% trans 'This path is relative to: ' %}{$ masterDomain $}. {% trans 'Leave empty to set default.' %}" type="text" class="form-control" ng-model="docRootPath" required> <input placeholder="{% trans 'This path is relative to: ' %}{$ masterDomain $}. {% trans 'Leave empty to set default.' %}"
type="text" class="form-control" ng-model="docRootPath" required>
</div> </div>
<div ng-show="websiteCreationForm.dom.$error.pattern" class="current-pack">{% trans "Invalid Domain (Note: You don't need to add 'http' or 'https')" %}</div> <div ng-show="websiteCreationForm.dom.$error.pattern"
class="current-pack">{% trans "Invalid Domain (Note: You don't need to add 'http' or 'https')" %}</div>
</div> </div>
@@ -342,8 +353,8 @@
</div> </div>
<div ng-hide="installationDetailsForm" ng-hide="installationDetailsForm"
<div ng-hide="installationDetailsForm" ng-hide="installationDetailsForm" class="form-group"> class="form-group">
<label class="col-sm-3 control-label">{% trans "Additional Features" %}</label> <label class="col-sm-3 control-label">{% trans "Additional Features" %}</label>
<div class="col-sm-9"> <div class="col-sm-9">
<div class="checkbox"> <div class="checkbox">
@@ -377,13 +388,13 @@
<div ng-hide="installationDetailsForm" class="form-group"> <div ng-hide="installationDetailsForm" class="form-group">
<label class="col-sm-3 control-label"></label> <label class="col-sm-3 control-label"></label>
<div class="col-sm-4"> <div class="col-sm-4">
<button type="button" ng-click="createDomain()" class="btn btn-primary btn-lg btn-block">{% trans "Create Domain" %}</button> <button type="button" ng-click="createDomain()"
class="btn btn-primary btn-lg btn-block">{% trans "Create Domain" %}</button>
</div> </div>
</div> </div>
<div ng-hide="installationProgress" class="form-group"> <div ng-hide="installationProgress" class="form-group">
<label class="col-sm-2 control-label"></label> <label class="col-sm-2 control-label"></label>
<div class="col-sm-7"> <div class="col-sm-7">
@@ -393,7 +404,9 @@
</div> </div>
<div class="progress"> <div class="progress">
<div id="installProgress" class="progress-bar" role="progressbar" aria-valuenow="70" aria-valuemin="0" aria-valuemax="100" style="width:0%"> <div id="installProgress" class="progress-bar" role="progressbar"
aria-valuenow="70" aria-valuemin="0" aria-valuemax="100"
style="width:0%">
<span class="sr-only">70% Complete</span> <span class="sr-only">70% Complete</span>
</div> </div>
</div> </div>
@@ -407,7 +420,6 @@
</div> </div>
<div ng-hide="couldNotConnect" class="alert alert-danger"> <div ng-hide="couldNotConnect" class="alert alert-danger">
<p>{% trans "Could not connect to server. Please refresh this page." %}</p> <p>{% trans "Could not connect to server. Please refresh this page." %}</p>
</div> </div>
@@ -419,7 +431,8 @@
<div ng-hide="installationProgress" class="form-group"> <div ng-hide="installationProgress" class="form-group">
<label class="col-sm-3 control-label"></label> <label class="col-sm-3 control-label"></label>
<div class="col-sm-4"> <div class="col-sm-4">
<button type="button" ng-disabled="goBackDisable" ng-click="goBack()" class="btn btn-primary btn-lg btn-block">{% trans "Go Back" %}</button> <button type="button" ng-disabled="goBackDisable" ng-click="goBack()"
class="btn btn-primary btn-lg btn-block">{% trans "Go Back" %}</button>
</div> </div>
</div> </div>
@@ -436,7 +449,6 @@
<form ng-hide="" class="form-horizontal bordered-row"> <form ng-hide="" class="form-horizontal bordered-row">
<div ng-hide="phpChanged" class="alert alert-success"> <div ng-hide="phpChanged" class="alert alert-success">
<p>{% trans "PHP Version Changed to:" %} {$ changedPHPVersion $} </p> <p>{% trans "PHP Version Changed to:" %} {$ changedPHPVersion $} </p>
</div> </div>
@@ -464,16 +476,17 @@
</div> </div>
<div ng-hide="" class="form-group"> <div ng-hide="" class="form-group">
<div class="col-sm-11"> <div class="col-sm-11">
<input placeholder="Search Domain..." ng-model="logSearch" name="dom" type="text" class="form-control" ng-model="domainNameCreate" required> <input placeholder="Search Domain..." ng-model="logSearch" name="dom"
type="text" class="form-control" ng-model="domainNameCreate"
required>
</div> </div>
<div style="margin-bottom: 1%;" class=" col-sm-1"> <div style="margin-bottom: 1%;" class=" col-sm-1">
<a title="{% trans 'Close' %}" ng-click="hideListDomains()" href=""><img src="/static/images/close-32.png"></a> <a title="{% trans 'Close' %}" ng-click="hideListDomains()" href=""><img
src="/static/images/close-32.png"></a>
</div> </div>
@@ -493,16 +506,21 @@
<tbody> <tbody>
<tr ng-repeat="record in childDomains | filter:logSearch"> <tr ng-repeat="record in childDomains | filter:logSearch">
<td ng-bind="record.childDomain"></td> <td ng-bind="record.childDomain"></td>
<td><a href="{$ record.childLunch $}"><img width="30px" height="30" class="center-block" src="{% static 'baseTemplate/assets/image-resources/webPanel.png' %}"></a></td> <td><a href="{$ record.childLunch $}"><img width="30px" height="30"
class="center-block"
src="{% static 'baseTemplate/assets/image-resources/webPanel.png' %}"></a>
</td>
<td ng-bind="record.path"></td> <td ng-bind="record.path"></td>
<td> <td>
<select ng-change="changeChildBaseDir(record.childDomain,childBaseDir)" ng-model="childBaseDir" class="form-control"> <select ng-change="changeChildBaseDir(record.childDomain,childBaseDir)"
ng-model="childBaseDir" class="form-control">
<option>Enable</option> <option>Enable</option>
<option>Disable</option> <option>Disable</option>
</select> </select>
</td> </td>
<td> <td>
<select ng-change="changePHP(record.childDomain,phpSelection)" ng-model="phpSelection" class="form-control"> <select ng-change="changePHP(record.childDomain,phpSelection)"
ng-model="phpSelection" class="form-control">
<option>PHP 5.3</option> <option>PHP 5.3</option>
<option>PHP 5.4</option> <option>PHP 5.4</option>
<option>PHP 5.5</option> <option>PHP 5.5</option>
@@ -512,8 +530,16 @@
<option>PHP 7.2</option> <option>PHP 7.2</option>
</select> </select>
</td> </td>
<td><button type="button" ng-click="issueSSL(record.childDomain,record.path)" class="btn ra-100 btn-purple">{% trans "Issue" %}</button></td> <td>
<td><button type="button" ng-click="deleteChildDomain(record.childDomain)" class="btn ra-100 btn-purple">{% trans "Delete" %}</button></td> <button type="button"
ng-click="issueSSL(record.childDomain,record.path)"
class="btn ra-100 btn-purple">{% trans "Issue" %}</button>
</td>
<td>
<button type="button"
ng-click="deleteChildDomain(record.childDomain)"
class="btn ra-100 btn-purple">{% trans "Delete" %}</button>
</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@@ -546,10 +572,12 @@
<div class="col-md-3" style="margin-bottom: 2%;"> <div class="col-md-3" style="margin-bottom: 2%;">
<a ng-click="fetchConfigurations()" href="" title="{% trans 'Edit vHost Main Configurations' %}"> <a ng-click="fetchConfigurations()" href=""
title="{% trans 'Edit vHost Main Configurations' %}">
<img src="{% static 'images/icons/file.png' %}"> <img src="{% static 'images/icons/file.png' %}">
</a> </a>
<a ng-click="fetchConfigurations()" href="" title="{% trans 'Edit vHost Main Configurations' %}"> <a ng-click="fetchConfigurations()" href=""
title="{% trans 'Edit vHost Main Configurations' %}">
<span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "vHost Conf" %}</span> <span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "vHost Conf" %}</span>
</a> </a>
@@ -558,10 +586,12 @@
<div class="col-md-3" style="margin-bottom: 2%;"> <div class="col-md-3" style="margin-bottom: 2%;">
<a ng-click="fetchRewriteFules()" href="" title="{% trans 'Add Rewrite Rules (.htaccess)' %}"> <a ng-click="fetchRewriteFules()" href=""
title="{% trans 'Add Rewrite Rules (.htaccess)' %}">
<img src="{% static 'images/icons/pencilcase.png' %}"> <img src="{% static 'images/icons/pencilcase.png' %}">
</a> </a>
<a ng-click="fetchRewriteFules()" href="" title="{% trans 'Rewrite Rules (.htaccess)' %}"> <a ng-click="fetchRewriteFules()" href=""
title="{% trans 'Rewrite Rules (.htaccess)' %}">
<span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Rewrite Rules" %}</span> <span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Rewrite Rules" %}</span>
</a> </a>
@@ -614,20 +644,24 @@
<div ng-hide="" class="form-group"> <div ng-hide="" class="form-group">
<div style="margin-bottom: 1%;" class="col-sm-offset-11 col-sm-1"> <div style="margin-bottom: 1%;" class="col-sm-offset-11 col-sm-1">
<a ng-click="hidesslbtn()" href=""><img src="/static/images/close-32.png"></a> <a ng-click="hidesslbtn()" href=""><img
src="/static/images/close-32.png"></a>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<textarea placeholder="Paste Your Cert" ng-model="cert" rows="10" class="form-control"></textarea> <textarea placeholder="Paste Your Cert" ng-model="cert" rows="10"
class="form-control"></textarea>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<textarea placeholder="Paste Your Key" ng-model="key" rows="10" class="form-control"></textarea> <textarea placeholder="Paste Your Key" ng-model="key" rows="10"
class="form-control"></textarea>
</div> </div>
</div> </div>
<div ng-hide="" class="form-group"> <div ng-hide="" class="form-group">
<label class="col-sm-3 control-label"></label> <label class="col-sm-3 control-label"></label>
<div class="col-sm-4"> <div class="col-sm-4">
<button type="button" ng-click="saveSSL()" class="btn btn-primary btn-lg btn-block">{% trans "Save" %}</button> <button type="button" ng-click="saveSSL()"
class="btn btn-primary btn-lg btn-block">{% trans "Save" %}</button>
</div> </div>
</div> </div>
@@ -636,9 +670,6 @@
</form> </form>
</div> </div>
@@ -657,7 +688,8 @@
<div ng-hide="couldNotFetchConfigs" class="alert alert-danger"> <div ng-hide="couldNotFetchConfigs" class="alert alert-danger">
<p>{% trans "Could not fetch current configuration. Error message:" %} {$ errorMessage $}</p> <p>{% trans "Could not fetch current configuration. Error message:" %} {$
errorMessage $}</p>
</div> </div>
@@ -670,13 +702,15 @@
</div> </div>
<div ng-hide="couldNotSaveConfigurations" class="alert alert-danger"> <div ng-hide="couldNotSaveConfigurations" class="alert alert-danger">
<p>{% trans "Could not fetch current configuration. Error message:" %} {$ errorMessage $}</p> <p>{% trans "Could not fetch current configuration. Error message:" %} {$
errorMessage $}</p>
</div> </div>
<div ng-hide="fetchedConfigsData" class="form-group"> <div ng-hide="fetchedConfigsData" class="form-group">
<div style="margin-bottom: 1%;" class="col-sm-offset-11 col-sm-1"> <div style="margin-bottom: 1%;" class="col-sm-offset-11 col-sm-1">
<a ng-click="hideconfigbtn()" href=""><img src="/static/images/close-32.png"></a> <a ng-click="hideconfigbtn()" href=""><img
src="/static/images/close-32.png"></a>
</div> </div>
<div class="col-sm-12"> <div class="col-sm-12">
<textarea ng-model="configData" rows="20" class="form-control"></textarea> <textarea ng-model="configData" rows="20" class="form-control"></textarea>
@@ -686,7 +720,8 @@
<div ng-hide="saveConfigBtn" class="form-group"> <div ng-hide="saveConfigBtn" class="form-group">
<label class="col-sm-3 control-label"></label> <label class="col-sm-3 control-label"></label>
<div class="col-sm-4"> <div class="col-sm-4">
<button type="button" ng-click="saveCongiruations()" class="btn btn-primary btn-lg btn-block">{% trans "Save" %}</button> <button type="button" ng-click="saveCongiruations()"
class="btn btn-primary btn-lg btn-block">{% trans "Save" %}</button>
</div> </div>
</div> </div>
@@ -704,12 +739,17 @@
<div ng-hide="rewriteRulesFetched" class="alert alert-success"> <div ng-hide="rewriteRulesFetched" class="alert alert-success">
<p>{% trans "Current rewrite rules in the file fetched." %} <a target="_blank" href="http://go.cyberpanel.net/cyber9bed2">Click</a> to read more about whats changed in <a target="_blank" href="http://go.cyberpanel.net/rewrite">rewrite rules</a> from v1.7 onwards.</p> <p>{% trans "Current rewrite rules in the file fetched." %} <a target="_blank"
href="http://go.cyberpanel.net/cyber9bed2">Click</a>
to read more about whats changed in <a target="_blank"
href="http://go.cyberpanel.net/rewrite">rewrite
rules</a> from v1.7 onwards.</p>
</div> </div>
<div ng-hide="couldNotFetchRewriteRules" class="alert alert-danger"> <div ng-hide="couldNotFetchRewriteRules" class="alert alert-danger">
<p>{% trans "Could not fetch current rewrite rules. Error message:" %} {$ errorMessage $}</p> <p>{% trans "Could not fetch current rewrite rules. Error message:" %} {$
errorMessage $}</p>
</div> </div>
@@ -722,13 +762,15 @@
</div> </div>
<div ng-hide="couldNotSaveRewriteRules" class="alert alert-danger"> <div ng-hide="couldNotSaveRewriteRules" class="alert alert-danger">
<p>{% trans "Could not save rewrite rules. Error message:" %} {$ errorMessage $}</p> <p>{% trans "Could not save rewrite rules. Error message:" %} {$ errorMessage
$}</p>
</div> </div>
<div ng-hide="fetchedRewriteRules" class="form-group"> <div ng-hide="fetchedRewriteRules" class="form-group">
<div style="margin-bottom: 1%;" class="col-sm-offset-11 col-sm-1"> <div style="margin-bottom: 1%;" class="col-sm-offset-11 col-sm-1">
<a ng-click="hideRewriteRulesbtn()" href=""><img src="/static/images/close-32.png"></a> <a ng-click="hideRewriteRulesbtn()" href=""><img
src="/static/images/close-32.png"></a>
</div> </div>
<div class="col-sm-12"> <div class="col-sm-12">
<textarea ng-model="rewriteRules" rows="10" class="form-control"></textarea> <textarea ng-model="rewriteRules" rows="10" class="form-control"></textarea>
@@ -738,7 +780,8 @@
<div ng-hide="saveRewriteRulesBTN" class="form-group"> <div ng-hide="saveRewriteRulesBTN" class="form-group">
<label class="col-sm-3 control-label"></label> <label class="col-sm-3 control-label"></label>
<div class="col-sm-4"> <div class="col-sm-4">
<button type="button" ng-click="saveRewriteRules()" class="btn btn-primary btn-lg btn-block">{% trans "Save Rewrite Rules" %}</button> <button type="button" ng-click="saveRewriteRules()"
class="btn btn-primary btn-lg btn-block">{% trans "Save Rewrite Rules" %}</button>
</div> </div>
</div> </div>
@@ -755,7 +798,6 @@
<form ng-hide="changePHPView" name="" action="/" class="form-horizontal bordered-row"> <form ng-hide="changePHPView" name="" action="/" class="form-horizontal bordered-row">
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select PHP" %}</label> <label class="col-sm-3 control-label">{% trans "Select PHP" %}</label>
<div class="col-sm-6"> <div class="col-sm-6">
@@ -771,33 +813,34 @@
</div> </div>
<div style="margin-bottom: 1%;" class=" col-sm-1"> <div style="margin-bottom: 1%;" class=" col-sm-1">
<a title="{% trans 'Cancel' %}" ng-click="hideChangePHPMaster()" href=""><img src="/static/images/close-32.png"></a> <a title="{% trans 'Cancel' %}" ng-click="hideChangePHPMaster()"
href=""><img src="/static/images/close-32.png"></a>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label"></label> <label class="col-sm-3 control-label"></label>
<div class="col-sm-4"> <div class="col-sm-4">
<button type="button" ng-click="changePHPVersionMaster()" class="btn btn-primary btn-lg btn-block">{% trans "Change PHP" %}</button> <button type="button" ng-click="changePHPVersionMaster()"
class="btn btn-primary btn-lg btn-block">{% trans "Change PHP" %}</button>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label"></label> <label class="col-sm-3 control-label"></label>
<div class="col-sm-4"> <div class="col-sm-4">
<div ng-hide="failedToChangePHPMaster" class="alert alert-danger"> <div ng-hide="failedToChangePHPMaster" class="alert alert-danger">
<p>{% trans "Failed to change PHP version. Error message:" %} {$ errorMessage $}</p> <p>{% trans "Failed to change PHP version. Error message:" %} {$
errorMessage $}</p>
</div> </div>
<div ng-hide="phpChangedMaster" class="alert alert-success"> <div ng-hide="phpChangedMaster" class="alert alert-success">
<p>{% trans "PHP successfully changed for: " %} <strong>{$ websiteDomain $}</strong></p> <p>{% trans "PHP successfully changed for: " %} <strong>{$ websiteDomain
$}</strong></p>
</div> </div>
<div ng-hide="couldNotConnect" class="alert alert-danger"> <div ng-hide="couldNotConnect" class="alert alert-danger">
@@ -806,7 +849,6 @@
</div> </div>
</div> </div>
@@ -895,7 +937,8 @@
</div> </div>
<div style="margin-bottom: 2%;" class=" col-sm-1"> <div style="margin-bottom: 2%;" class=" col-sm-1">
<a title="{% trans 'Cancel' %}" ng-click="hideOpenBasedir()" href=""><img src="/static/images/close-32.png"></a> <a title="{% trans 'Cancel' %}" ng-click="hideOpenBasedir()" href=""><img
src="/static/images/close-32.png"></a>
</div> </div>
</div> </div>
@@ -904,7 +947,8 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label"></label> <label class="col-sm-3 control-label"></label>
<div class="col-sm-4"> <div class="col-sm-4">
<button type="button" ng-click="applyOpenBasedirChanges()" class="btn btn-primary btn-lg btn-block">{% trans "Apply Changes" %}</button> <button type="button" ng-click="applyOpenBasedirChanges()"
class="btn btn-primary btn-lg btn-block">{% trans "Apply Changes" %}</button>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
@@ -933,7 +977,6 @@
<!--- HTML To change open_basedir ---> <!--- HTML To change open_basedir --->
</div> </div>
</div> </div>
</div> </div>
@@ -1016,7 +1059,8 @@
<div style="border-radius: 25px;border-color:#3498db" class="content-box"> <div style="border-radius: 25px;border-color:#3498db" class="content-box">
<h3 class="content-box-header bg-blue"> <h3 class="content-box-header bg-blue">
{% trans "Application Installer" %} <img ng-hide="applicationInstallerLoading" src="/static/images/loading.gif"> {% trans "Application Installer" %} <img ng-hide="applicationInstallerLoading"
src="/static/images/loading.gif">
</h3> </h3>
<div class="content-box-wrapper"> <div class="content-box-wrapper">
@@ -1025,10 +1069,12 @@
<div class="col-md-4" style="margin-bottom: 2%;"> <div class="col-md-4" style="margin-bottom: 2%;">
<a href="{$ wordPressInstallURL $}" target="_blank" title="{% trans 'Install wordpress with LSCache' %}"> <a href="{$ wordPressInstallURL $}" target="_blank"
title="{% trans 'Install wordpress with LSCache' %}">
<img src="{% static 'images/icons/wordpress.png' %}"> <img src="{% static 'images/icons/wordpress.png' %}">
</a> </a>
<a href="{$ wordPressInstallURL $}" target="_blank" title="{% trans 'Install wordpress with LSCache' %}"> <a href="{$ wordPressInstallURL $}" target="_blank"
title="{% trans 'Install wordpress with LSCache' %}">
<span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Wordpress with LSCache" %}</span> <span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Wordpress with LSCache" %}</span>
</a> </a>
@@ -1037,10 +1083,12 @@
<div class="col-md-4" style="margin-bottom: 2%;"> <div class="col-md-4" style="margin-bottom: 2%;">
<a href="{$ joomlaInstallURL $}" target="_blank" title="{% trans 'Install Joomla with LSCache' %}"> <a href="{$ joomlaInstallURL $}" target="_blank"
title="{% trans 'Install Joomla with LSCache' %}">
<img src="{% static 'images/icons/joomla-logo.png' %}"> <img src="{% static 'images/icons/joomla-logo.png' %}">
</a> </a>
<a href="{$ joomlaInstallURL $}" target="_blank" title="{% trans 'Install Joomla with LSCache' %}"> <a href="{$ joomlaInstallURL $}" target="_blank"
title="{% trans 'Install Joomla with LSCache' %}">
<span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Joomla" %}</span> <span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Joomla" %}</span>
</a> </a>
@@ -1049,23 +1097,26 @@
<div class="col-md-4" style="margin-bottom: 2%;"> <div class="col-md-4" style="margin-bottom: 2%;">
<a href="{$ setupGit $}" target="_blank" title="{% trans 'Attach Git with this website!' %}"> <a href="{$ setupGit $}" target="_blank"
title="{% trans 'Attach Git with this website!' %}">
<img src="{% static 'images/icons/git-logo.png' %}"> <img src="{% static 'images/icons/git-logo.png' %}">
</a> </a>
<a href="{$ setupGit $}" target="_blank" title="{% trans 'Attach Git with this website!' %}"> <a href="{$ setupGit $}" target="_blank"
title="{% trans 'Attach Git with this website!' %}">
<span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Git" %}</span> <span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Git" %}</span>
</a> </a>
</div> </div>
<div class="col-md-4" style="margin-bottom: 2%;"> <div class="col-md-4" style="margin-bottom: 2%;">
<a href="{$ installPrestaURL $}" target="_blank" title="{% trans 'Install Prestashop' %}"> <a href="{$ installPrestaURL $}" target="_blank"
title="{% trans 'Install Prestashop' %}">
<img src="{% static 'images/icons/prestashop.png' %}"> <img src="{% static 'images/icons/prestashop.png' %}">
</a> </a>
<a href="{$ installPrestaURL $}" target="_blank" title="{% trans 'Install Prestashop' %}"> <a href="{$ installPrestaURL $}" target="_blank"
title="{% trans 'Install Prestashop' %}">
<span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Prestashop" %}</span> <span style='font-size: 21px;font-family: "Times New Roman", Times, serif; padding-left: 2%'>{% trans "Prestashop" %}</span>
</a> </a>
@@ -1088,8 +1139,6 @@
{% endif %} {% endif %}
</div> </div>