From 75c9ef9da9c23a03658c4f8c804eca043d4063f4 Mon Sep 17 00:00:00 2001 From: usmannasir <01-134132-158@student.bahria.edu.pk> Date: Mon, 4 Feb 2019 01:03:18 +0500 Subject: [PATCH] dns replication --- dns/dnsManager.py | 12 +- dns/models.py | 14 - dockerManager/decorators.py | 8 +- manageServices/models.py | 6 + manageServices/serviceManager.py | 87 +++ .../static/manageServices/manageServices.js | 542 +++++++++--------- .../manageServices/managePowerDNS.html | 137 +++-- manageServices/views.py | 56 +- plogical/dnsUtilities.py | 22 +- .../assets/image-resources/logo-admin.png | Bin 5708 -> 2598 bytes static/dockerManager/dockerManager.js | 10 +- static/emailMarketing/checklist.png | Bin 2961 -> 1755 bytes static/emailMarketing/compose.png | Bin 2557 -> 1842 bytes static/emailMarketing/mailing.png | Bin 2124 -> 1950 bytes static/emailMarketing/paper-plane.png | Bin 3260 -> 2226 bytes static/emailMarketing/post-office.png | Bin 2511 -> 1548 bytes static/filemanager/css/fileManager.css | 138 ++++- static/filemanager/images/fileManager.png | Bin 11191 -> 2598 bytes static/filemanager/js/fileManager.js | 5 +- static/images/change-license.png | Bin 0 -> 1669 bytes static/images/icons/add-ssl.png | Bin 0 -> 1376 bytes static/images/icons/change-php.png | Bin 0 -> 1720 bytes static/images/icons/checklist.png | Bin 0 -> 1755 bytes static/images/icons/compose.png | Bin 0 -> 1842 bytes static/images/icons/delete-ftp.png | Bin 1523 -> 2155 bytes static/images/icons/domains.png | Bin 3206 -> 2419 bytes static/images/icons/file.png | Bin 1044 -> 1878 bytes static/images/icons/ftp-upload.png | Bin 1824 -> 2036 bytes static/images/icons/git-logo.png | Bin 1879 -> 877 bytes static/images/icons/joomla-logo.png | Bin 2072 -> 1276 bytes static/images/icons/laptop.png | Bin 834 -> 1965 bytes static/images/icons/locked.png | Bin 888 -> 1878 bytes static/images/icons/log-file-format.png | Bin 1631 -> 1636 bytes static/images/icons/mailing.png | Bin 0 -> 1950 bytes static/images/icons/office-material.png | Bin 1708 -> 1038 bytes static/images/icons/open_basedir.png | Bin 1741 -> 2159 bytes static/images/icons/paper-plane.png | Bin 0 -> 2226 bytes static/images/icons/pencilcase.png | Bin 3951 -> 1593 bytes static/images/icons/post-office.png | Bin 0 -> 1548 bytes static/images/icons/prestashop.png | Bin 4314 -> 2501 bytes static/images/icons/repeat.png | Bin 2865 -> 2986 bytes static/images/icons/sort.png | Bin 1908 -> 1426 bytes static/images/icons/warning.png | Bin 2429 -> 1519 bytes static/images/icons/web-domain.png | Bin 2832 -> 1652 bytes static/images/icons/wordpress.png | Bin 1797 -> 1525 bytes static/images/license-status.png | Bin 0 -> 1420 bytes static/images/not-available-preview.png | Bin 0 -> 9295 bytes static/manageSSL/manageSSL.js | 2 - static/manageServices/manageServices.js | 542 +++++++++--------- static/websiteFunctions/websiteFunctions.css | 229 +++++++- static/websiteFunctions/websiteFunctions.js | 54 +- 51 files changed, 1230 insertions(+), 634 deletions(-) create mode 100644 manageServices/serviceManager.py create mode 100644 static/images/change-license.png create mode 100644 static/images/icons/add-ssl.png create mode 100644 static/images/icons/change-php.png create mode 100644 static/images/icons/checklist.png create mode 100644 static/images/icons/compose.png create mode 100644 static/images/icons/mailing.png create mode 100644 static/images/icons/paper-plane.png create mode 100644 static/images/icons/post-office.png create mode 100644 static/images/license-status.png create mode 100644 static/images/not-available-preview.png diff --git a/dns/dnsManager.py b/dns/dnsManager.py index cc7765ace..67cf5f9e9 100644 --- a/dns/dnsManager.py +++ b/dns/dnsManager.py @@ -15,6 +15,7 @@ from models import Domains,Records from re import match,I,M from plogical.mailUtilities import mailUtilities from plogical.acl import ACLManager +from manageServices.models import PDNSStatus class DNSManager: @@ -56,7 +57,16 @@ class DNSManager: secondNSIP = data['secondNSIP'] if Domains.objects.filter(name=domainForNS).count() == 0: - newZone = Domains(admin=admin, name=domainForNS, type="NATIVE") + + try: + pdns = PDNSStatus.objects.get(pk=1) + if pdns.type == 'MASTER': + newZone = Domains(admin=admin, name=domainForNS, type="MASTER") + else: + newZone = Domains(admin=admin, name=domainForNS, type="NATIVE") + except: + newZone = Domains(admin=admin, name=domainForNS, type="NATIVE") + newZone.save() content = "ns1." + domainForNS + " hostmaster." + domainForNS + " 1 10800 3600 604800 3600" diff --git a/dns/models.py b/dns/models.py index 3a9e27305..8db112e90 100644 --- a/dns/models.py +++ b/dns/models.py @@ -1,10 +1,3 @@ -# This is an auto-generated Django model module. -# You'll have to do the following manually to clean this up: -# * Rearrange models' order -# * Make sure each model has one field with primary_key=True -# * Make sure each ForeignKey has `on_delete` set to the desired behavior. -# * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table -# Feel free to rename the models, but don't rename db_table values or field names. from __future__ import unicode_literals from django.db import models @@ -91,10 +84,3 @@ class Tsigkeys(models.Model): class Meta: db_table = 'tsigkeys' unique_together = (('name', 'algorithm'),) - - - -class DNSMaster: - type = models.CharField(max_length=5, default='NATIVE') - allow_axfr_ips = models.CharField(max_length=500, default='') - also_notify = models.CharField(max_length=500, default='') diff --git a/dockerManager/decorators.py b/dockerManager/decorators.py index 0b128d144..bd06190c7 100644 --- a/dockerManager/decorators.py +++ b/dockerManager/decorators.py @@ -11,11 +11,11 @@ from plogical.acl import ACLManager def preDockerRun(function): def wrap(request, *args, **kwargs): - try: - userID = request.session['userID'] + try: + userID = request.session['userID'] except KeyError: return redirect(loadLoginPage) - + currentACL = ACLManager.loadedACL(userID) if request.method == "POST": @@ -49,4 +49,4 @@ def preDockerRun(function): return function(request, *args, **kwargs) - return wrap + return wrap \ No newline at end of file diff --git a/manageServices/models.py b/manageServices/models.py index 1dfab7604..d0e84cea8 100644 --- a/manageServices/models.py +++ b/manageServices/models.py @@ -4,3 +4,9 @@ from __future__ import unicode_literals from django.db import models # Create your models here. + +class PDNSStatus(models.Model): + serverStatus = models.IntegerField(default=1) + type = models.CharField(max_length=6, default='NATIVE') + allow_axfr_ips = models.CharField(max_length=500, default='') + also_notify = models.CharField(max_length=500, default='') \ No newline at end of file diff --git a/manageServices/serviceManager.py b/manageServices/serviceManager.py new file mode 100644 index 000000000..79e8db8eb --- /dev/null +++ b/manageServices/serviceManager.py @@ -0,0 +1,87 @@ +import subprocess, shlex +from random import randint +from plogical.processUtilities import ProcessUtilities + +class ServiceManager: + + def __init__(self, extraArgs): + self.extraArgs = extraArgs + + + def managePDNS(self): + type = self.extraArgs['type'] + path = '/etc/pdns/pdns.conf' + + data = subprocess.check_output(shlex.split('sudo cat ' + path)).splitlines() + + if type == 'MASTER': + counter = 0 + + slaveIPData = self.extraArgs['slaveIPData'] + ipsString = slaveIPData.replace(',', '/32,') + + + for items in data: + if items.find('allow-axfr-ips') > -1: + data[counter] = '#' + data[counter] + + if items.find('also-notify') > -1: + data[counter] = '#' + data[counter] + + if items.find('daemon=') > -1: + data[counter] = '#' + data[counter] + + if items.find('disable-axfr') > -1: + data[counter] = '#' + data[counter] + + if items.find('slave') > -1: + data[counter] = '#' + data[counter] + + counter = counter + 1 + + tempPath = "/home/cyberpanel/" + str(randint(1000, 9999)) + writeToFile = open(tempPath, 'w') + + for items in data: + writeToFile.writelines(items + '\n') + + writeToFile.writelines('allow-axfr-ips=' + ipsString + '\n') + writeToFile.writelines('also-notify=' + slaveIPData + '\n') + writeToFile.writelines('daemon=no\n') + writeToFile.writelines('disable-axfr=no\n') + writeToFile.writelines('master=yes\n') + writeToFile.close() + else: + counter = 0 + + for items in data: + if items.find('allow-axfr-ips') > -1: + data[counter] = '#' + data[counter] + + if items.find('also-notify') > -1: + data[counter] = '#' + data[counter] + + if items.find('daemon=') > -1: + data[counter] = '#' + data[counter] + + if items.find('disable-axfr') > -1: + data[counter] = '#' + data[counter] + + if items.find('slave') > -1: + data[counter] = '#' + data[counter] + + counter = counter + 1 + + tempPath = "/home/cyberpanel/" + str(randint(1000, 9999)) + writeToFile = open(tempPath, 'w') + + for items in data: + writeToFile.writelines(items + '\n') + + writeToFile.writelines('slave=yes\n') + writeToFile.writelines('daemon=no\n') + writeToFile.close() + + command = 'sudo mv ' + tempPath + ' ' + path + ProcessUtilities.executioner(command) + diff --git a/manageServices/static/manageServices/manageServices.js b/manageServices/static/manageServices/manageServices.js index 4cbee2c59..ca700620a 100644 --- a/manageServices/static/manageServices/manageServices.js +++ b/manageServices/static/manageServices/manageServices.js @@ -5,128 +5,148 @@ /* Java script code */ -app.controller('powerDNS', function($scope, $http, $timeout, $window) { +app.controller('powerDNS', function ($scope, $http, $timeout, $window) { - $scope.pdnsLoading = true; - $scope.failedToFetch = true; - $scope.couldNotConnect = true; - $scope.changesApplied = true; + $scope.pdnsLoading = true; + $scope.failedToFetch = true; + $scope.couldNotConnect = true; + $scope.changesApplied = true; + $scope.slaveIPs = true; - var pdnsStatus = false; + var pdnsStatus = false; - $('#pdnsStatus').change(function() { - pdnsStatus = $(this).prop('checked'); - }); + $('#pdnsStatus').change(function () { + pdnsStatus = $(this).prop('checked'); + }); - fetchPDNSStatus('powerdns'); - function fetchPDNSStatus(service){ + fetchPDNSStatus('powerdns'); + function fetchPDNSStatus(service) { - $scope.pdnsLoading = false; + $scope.pdnsLoading = false; - $('#pdnsStatus').bootstrapToggle('off'); + $('#pdnsStatus').bootstrapToggle('off'); - url = "/manageservices/fetchStatus"; + url = "/manageservices/fetchStatus"; - var data = { - 'service' : service - }; + var data = { + 'service': service + }; - var config = { - headers : { - 'X-CSRFToken': getCookie('csrftoken') - } - }; + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; - $http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas); + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); - function ListInitialDatas(response) { + function ListInitialDatas(response) { - $scope.pdnsLoading = true; + $scope.pdnsLoading = true; - if(response.data.status === 1){ + if (response.data.status === 1) { - if (response.data.installCheck === 1) { - $('#pdnsStatus').bootstrapToggle('on'); - } - - }else{ - $scope.failedToFetch = false; - $scope.couldNotConnect = true; - $scope.changesApplied = true; - - $scope.errorMessage = response.data.error_message; - - } - - } - function cantLoadInitialDatas(response) { - $scope.pdnsLoading = true; - $scope.failedToFetch = true; - $scope.couldNotConnect = false; - $scope.changesApplied = true; + if (response.data.installCheck === 1) { + $('#pdnsStatus').bootstrapToggle('on'); } - } + $scope.slaveIPData = response.data.slaveIPData; + + } else { + $scope.failedToFetch = false; + $scope.couldNotConnect = true; + $scope.changesApplied = true; + + $scope.errorMessage = response.data.error_message; + + } + + } + + function cantLoadInitialDatas(response) { + $scope.pdnsLoading = true; + $scope.failedToFetch = true; + $scope.couldNotConnect = false; + $scope.changesApplied = true; + } + + } + + $scope.saveStatus = function (service) { + + $scope.pdnsLoading = false; + $scope.failedToFetch = true; + $scope.couldNotConnect = true; + $scope.changesApplied = true; - $scope.saveStatus = function (service) { + url = "/manageservices/saveStatus"; - $scope.pdnsLoading = false; - $scope.failedToFetch = true; - $scope.couldNotConnect = true; - $scope.changesApplied = true; + if (service === 'powerdns') { + var data = { + status: pdnsStatus, + service: service, + dnsMode: $scope.dnsMode, + slaveIPData: $scope.slaveIPData + }; + }else { + var data = { + status: pdnsStatus, + service: service + }; + } + + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; - - url = "/manageservices/saveStatus"; - - var data = { - status:pdnsStatus, - service: service - }; - - var config = { - headers : { - 'X-CSRFToken': getCookie('csrftoken') - } - }; + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); + function ListInitialDatas(response) { + $scope.pdnsLoading = true; - $http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas); + if (response.data.status === 1) { + + $scope.failedToFetch = true; + $scope.couldNotConnect = true; + $scope.changesApplied = false; + + } + else { + $scope.errorMessage = response.data.error_message; + + $scope.failedToFetch = false; + $scope.couldNotConnect = true; + $scope.changesApplied = true; + } + + } + + function cantLoadInitialDatas(response) { + $scope.policyServerLoading = true; + $scope.failedToFetch = true; + $scope.couldNotConnect = false; + $scope.changesApplied = true; + } - function ListInitialDatas(response) { - $scope.pdnsLoading = true; + }; - if(response.data.status === 1){ + $scope.modeChange = function () { + if ($scope.dnsMode === 'MASTER') { + $scope.slaveIPs = false; - $scope.failedToFetch = true; - $scope.couldNotConnect = true; - $scope.changesApplied = false; - - } - else{ - $scope.errorMessage = response.data.error_message; - - $scope.failedToFetch = false; - $scope.couldNotConnect = true; - $scope.changesApplied = true; - } - - } - function cantLoadInitialDatas(response) { - $scope.policyServerLoading = true; - $scope.failedToFetch = true; - $scope.couldNotConnect = false; - $scope.changesApplied = true; - } - - - }; + } else { + $scope.slaveIPs = true; + } + } }); @@ -137,129 +157,129 @@ app.controller('powerDNS', function($scope, $http, $timeout, $window) { /* Java script code */ -app.controller('postfix', function($scope, $http, $timeout, $window) { +app.controller('postfix', function ($scope, $http, $timeout, $window) { - $scope.serviceLoading = true; - $scope.failedToFetch = true; - $scope.couldNotConnect = true; - $scope.changesApplied = true; + $scope.serviceLoading = true; + $scope.failedToFetch = true; + $scope.couldNotConnect = true; + $scope.changesApplied = true; - var serviceStatus = false; + var serviceStatus = false; - $('#serviceStatus').change(function() { - serviceStatus = $(this).prop('checked'); - }); + $('#serviceStatus').change(function () { + serviceStatus = $(this).prop('checked'); + }); - fetchPDNSStatus('postfix'); - function fetchPDNSStatus(service){ + fetchPDNSStatus('postfix'); + function fetchPDNSStatus(service) { - $scope.serviceLoading = false; + $scope.serviceLoading = false; - $('#serviceStatus').bootstrapToggle('off'); + $('#serviceStatus').bootstrapToggle('off'); - url = "/manageservices/fetchStatus"; + url = "/manageservices/fetchStatus"; - var data = { - 'service' : service - }; + var data = { + 'service': service + }; - var config = { - headers : { - 'X-CSRFToken': getCookie('csrftoken') - } - }; + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; - $http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas); + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); - function ListInitialDatas(response) { + function ListInitialDatas(response) { - $scope.serviceLoading = true; + $scope.serviceLoading = true; - if(response.data.status === 1){ + if (response.data.status === 1) { - if (response.data.installCheck === 1) { - $('#serviceStatus').bootstrapToggle('on'); - } - - }else{ - $scope.failedToFetch = false; - $scope.couldNotConnect = true; - $scope.changesApplied = true; - - $scope.errorMessage = response.data.error_message; - - } - - } - function cantLoadInitialDatas(response) { - $scope.serviceLoading = true; - $scope.failedToFetch = true; - $scope.couldNotConnect = false; - $scope.changesApplied = true; + if (response.data.installCheck === 1) { + $('#serviceStatus').bootstrapToggle('on'); } - } + } else { + $scope.failedToFetch = false; + $scope.couldNotConnect = true; + $scope.changesApplied = true; + + $scope.errorMessage = response.data.error_message; + + } + + } + + function cantLoadInitialDatas(response) { + $scope.serviceLoading = true; + $scope.failedToFetch = true; + $scope.couldNotConnect = false; + $scope.changesApplied = true; + } + + } - $scope.saveStatus = function (service) { + $scope.saveStatus = function (service) { - $scope.serviceLoading = false; - $scope.failedToFetch = true; - $scope.couldNotConnect = true; - $scope.changesApplied = true; + $scope.serviceLoading = false; + $scope.failedToFetch = true; + $scope.couldNotConnect = true; + $scope.changesApplied = true; + url = "/manageservices/saveStatus"; - url = "/manageservices/saveStatus"; + var data = { + status: serviceStatus, + service: service + }; - var data = { - status:serviceStatus, - service: service - }; - - var config = { - headers : { - 'X-CSRFToken': getCookie('csrftoken') - } - }; + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; - - $http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas); + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); - function ListInitialDatas(response) { - $scope.serviceLoading = true; + function ListInitialDatas(response) { + $scope.serviceLoading = true; - if(response.data.status === 1){ + if (response.data.status === 1) { - $scope.failedToFetch = true; - $scope.couldNotConnect = true; - $scope.changesApplied = false; + $scope.failedToFetch = true; + $scope.couldNotConnect = true; + $scope.changesApplied = false; - } - else{ - $scope.errorMessage = response.data.error_message; + } + else { + $scope.errorMessage = response.data.error_message; - $scope.failedToFetch = false; - $scope.couldNotConnect = true; - $scope.changesApplied = true; - } + $scope.failedToFetch = false; + $scope.couldNotConnect = true; + $scope.changesApplied = true; + } - } - function cantLoadInitialDatas(response) { - $scope.serviceLoading = true; - $scope.failedToFetch = true; - $scope.couldNotConnect = false; - $scope.changesApplied = true; - } + } + + function cantLoadInitialDatas(response) { + $scope.serviceLoading = true; + $scope.failedToFetch = true; + $scope.couldNotConnect = false; + $scope.changesApplied = true; + } - }; + }; }); @@ -268,129 +288,129 @@ app.controller('postfix', function($scope, $http, $timeout, $window) { /* Java script code */ -app.controller('pureFTPD', function($scope, $http, $timeout, $window) { +app.controller('pureFTPD', function ($scope, $http, $timeout, $window) { - $scope.serviceLoading = true; - $scope.failedToFetch = true; - $scope.couldNotConnect = true; - $scope.changesApplied = true; + $scope.serviceLoading = true; + $scope.failedToFetch = true; + $scope.couldNotConnect = true; + $scope.changesApplied = true; - var serviceStatus = false; + var serviceStatus = false; - $('#serviceStatus').change(function() { - serviceStatus = $(this).prop('checked'); - }); + $('#serviceStatus').change(function () { + serviceStatus = $(this).prop('checked'); + }); - fetchPDNSStatus('pureftpd'); - function fetchPDNSStatus(service){ + fetchPDNSStatus('pureftpd'); + function fetchPDNSStatus(service) { - $scope.serviceLoading = false; + $scope.serviceLoading = false; - $('#serviceStatus').bootstrapToggle('off'); + $('#serviceStatus').bootstrapToggle('off'); - url = "/manageservices/fetchStatus"; + url = "/manageservices/fetchStatus"; - var data = { - 'service' : service - }; + var data = { + 'service': service + }; - var config = { - headers : { - 'X-CSRFToken': getCookie('csrftoken') - } - }; + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; - $http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas); + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); - function ListInitialDatas(response) { + function ListInitialDatas(response) { - $scope.serviceLoading = true; + $scope.serviceLoading = true; - if(response.data.status === 1){ + if (response.data.status === 1) { - if (response.data.installCheck === 1) { - $('#serviceStatus').bootstrapToggle('on'); - } - - }else{ - $scope.failedToFetch = false; - $scope.couldNotConnect = true; - $scope.changesApplied = true; - - $scope.errorMessage = response.data.error_message; - - } - - } - function cantLoadInitialDatas(response) { - $scope.serviceLoading = true; - $scope.failedToFetch = true; - $scope.couldNotConnect = false; - $scope.changesApplied = true; + if (response.data.installCheck === 1) { + $('#serviceStatus').bootstrapToggle('on'); } - } + } else { + $scope.failedToFetch = false; + $scope.couldNotConnect = true; + $scope.changesApplied = true; + + $scope.errorMessage = response.data.error_message; + + } + + } + + function cantLoadInitialDatas(response) { + $scope.serviceLoading = true; + $scope.failedToFetch = true; + $scope.couldNotConnect = false; + $scope.changesApplied = true; + } + + } - $scope.saveStatus = function (service) { + $scope.saveStatus = function (service) { - $scope.serviceLoading = false; - $scope.failedToFetch = true; - $scope.couldNotConnect = true; - $scope.changesApplied = true; + $scope.serviceLoading = false; + $scope.failedToFetch = true; + $scope.couldNotConnect = true; + $scope.changesApplied = true; + url = "/manageservices/saveStatus"; - url = "/manageservices/saveStatus"; + var data = { + status: serviceStatus, + service: service + }; - var data = { - status:serviceStatus, - service: service - }; - - var config = { - headers : { - 'X-CSRFToken': getCookie('csrftoken') - } - }; + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; - - $http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas); + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); - function ListInitialDatas(response) { - $scope.serviceLoading = true; + function ListInitialDatas(response) { + $scope.serviceLoading = true; - if(response.data.status === 1){ + if (response.data.status === 1) { - $scope.failedToFetch = true; - $scope.couldNotConnect = true; - $scope.changesApplied = false; + $scope.failedToFetch = true; + $scope.couldNotConnect = true; + $scope.changesApplied = false; - } - else{ - $scope.errorMessage = response.data.error_message; + } + else { + $scope.errorMessage = response.data.error_message; - $scope.failedToFetch = false; - $scope.couldNotConnect = true; - $scope.changesApplied = true; - } + $scope.failedToFetch = false; + $scope.couldNotConnect = true; + $scope.changesApplied = true; + } - } - function cantLoadInitialDatas(response) { - $scope.serviceLoading = true; - $scope.failedToFetch = true; - $scope.couldNotConnect = false; - $scope.changesApplied = true; - } + } + + function cantLoadInitialDatas(response) { + $scope.serviceLoading = true; + $scope.failedToFetch = true; + $scope.couldNotConnect = false; + $scope.changesApplied = true; + } - }; + }; }); diff --git a/manageServices/templates/manageServices/managePowerDNS.html b/manageServices/templates/manageServices/managePowerDNS.html index 50b0569f2..ca0b14ca5 100644 --- a/manageServices/templates/manageServices/managePowerDNS.html +++ b/manageServices/templates/manageServices/managePowerDNS.html @@ -3,86 +3,107 @@ {% block title %}{% trans "Manage PowerDNS - CyberPanel" %}{% endblock %} {% block content %} -{% load static %} -{% get_current_language as LANGUAGE_CODE %} - + {% load static %} + {% get_current_language as LANGUAGE_CODE %} + -
-
-

{% trans "Manage PowerDNS!" %} - {% trans "Services Docs" %}

-

{% trans "Enable or disable DNS services. " %}

-
+
+
+

{% trans "Manage PowerDNS!" %} - {% trans "Services Docs" %}

+

{% trans "Enable or disable DNS services. " %}

+
- {% if status %} + {% if status %} -
-
-

- {% trans "Manage PowerDNS" %} -

+
+
+

+ {% trans "Manage PowerDNS" %} +

-
-
+
+
-
-
+
+ -
- -
- -
-
+
+ +
+ +
+
-
- -
- +
+ +
+ +
+
{% trans 'Default is Slave Mode' %}
+
-
-
+
+ +
+ +
+
-
- -
+
+ +
+ -
+
+
+ +
+ +
+ +

{% trans "Error message: " %} {$ errorMessage $}

-
+
-
+

{% trans "Changes successfully applied." %}

+
+ +
+

{% trans "Could not connect. Please refresh this page." %}

+
+ +
-
-

{% trans "Could not connect. Please refresh this page." %}

-
+
+ +
- - - -
- - - +
-
+ + {% else %} + +
+

{% trans "Only administrator can manage services." %}

+
+ + {% endif %} + +
- {% else %} - -
-

{% trans "Only administrator can manage services." %}

-
- - {% endif %} - - -
- {% endblock %} diff --git a/manageServices/views.py b/manageServices/views.py index 399e62479..74bb11a60 100644 --- a/manageServices/views.py +++ b/manageServices/views.py @@ -10,11 +10,11 @@ import json from plogical.mailUtilities import mailUtilities import subprocess, shlex from plogical.acl import ACLManager +from models import PDNSStatus +from .serviceManager import ServiceManager # Create your views here. -# Create your views here. - def managePowerDNS(request): try: userID = request.session['userID'] @@ -90,14 +90,20 @@ def fetchStatus(request): service = data['service'] if service == 'powerdns': - if os.path.exists('/home/cyberpanel/powerdns'): - data_ret = {'status': 1, 'error_message': 'None', 'installCheck': 1} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) - else: - data_ret = {'status': 1, 'error_message': 'None', 'installCheck': 0} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) + data_ret = {} + data_ret['status'] = 1 + + try: + pdns = PDNSStatus.objects.get(pk=1) + data_ret['installCheck'] = pdns.serverStatus + data_ret['slaveIPData'] = pdns.also_notify + except: + PDNSStatus(serverStatus=1).save() + data_ret['installCheck'] = 0 + data_ret['slaveIPData'] = '' + + json_data = json.dumps(data_ret) + return HttpResponse(json_data) elif service == 'postfix': if os.path.exists('/home/cyberpanel/postfix'): @@ -151,26 +157,40 @@ def saveStatus(request): if service == 'powerdns': - servicePath = '/home/cyberpanel/powerdns' if status == True: - writeToFile = open(servicePath, 'w+') - writeToFile.close() + + pdns = PDNSStatus.objects.get(pk=1) + pdns.serverStatus = 1 + pdns.allow_axfr_ips = data['slaveIPData'].replace(',', '/32,') + pdns.also_notify = data['slaveIPData'] + pdns.type = data['dnsMode'] + pdns.save() + + extraArgs = {} + extraArgs['type'] = data['dnsMode'] + extraArgs['slaveIPData'] = data['slaveIPData'] + + sm = ServiceManager(extraArgs) + sm.managePDNS() + command = 'sudo systemctl start pdns' subprocess.call(shlex.split(command)) + command = 'sudo systemctl enable pdns' + subprocess.call(shlex.split(command)) else: + + pdns = PDNSStatus.objects.get(pk=1) + pdns.serverStatus = 0 + pdns.save() + command = 'sudo systemctl stop pdns' subprocess.call(shlex.split(command)) command = 'sudo systemctl disable pdns' subprocess.call(shlex.split(command)) - try: - os.remove(servicePath) - except: - pass - elif service == 'postfix': diff --git a/plogical/dnsUtilities.py b/plogical/dnsUtilities.py index ede2cc444..209cd2717 100644 --- a/plogical/dnsUtilities.py +++ b/plogical/dnsUtilities.py @@ -9,6 +9,7 @@ import subprocess import shlex from dns.models import Domains,Records from processUtilities import ProcessUtilities +from manageServices.models import PDNSStatus class DNS: @@ -36,7 +37,16 @@ class DNS: if len(subDomain) == 0: if Domains.objects.filter(name=topLevelDomain).count() == 0: - zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE") + try: + pdns = PDNSStatus.objects.get(pk=1) + if pdns.type == 'MASTER': + zone = Domains(admin=admin, name=topLevelDomain, type="MASTER") + else: + zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE") + except: + zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE") + + zone.save() content = "ns1." + topLevelDomain + " hostmaster." + topLevelDomain + " 1 10800 3600 604800 3600" @@ -155,8 +165,14 @@ class DNS: record.save() else: if Domains.objects.filter(name=topLevelDomain).count() == 0: - zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE") - zone.save() + try: + pdns = PDNSStatus.objects.get(pk=1) + if pdns.type == 'MASTER': + zone = Domains(admin=admin, name=topLevelDomain, type="MASTER") + else: + zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE") + except: + zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE") content = "ns1." + topLevelDomain + " hostmaster." + topLevelDomain + " 1 10800 3600 604800 3600" diff --git a/static/baseTemplate/assets/image-resources/logo-admin.png b/static/baseTemplate/assets/image-resources/logo-admin.png index 80ca74a3c1fab36f0e6ea0684fe219eaa90d10f4..03deb86e9d9794705e1bac6b03682c5f5f010f1a 100644 GIT binary patch literal 2598 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 IM6N<$f|be-&j0`b literal 5708 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 diff --git a/static/dockerManager/dockerManager.js b/static/dockerManager/dockerManager.js index e77e55ed6..a89bcf670 100644 --- a/static/dockerManager/dockerManager.js +++ b/static/dockerManager/dockerManager.js @@ -169,9 +169,13 @@ app.controller('runContainer', function ($scope, $http) { }; - $.each($scope.portType, function (port, protocol) { - data[port + "/" + protocol] = $scope.eport[port]; - }); + try { + $.each($scope.portType, function (port, protocol) { + data[port + "/" + protocol] = $scope.eport[port]; + }); + } + catch (err) { + } var config = { headers: { diff --git a/static/emailMarketing/checklist.png b/static/emailMarketing/checklist.png index bb709fb21690ff7679504ba461ea2c4bf7d746ac..5236aa0a87fb11b17312bd64530956d122d68d34 100644 GIT binary patch literal 1755 zcmV<11|<23P)|<;2OGaYU(8jkPktPJAPRCPf`LNF zB0dz0xTP8jE$ya>1!>&zKf5!Vx#{lSeojuDlH0iZIBB|@5Kp4{Ee3qmPl3uxp307f!5e3r06bYvqVT3YxIr z^mPRXj2{35b4O_hz=%z1bY6lvxJtdm=4Ch+Q$Ws0jOC;IEOii8z|Ro^b4R+X7z%m9 zWC0xyCi3{ceaT*3uVg?&|Lo`FaJdL_>V5C@>|Md!5L_^hVR9Zr#XP;`zx?K(P8>h&G} z@!C89m`fQ1eJx<+nLXFt>+2_8?cP&lw{5PtIDD7|>c@6Z-(motbJprGyqX#qb|eog?>pbiS#Vz%yJ zOD4W^B4&d&JnbHARM`pX0X&g|J4CRAoCU0aT0mbglui-j!HFCK;_B1yhGzeJ`n8W?mz)RN?d}Jr$hSF69z+W>NF5`1VA+@7PN9MmdN(`q7^IvAT#G;Dcl_>02o$5Y4eURHYVYzH$(t5r~mS_W+ku! zE{md)07#4zR+PFRDNI0tyX`zfX;|0YEdQ3;5;zMX7Y2O&Sa{DV8b& zQsn8UZfb)yOn~x}NdQF1`<{iIyZRW4lM+)xz}{+bG(wL2^{{557g>l#=r9`j|b&_&kFw7d>L(S-JY(E7w6fBWL}14|b! zAN=q_BZd_$NGWlir^KtUHb1lRg41$S20?r?R3`BOV7Fe-a7e`%miOh-`L`=?pslSj zr{|~)LVrsv_{#Twa!J4MJo(oX72yB*QR42r;1mP1I z$0`B@OvL1_X13|aB7F&Pd0TzJa-TP1kuONTV!Ivxv)@j zD#j`UV8HLGfIw(K9B45sFvNEHpogNoPAD_tVN2KVU%b@>3z%ZoAOfg=H9Kw%$Oy4y zN9qK;{f&?Z#819`X@8HF&fEnC0Z1$yfXeK!?Fxf~(KoM*$Eg?-2?wAwF!CY^=UgmB zw*+=S|0=ZvAtIBVr$Flj<$;k0#IijMW{_QAj9(`VktKKlY{d(xVTuVHfZ~c#{ID8z zVKKyl6ZXC|^_I3mb%}&8QN>bMG-q)!}#x7yu{dX;VSswQ&Fd002ovPDHLkV1g`o6f*z- literal 2961 zcmV;C3vTp@P)47#YFj z;l10`w$4(|thGk~II=bgFNNHx{0na#;EU6jS+!~vQ>RXKssHHFqdfie(?tEGD;u7l zVpmsLYvSSOwgT-WK&g9q09033qt$BB z>2$5q)2<Ti;znz_ZgHWajuGt#0S*f2 zRQJRTU}owvY4MDphO>vWFq!N5;%pJ-`kM)nYel7m2B?wA<)~CD zWOC=p5l=!$l7tXK3H%9o0cbIOGH3lNV#bebv!UYLEBy7LSuNHn^6r;;B#w=wTz8{$2ml@fcqFbrGsZ^q z!{rj{%odwKb*;(zYc^4Cs%^8O$~psJ4fu3!kzL)xBO)m-tK!x4FFA1PDv4twk?QNo z$uGuak(%iW5A8ybzYj$>s<>X}Ugig^y>C$OP`fe(FcctuY%~DBU;8nIy2@sabIPw% zR-Es)v0G7HY7JUnZQ$|0yl+=`V#8dfjvB<;_p_+1t)r~UNT9EZm$qhd=F;_Mx|S!7 zA%1K$X@^d;Y5%uw`_LoUk5ASl+LbAQK!9FdyVzBPhlit5snBY*7z_rCCFN9Kw!d?& zLCrO5+Da~$)2B}#BuOGKFV9xrMdOX1T7|BnhH9gkK;N5laadRwYPFi;;$pj8U$CE= zKHUS|_Muy#rdgT8b-;!V8;FXEB0fHztgI}~{yp7oL(UKw7|7wnhcOzBL`Fus)g~n+ zg)w8sFmK*G_U_$lE1xxC2(u=%K26pXE*C-p0Re=BgtW^@Q?x~wUazO5qy(eU{%KTW zsH4VM=dhhpA)|}N8;hl$vMK{|nIO>5$4SC<6j<>fJB#th76Gx729Y}jCZjl4B@0B>(^yuBSy zTJEBv*7395({M>ZSXdbS`}gPAv13ky2gu0CASETmslK3~AU^ou16O8$30!g|41a!H9$*WQ)-0}vn5ITq_My)0*po@X0sWM zMq?LzY-}t$cI-f-v8I}0V`F*w<(Hl6^6{}IB+O$)+qZAW*Vor38xavfL_~xWZ8u@DSlGF9Cjc)zHi}kk24w+H0gnnHQY1-|8iGFv z+z;r0g_0!gY}!Z&A%JA8n?Lh}5GN%`ddDRJ1qB71Jb4nmUeA;%){l-`3LYRkJDYv` z_Bqw(>+9<1yY3&pSmQV zU%!5&rKOROkbqvVXV|b|Y}>Z2S@2+;8ydgeb%c>Kv6dwl~G6T=~_2 zh=!vn9(A*=ACTnM91tBHOF{`%{-F@Gx}BO^&lN^)+s;nle*CO*H-x`hsO z2?)essKsb75I?a$-9uZpbt|&ZmvT6(fY7ep85nh+L%H1ZKTxQ>(s()4?WaI=bTpeb zZE`9zWXKSP3~`>OuCK4>z<~pHx=dyZ_wRxPE(aE*nD_w&Gg&Uc|3 z@pk%Y4rdk6vsWLcOrPmgcHf>fjvU+%ts%e@$j;7Y?%cUtxnjEm`1<u8+0be;4=*&I1}iTZj8V45UJdpgHDwtcc^ z0283baJ5pn{ z72Lgfva1ILJ!IoQ3Svnx6v1k;R4^AcdlJ251EP4^)I*{EAsa|R)X*r#OAfmMi(c9+ zMS7DCQKBtsM$?pl$vnR|^JeFpw{Ld4voo_1=7Y(6d9yn+@Atm%_x*WGNFs?Ol1L(n zh@wPx=Swt8DAC{`#Ds&LDf}^M8@l~}Kb-f$ST79p!M##2#ts$6drfLw9X(jvdmvn* z$^!I%m<0AK+Ddj85ut-Np@<*Ck6nja9(jIih+^n77&UBKp$}dVCK(6_3DEFKu)p2NW)NT3>bw5e|0q?0BWvz)96^;B1f={T{xSxiy$-tPzC@B9$$}07$-0Q zm=&bD27(NL$CZ5D$DMOT;sDS+ckly%h!G)LcNm~+R)bFR1Bp=K$5#&3 z_yi~6gngV5U#$sGEW-6dgdjAD{ma`q_{?Mo05F}c>JTS5yuvdu!Ey_p$VZnan27mh zKv0V;^$-AH`U+p+Qi~P#<%#aN!*l!D!!x)X-smh6Tx+(%t#~4$JRzRKhyzeT05q&H ze5Qzb;^r z2gvH?`&JpPm~oZTEs~{;7y7G5zPY)WqEvGLaP|jO-U@S@ARhf|NhBx(0L5lJadBh0 z{O|4oDX_Y5l~VBLRqzg}7BA5)@kT#I2qCtx{U;ke>p&1F_oT5fw!a5#mTt zlJSIPNha;s9oj9W-ApjN=rAjZ1cnd^CS^RKaJP!r9Z)9N$CDu}4=wzY1|MHlZL;&r z1R)yG%=hC124CUf7Lj1qk0+ef@6;XI<^(4dX0p}L0;lN~0I(I)Ku_}tP6_~&1)iv& z>kT}iP_H$_0)kizh$->a(Sy~8zc30gS&f5IH&YZ5jEUX>Ls(%ZgD~+jZ;*&Qp^I+P zHFv-OqOK?mMAma;Zow>ML=p+4MUewQtkJ<+4R-Y4L0lRmJTLSJ@v`;^6CAD&j_7jhx8VOT%gPVfbUh< zcSk?aGhe-v)H6ptIar|!d(CZz;=@Ib|k5< zwkC52#q1o2wk$y`hD2dK!6)bb7=jnh;qYZ|mQtOsHg1BXQCA3Chn0GR3(SB8Fl(rN z`EEw)4hnTGA{G!Z0IJVJFOJ<)MP}Y0XOvi}NG|@c|4kAAH!z4<^j6cD-*9dIom&(f#?QNU19M8M=|u{l+A5|Y#b zh&wvqVn~$AYlrn`&;6c(>scNV>Mv_IVHEw_w~mGfg4u;+>2`i2wEX&gMziP;s)XbY zJwe<-=`b$;@7=-41Y_TpZsrbVjPBq~g}ZMFmOGd+yFfE$Nl>%^8x&rpMxQYP0Mo3jm1lyK;LQ-yLMMWS5Q*gw zQ8%d{0Qry4Wdnl{XdCJH+4Y=KpA35$#oY;#n6sZQ145Nep6R>Tg81ZZAoNZENFt7wG{i9PytL;ojt5um)K(i6lB#x~eqc~RUSVRS7LO`>|P#2@~M= zH|sHnwNZrMa^{tuYy_3!zCuIW5(xOri71*70p5nDS_|%1uw+1X)9NZVZMiWU&x%b9}th#!BE-I%DTDCWM*Ee6IY5Kc}x_*fK#)Wuq zT$ne*rV3dRP}>l=T{P=egxQ1TGu3&>kO05GS+Bh<@Q^~D1PTV1osG_$rr7-cW<8U- zX$kQAoApS6wL^()9$t1fIuBrp=#c_zMl=eI`Bm;ZP!*Ya0T$k5^|*0=(;+uTjXOBjhv0`2i^8QSbWZYsM-cm4LPN+p9#k zb}|D#cp0ETbZh6@`t4Pt6^=R)(lo7c_)zDoy^uB6&L?S(KXVjoa-++fAk0op+_+(Q z(Fg*(4NbK$bdm#5_k(X@w`DzVI(s1MdT&EhZOhiWw!z{d9{K&vx&`-7t!4Q~+>9~z z$^)Et*&%dC;uc^@oc{MjcCH z4r?Ru#6aEC(V%xzn^VH!PZ=YmeQt{{qb|@J@8Z2tUZaa$M|Mn9&8WDr>>Ftb*wyj; zsB+C_Qgy@ooI1F`lSsz%j49{OS*ayb%b%!SebT#=|sHOOU!tOJ$*mq)x%-*!uXK#j(=aq@x3(wg07w4+UPr) z^2n5RpT)LCmw15r>{5#h&=r`h@c7_xVjDk&|%KT^GYYtf6eBF#WxRi9zbwJ z9Oh~pqH1z!RM&OHmQzkOuP}p0h`s#=042+oqB{NyKzGDOB@oBX+b36y9`=c*r!?&DQ64ge}kSp+Ls3}{_$U73pj?&lu zG62QPmZ9}^0uUB=s$AK5!}YDP6(~HKl9@}u$!E48ris#ZT;UD?)SL_G-up2C|8ZVH zSaXhfzY;t)$#pqPgz1d@lbv7F`${VS?q!#uef1sy5qmjE2T7%~%e8V`9ReO3ITFy_ z-94?NK&0`nNHPJMMo}aPfU5M+wPzmy?-pH7ujWpt#&dShZO4Gsa|+}2e*oaP_!8_r z#{h^r=cYc0HXEgM3G7XVd0hps()0dTKb zOZNvEjZ#5Pr3lCxN~vkNtll1a+EU@RYsoV7&LaTCN){ld37W>Nx{aCn06|SuZUjsh zPVLx+6^jDkrvK@eR?@ZSBLGTPeGmJ*1sUlQMNmU#4gprEk5ex`3xIR+5^N_917MUd z#7e|LX;iHLN#+WLpiNR6l(I%&Z!gJ2B7Ma?BD`ZORwN97Q%n67S1BjoPd)wOYu8Y4 zK{bhFW?s^HTt#adJ#cXGMiZmdb(VmBB)&$S_;J^;#!H3$RFVtV&~ma^xn>u}UuoVh}U z;WYGiTOi;It!rp%2fm+;K{mTRo9YvS7zRDhKLbGFqKmK}`vicbXEEmIy8)=E|7n&= zX%7T^q5g@GYRQ|mlYs7*c3^gQ0Z>ws%Ic^h7hQV~0N`5j9SSd5nx)p1&nW_Q)e6%( zwI3Un$;s`H15j91js0jU&`Hj}ltf>uOH|bVEL*M8?{g|G-rDFp>aB0uEs7PHYKTT6 zQ}Pj1eaDc2ao-(>C{W;_^P^PXcPzaEvg!MP5_Y%r?>Zfn(vc=m853X_#*_p@4&xN_ z?z$B#5<`D$7XlAUyw7+@I9zCGTLeCy zxY>C`GCD$}mljj8VKeqQqi*^b69OL>8rqh@vLR{RK)`2u8=CGFXicZAx3`Z(h95zt z6y;^Ph0l^Sh6*$rwuRTB6=$Ev(cs?Uo2y6UwOh8k*=w{ig&xFeu6?A5DKuG#5t91bPBTAseOZMb;UjF4qn8&I6c zzLosrvoF8q!Drv$PyalQs{U?{&U3=DtPP_TjY_~v+tz=fOzjq6T9e$;jIF>`_~+kI~e>W*Am%ojqT2y^Gm=GVX2#O%t7oOB54 zj+X7dH^(X;H!0e-)&G9ut=K%!;c7ApD&zV)4+bWbO^>Eu(|5M}DNxQh`G}Jwj z0;yrxe&NfPUCNv}nf1ql94AaA#o3MVgCX#u(@^)MuPBoC^7#UKJYgkGOJpWo@r0H1 z`2u<-zGZx7$P!|ZqK={8`xaqi&cxudh^4p0AoAD{mp{ceWv T|KVWZ00000NkvXXu0mjfO;z3U diff --git a/static/emailMarketing/mailing.png b/static/emailMarketing/mailing.png index b8586aea2c6ae186c8d02b71572fd44ae17f9dc6..da227aa3207373a3ed7acc26ade5ce0ecd3095d5 100644 GIT binary patch literal 1950 zcmV;P2VwY$P)rZhnjia)!hX%&5Fimfk#*{TIm zVn!cC=!08JN*k;lseLle_1v9%XV1Mmo6KfsX4|p{ZuZXHJG*nf`OfczkhZj?Ep2Iw zBw9neXQ)9aVS^AC2K%J&$ECsZ$}yVz*HO{|^EI%y6AnAzcm>Q;a89SxIr;E)_T>q} z4BZP#jCcx?0Ob~&69kB-^h%hla=m$qdH{5~-dv}o`0FFr=PoZ0W~d4GJe?2#q{C&O zv}ixRHW45?LhYi&L;#dQsdDvLC`zizOLGB=<^!<82Y_Gz(g45!2Y`WL-F4_M^5f1M za+eDTm;w9A7Cpb5A6ww#5{wJV+J?{nHbMDm4gg637#aYv`M`Pd{nIzb3WOeNmy1mx zrW>I?0|Wp>XAE(vbx-lnLhC`0XiZ}T!3UrO02Bon8l~3I$Mc02gP=IO7$oJ&3}7Yz z^P(mg;u7oL56%@@Xby_EkBJEa0FATlJF6?lq67d?ImZ~WZQt2K>&(H8*BmNO-17ky zRtP!%OgAusaz<1@vhI8TOr$_`G;9uW`2=JRps-aR7j{#|UCQ@a`Nr zw!0^n90#AptnXjv!?CSbsPjGF)liE@+h=5Qa@_KCUUM~8cgSB*KG$aVn;beuau z;RA#Tr~vqkxvI>8$+x+iM!^jBgL0XQ!ae}L((E3FU~cLWMyUosh%Y>1DLvcGD#*H3 z6t~0z8X^|U@^tFu{kpJmKNa?#9`*;4Z*cL`WyhMh#y;}WtyA^QA;CNWcZE|_ z1;7~qr3+O*AbbE;nkYViB5GIXUM8qXl;838AA^TqUT4=ZAwqKq1ws{oS`e@!Y$6Ky zsW4_mP#DAjBy0|HR~XALkEQK9KfN#rH=eE*I;cG6%8AFOqfAe$naj?PRgQ;WS!b)} zAbuxNCamB;-09Xbfyqx#thJMNj3jBFz~2n{iBPN4W*>kg^8^fluKe)k1Lv6;6jEMx z7w7|0XugyWz>W{XAWNHbpS{}asOF%#2{S?X0WTGWSfZ*i; zEf*?hjmbp^SAH*`%GM9hvBszoE)}Mz9HvrfteOUU@%u^swsO6+Iq~SAz8Fye_&t0o zj1>v)6yY$q^R<(`hhFb%eNzR$7*V4GV?absu$l_X3<+$iMClj8F+qMYBCUP>+|8wJ z`_7K)ex86CK9Mdj6L2xcnejegwuajC6PU8@z1t;lMtYPmC`IjL_zQTVhEGC^i5evoOXO z0BA{7G|l(S@@t}Jg6Ie6Zg5z-|GhIKa6Y}K16 zB*OtP_?U+CTVanKn>naV002xlzqgqvfV_S`On30FE+7DkFh*6X^JBJF1jX5Yi(kX$ zgOM`P)_MyP)tGvi(uDVB=;|NmHca%G;aaY{m3xh2TC?=+)!F|jaL`2C$Bth2R&g&i7X}$kpyR!OFrZNf zJ^+V8Db0=)gjNYplEy-A-xIc8xS~MdKp4EKk_kwF7(3YiFiZdd%Szp^2oM4~O*K_y kTiVi=wzMTe`Cotm0FRy#x^sZB+yDRo07*qoM6N<$g8R^R(EtDd literal 2124 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 Ag8%>k literal 3260 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 Z;GZ;>Ulnqt#w!2-002ovPDHLkV1kgQjobhL diff --git a/static/filemanager/css/fileManager.css b/static/filemanager/css/fileManager.css index 104fb0e6d..b69fd4538 100644 --- a/static/filemanager/css/fileManager.css +++ b/static/filemanager/css/fileManager.css @@ -2,12 +2,21 @@ width: 25%; } -#navBar{ +/*#navBar{ background: -moz-linear-gradient(#a4dbf5, #8cc5e0); background: -webkit-linear-gradient(#a4dbf5, #8cc5e0); background: -o-linear-gradient(#a4dbf5, #8cc5e0); +}*/ +#navBar { + background: #0daeff; /* Old browsers */ + background: -moz-linear-gradient(-45deg, #0daeff 0%,#3939ad 30%); /* FF3.6-15 */ + background: -webkit-linear-gradient(-45deg, #0daeff 0%,#3939ad 30%); /* Chrome10-25,Safari5.1-6 */ + background: linear-gradient(-45deg, #0daeff 0%,#3939ad 30%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3939ad', endColorstr='#0daeff',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */ +} +.navbar-brand { + margin: 0 1rem 0 1rem; } - #mainRow{ margin: 1%; } @@ -41,4 +50,127 @@ #htmlEditorStyles{ margin-bottom: 2%; margin-top: 2%; -} \ No newline at end of file +} +.flex-wrap { + display: flex; + flex-wrap: wrap; +} +.mt-5 { + margin-top: 5px !important; +} +.mt-10 { + margin-top: 10px; +} +.mt-20 { + margin-top: 20px; +} +.mt-30 { + margin-top: 30px; +} +.mr-10 { + margin-right: 10px; +} +.mb-10 { + margin-bottom: 10px; +} +.ml-10 { + margin-left: 10px; +} +.my-10 { + margin-top: 10px; + margin-bottom: 10px; +} + +.mx-5 { + margin-left: 5px; + margin-right: 5px; +} +.mx-10 { + margin-left: 10px; + margin-right: 10px; +} +.header-logo { + width: 315px; +/* text-align: center;*/ + font-size: 16px; + float: left; + position: relative; +} + +a.nav-link { + color: #add8e6; +} +a.nav-link:hover { + color: #E4F2F7; +} + +.point-events { + pointer-events: all; +} + +.card-header { + padding: .75rem 1.25rem; + margin-bottom: 0; + background-color: transparent; + border-bottom: none; +} +.form-control { + padding: 0 .5rem; + border: 1px solid #eeeeee; + color: #777; + font-size: .95em; +} + .form-control[readonly] { + background-color: transparent; +} +a { + color: #6C6CA4; + text-decoration: none; + background-color: transparent; + -webkit-text-decoration-skip: objects; +} +a:hover { + color: #8989B6; + text-decoration: none; + background-color: transparent; + -webkit-text-decoration-skip: objects; +} + +#tableHead { + background: #8989B6; + color: #E1E1EC; +} +.table td, .table th { + padding: .15em; + vertical-align: top; + border-top: 1px solid #e9ecef; +} +.table thead th { + vertical-align: bottom; + border-bottom: 1px solid #e9ecef; + font-weight: 400; +} + +.table td { + font-size: 14px; + color: #666666; +} +.list-group-item { + padding: .2em 1.25rem; +} + +i.fa.fa-file { + color: #6C6CA4 !important; +} +i.fa.fa-minus { + color: #6C6CA4 !important; +} +i.fa.fa-plus { + color: #6C6CA4 !important; +} +.list-group-item { + background-color: transparent; +} +.bg-lightgray { + background: #F9F9FA; +} diff --git a/static/filemanager/images/fileManager.png b/static/filemanager/images/fileManager.png index eeb27580ffcf809f57e8d38e8940a4186df3fafe..03deb86e9d9794705e1bac6b03682c5f5f010f1a 100644 GIT binary patch literal 2598 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 IM6N<$f|be-&j0`b literal 11191 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 diff --git a/static/filemanager/js/fileManager.js b/static/filemanager/js/fileManager.js index cd88bc316..82e9410b7 100644 --- a/static/filemanager/js/fileManager.js +++ b/static/filemanager/js/fileManager.js @@ -711,6 +711,7 @@ fileManager.controller('fileManagerCtrl', function ($scope, $http, FileUploader, function findFileExtension(fileName) { return (/[.]/.exec(fileName)) ? /[^.]+$/.exec(fileName) : undefined; } + $scope.fetchForTableSecondary(null, "startPoint"); // html editor @@ -1568,6 +1569,4 @@ fileManager.controller('fileManagerCtrl', function ($scope, $http, FileUploader, }; -}); - - +}); \ No newline at end of file diff --git a/static/images/change-license.png b/static/images/change-license.png new file mode 100644 index 0000000000000000000000000000000000000000..bc0c7479df9e559763d18073e5f1f39e2a22ec7d GIT binary patch literal 1669 zcmV;027394P)RCwC#TTf^lRT%%?WMh@Kb_LO* zJ*)^K9?W=9sUU0&MkQ1?2SupJM!}2NZEhZf-Qdwfw}Ss-C99Y!sO%yJFG{uu^%RL- zJT?l(q*60zE7WG^`Mt@TnQx{$vpX-D=Qhj-llRS^H#_e)-=E+2<^>>=OftzNlT5ihBdFz)7X|2ou%@R-3x%dy4dHedefnY=YP zAT04Y97H(?LexMbK#{+<5knQOC{}+TP3jp{K9x~cVZ?`G8 zOSo8>)3yW&fT8ePxl{mv5CEFoLAV0b20||Y0Q_L6 zAt=fe2~3+iEb$Xv(qI|RcFM6tXn?arau7I}37Mea@`-5d{Krthri@$b=yUz`^|ON> z5GVj`f4?geT*1FHFt#UYQ6m5l^tXzD)Wtmz46C2)z&O_gf@=YXjnR~>yMuFD-r;EQ&dh6F1gss^7z08Fd`%|h$% z+Dd7E4c~5&0I=c|TL1^Tfa1i4*qET0j?;06@#`)5(1B|3z?T>62*5ckgY&~SuRi_R zLK`km%#ogs-y<;8Unc_L zu1t9Qzq0Y3JfNQ{Qs1P?4p3q9${Uq^vir~MMQFmOm1}EKg-(hp2+al;8NgY1O+37L z_@fJ+?-xHfpC3JSzV^ub>&2v#Dxi%gD7u3rMP4@e7YZ^GzPC2_*gL=H`*8=jM%>|qWPeUJc;)C?3m<;UpAg}5!V2)1IKCo}BOq|@iMLiu zy)0B`73nj<=r>-IEHE-jxY^+Q=WlMI1+)-=5)Qz`fo#yJG8y&rs5d9x{H?xl?Dpw+ zcK}`P0KI-}B<7sR0+TcwAOKT1*kxJ{(^`NKA+wh|=%LM|7TAowO3X6-7y&>doDR>t zaEsW#Z)|qGi~tm5x~oVFZ~nsWZB59u1po`j4q1KlaRAWb4)o*bMoJ)j{qk+1cDN&H ztTGf+cVZCs+FRBz#P!S~Cm~CqYf>dgK93KSxB%#I2f98WN*JKYz6_9i1XI)edxlM6_vwnF0VpFU7|M?62eF3tb@+LtGj-&=Gw2g296o zopT1z;!!@zGQ37#LxZ21kV;7@)$kU;UHXozu}gK~r{c0f_rCJXcBq0CBDq9}_gy z4lV$3z9;gz$PUa|SE!N&c(4}mh>-JPCbD*5y4)e~_9CmngU+0R*1)KfHg9Jgz^+je zeh```@cYvk5Cnknt_;=NyY!WRdJ4Ivh?0H$NY zxKjj61nf?49{qU)h(QZ_SSk4N!){n-JFVK;$pm)hPNfk08Q_g89_Dq7Z9v3;AVBnC ziDN)?0kI8;1P~0e*Q`ZO)Dbo|$O3z#wXWTXo(crVNAQ(pnq~6vXfuAC|a}x|MaW+A0AbpgM~7q+$oU&}EGv z0y+z7t{2%xk(n$2+QZz3B_ilXm~SE2hZ)R71swR$#ScfX$L>HFf*Zs<&7SI=NV-^( zicMCXm*~Gy@+?MN_Hv>>@OaWkLflBH-MZfcW-`7G4un`lhMm>_#_zNH>0yGqGQBii?V8^ z*b)d%kH<6WF7&+VqmtKgtM6Bf5yx4}t`j9<@_dLd%&B<`gKtC3NpEcFM+;{ymodTs zrr4E;sk%O_@H9I?3Yg3T(f8_QEr%d0R>htbjs^MJk!*JQS{EVO84uLNQsyz&@{tc}k~Q1|#? z;=^gM&t4QX*)%$h5kA?;RZZhfBe`@fbLZqW+%$R<#~>zqG-{Da^{T#rMb3A5R@Wl= z9hysvm^1d~z2A;o*13A-jGeD3Ul+eKXADxdzIc|cCq*IjQgR#Yd@W;L6!_){S_WY< z%_#_TY%POO^C3L`KNy$yTATNNX8_-v+PvJ|iVS0K-u_L|H%(i|envS66|kua@89o- iw3MYR<=pb000RIP%U?rhfXR~p0000r literal 0 HcmV?d00001 diff --git a/static/images/icons/change-php.png b/static/images/icons/change-php.png new file mode 100644 index 0000000000000000000000000000000000000000..54ac72fea766f3d7de3867179bd3ec5f56b72614 GIT binary patch literal 1720 zcmV;p21ogcP)Q)J-{C+lX0NNQYOy=(RA&{uous+#n=hE5Iupc{&48}`qqF%5VO&uMav@7 z09hh~>vg#A!NWfMmOubOSKpQ*zdUwB{py2!BWw8oIV`?`Yoq;JZ+9Po6GR_w`qh}M z0*EXivVahoK>FzU@17Z`UtN&X00{shMM*qp9W&w6yFa}^^ArI&)#@N zFqu@};EFulZNFY733V>W(bED4dyil^jv>KB;ji_V2qU=4PuqJr_2t96-vIYtb(#fd?38}F6*FiTPM01>`<1b0qzwHbWg zFi=M{*+1d&5puw26U972slNwH(f4PHSmW{IXsP5-C2C z3B*vMon)w`P$!DePDLx=0vN&2;_mL5=5*WObgSe@Xvv@c9`pT6yIm_~l1Z6WeS6v> z#plpZ+OoM=VG*9Ph{yL7Kl^&#;cCt4wyvx(snwDf!{2DGXbdFDPR+A^|Fqjy|G=F* zP3(y;U)~ws7v^IH>$5dfx-Dw1=CKv64vKIpkR&^GRl)Tbm}#S@VrwWXh7guX5G^}( z)5_ZT2*3!Ws_F(y_lBPG?I8X3dP9)g7gn?I?SgjNv48I;e;iZtyQ#o&0kpN9A7?LD zoWpDnjA&DH^$y`KVJ`2tQ{t(&cey8C8}`|?gsB+8Viu^_DG2JMmvTvAi~bQq@VyQ} z_dD!!`n1CefZa@-@!u6|mv%w6h@sfMc<#V}YiSU5EY9aeM#V1L%xG9k*cG+nXLXoCfSidG(BszNLsD6p=$wR$|4x`b{y@^w?eRwGeG<-&;vL6 zZCi*y`r#qD9wQyd_{=6pHl(F0kIw#HbD|njs=c(+$Z33<&766y)u9qKbEK+b#-#ey z-D%4}g3e+j6$nFETM4orS;MIMO#*xCTq}k!3i7|iNOT}*nT`>aVke%M`DMS=q<&MR z*q~WE#WkblS$Mx5Lu8E=L@h?>6eNd#ipfPbDRe38gf0MODu}qM<2sk>Wv4auHF+X7D15E=LRo@$eN6yCTojW`6#+Lscz>iKw%c~wZe6#31sDLD`v9@UV}=_5 O0000|<;2OGaYU(8jkPktPJAPRCPf`LNF zB0dz0xTP8jE$ya>1!>&zKf5!Vx#{lSeojuDlH0iZIBB|@5Kp4{Ee3qmPl3uxp307f!5e3r06bYvqVT3YxIr z^mPRXj2{35b4O_hz=%z1bY6lvxJtdm=4Ch+Q$Ws0jOC;IEOii8z|Ro^b4R+X7z%m9 zWC0xyCi3{ceaT*3uVg?&|Lo`FaJdL_>V5C@>|Md!5L_^hVR9Zr#XP;`zx?K(P8>h&G} z@!C89m`fQ1eJx<+nLXFt>+2_8?cP&lw{5PtIDD7|>c@6Z-(motbJprGyqX#qb|eog?>pbiS#Vz%yJ zOD4W^B4&d&JnbHARM`pX0X&g|J4CRAoCU0aT0mbglui-j!HFCK;_B1yhGzeJ`n8W?mz)RN?d}Jr$hSF69z+W>NF5`1VA+@7PN9MmdN(`q7^IvAT#G;Dcl_>02o$5Y4eURHYVYzH$(t5r~mS_W+ku! zE{md)07#4zR+PFRDNI0tyX`zfX;|0YEdQ3;5;zMX7Y2O&Sa{DV8b& zQsn8UZfb)yOn~x}NdQF1`<{iIyZRW4lM+)xz}{+bG(wL2^{{557g>l#=r9`j|b&_&kFw7d>L(S-JY(E7w6fBWL}14|b! zAN=q_BZd_$NGWlir^KtUHb1lRg41$S20?r?R3`BOV7Fe-a7e`%miOh-`L`=?pslSj zr{|~)LVrsv_{#Twa!J4MJo(oX72yB*QR42r;1mP1I z$0`B@OvL1_X13|aB7F&Pd0TzJa-TP1kuONTV!Ivxv)@j zD#j`UV8HLGfIw(K9B45sFvNEHpogNoPAD_tVN2KVU%b@>3z%ZoAOfg=H9Kw%$Oy4y zN9qK;{f&?Z#819`X@8HF&fEnC0Z1$yfXeK!?Fxf~(KoM*$Eg?-2?wAwF!CY^=UgmB zw*+=S|0=ZvAtIBVr$Flj<$;k0#IijMW{_QAj9(`VktKKlY{d(xVTuVHfZ~c#{ID8z zVKKyl6ZXC|^_I3mb%}&8QN>bMG-q)!}#x7yu{dX;VSswQ&Fd002ovPDHLkV1g`o6f*z- literal 0 HcmV?d00001 diff --git a/static/images/icons/compose.png b/static/images/icons/compose.png new file mode 100644 index 0000000000000000000000000000000000000000..4e786da4d0d16c631885537abe0d440936ecd604 GIT binary patch literal 1842 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 literal 1523 zcmX9+3pCVe6#vr_6MHJQ7^+ikCrnFWWfjS!Jn|}bDUZLA$9j!nG*)6JmC%+|lu{^< zqhus)bt>AVSe4R43>xp(gviKa?%n@v_x$d?zwdYMIro0wcT-)Rcd66pG=d=1?d^8# zp|Z8yRTfb3(j9?>N(*9a?A=vVR771aV(O?GW#<(`5DNF@u3#bQ>83<&uB|6`FFT0K z^N$WBcs!or?~!3K0sc{ehV1Czi=$iV1fiJky4&3rDI*BX2|^DB@~zQB7yC_+rHM_h zc-#&74#>Ahe>$?3Ba4p5oY7YoNgec~qn{3vboA9mUyA79AP)z*__-1%Dv{L2eV%XU4er%w*5`slME)zDv^n z%hQ7eUx%)K9V(m|rcf;JMGZ;n$~*e60M<%it%6W}2xCBmA+R?A#}uM}hG;Y3nnSDw z9NZ$GHqH|M*aitUkidk)Oi0`bNp>J`0D&VU|9_WbE^yopQrsYQ52XDD>F$v33F%&N z(gQNKLWUn??uX0($O?k2V954`Y(F>`3OV7B69E?@;Q|{jvLTlPm!hE{1g?fcVFDC| zLva#Z=Ri3Z%F{p?3paUiJ09*OLiH8u&7s=|Z@A!nKGt2wx-zVkVk^Ik$hNm)geroLE1OLxVZ^@e8VTbNF6?jD}|e8|ACaBdR+Nb>2N zoV?Og-%^ZhvL3?q+c~qjhb*X_lp;15-{iEEP{F(xR3|@ss)ANt8B_ zjC_Ur5#0(!sgfnG`|4LJ6h%aG#61fwjph@Rv^iq7udNq z)M-YAadyU2JF(t%pI<$uT9xC?CoWyyLoQogs6~rASI>8>Dz^GqKR0Z6-cdl;6IYZEe7@BP6z*le}WB9s`Vai-U9W_fMFaOfSzkVPLhy z`d_zOB?a5^s*Kj97Q4z^lYC1;?-g#$6xuw@UU7&!=2{ZxJh>`~2y;xhH9l1Ng<5FB M-qv|Xxea;bKRIqlUH||9 diff --git a/static/images/icons/domains.png b/static/images/icons/domains.png index 21cebc575ff39333e55619fbadc5ea89288afbac..8cdb933553877be1ab5228f2615311fde9c4785c 100644 GIT binary patch literal 2419 zcmV-(35@oMP)hb_l^OJy)R= z_@i4SRFzU#|3Re`q1=H&3svyBRYlqYK8r{QRAis{189-#gFmVYrM^=OG$C*oAV?@k zu@RLTRn@K4A|wd)N}#Gxkt|;+A8m6Il~CJwr|-?p?7o}Z`-r`^6dT>^Z#?ri`66NHz795T2a8FrA_ zjAR`DBIc=#| zDFNlbe)n8|V}NipWIo?2?xzg^-UFnt+=OjdRtEzpdN-vL1tXO(05izs@vZ;}QNp`n z1At)!pws~XKmhVs9>4OLf6knFlJKgW{lj=U4Msx%s(7XGJ{JK16L8I0Rr%hLPes`G zhI8b%T=@LI@(4hM0WgPUT>$_CIL5$|01Isfs>s-j<6HgpmxNc**a0jW0JwOKAk*b$ z07M}K0H8?)G@ZEdGgSnjz$74t0F<#DK>%C@0JejZ3dCaO@sFJK1)%{z4Vg(Z01B`z zm4$B(cz8d{0C3@&&84RInGN9d*4SrD2!N|pfPk3&)2?Cfl^=dSivS=%*cM2sNMpTr z?YQW61;zqFL!-SYX0P0EwGT%7(kBs!Tw{9&V z03;Q4DG~Vl*r)cbNB`!mEeK=-S^>x+0A4i9=pmvYs0`O`ZqZ$C1WkJV`)MB;Eo&Qq z*K`0YX<@u!A=0U|DlL56L|$uiW`P|f!L43_m~aHTwVD% zWU{vVd^C&%1e1tB99|m`8g7sq!Dav&AWbs2ScM&D*W-rbZZM9}1`vZ)Z3D31B!B+9 z+rOwKLIPz4;Os2DKeM_ZM1c@Df?i9%fILFz|L5Bc$K!x@G!VeNGJ*s|&V2scJ1-<4 z3YG!_`%LHdylbx>2+aVvp%LWt`+xJ~s1Da{X&d|VK&T!4F~4<=89{r;-Va(B{LNh# zmGHS6Nkn8nk_(oOl76EN0BH+!AXLQ5Z4Q0qHHtt@DO=zUEOPz;d-U^$HpW|R>m?=Y{#AD=Z;1?w5SpSA*_C1MPp`-gsFdn*Uw zsPy$yMkJV2E}-K89ti@A0~AAzJ}Fj@K;ZT0IYj+S&)$D=p%aUPJ*a@QVF8eB&^3PO z1q98MkJkhU)~K6M=UDsn+>YEfO z6|CD<2Yb^y2$2N%aMgg@tFbwS*U5EUGTZgQF&_c2tsoH)!hmOEts5%!fJ7uggrV=o z0wJ^$kfbEE?{e^I$YU{%m-nNap}^_~uwKRbEZ&oWI-uHpY@g_%A7FbH+bKw*XmJ7S zGgzmnaJzo5vm_)DEO9T;o+vq@EHAI>Qk!j8U038eO%RZM!yU)Y%7L&KmDHH zSrQsxtQ>@ZNkbdL+0X_vtv))V>coV0Q6wdv{%~y182u<1qj&47pAK>y*3VYsJI3$E zNJ8W(l97Z!`TowNKS(Dz#6+6So@Uo_>OI*M0ifKLT)5i0*-`$86l2C`F-nzKO2{U}EsLM=BmwBnCUlJ$ zSvqWgZtjx|TM)riSg2H3Wr#5gA}JNR>U3DA#KwY%xdssGv=vv^;V?^?xgnIZzoatA zBoZjL9$;fST+=CV%1DX%dH`DyY65_#yipo#q`;z)k@MK!5(Xd)03FdrX|@R8haPi> zuIhjQcBf*q8`=Jfs0LZokmef%a7Yw%>Z|tFWgl77=d%x87TW-Gp&6Aeg?2*iU z`Kh0Mr6qB??XK5rmfG+^kgAV8dilhvEVvKDFKF``E`MDexN7?jbV5Y#4@Nd%_Ug*VPE6cB7up0` zf^Qq&GqGy9hE;A#T z-&uMu-8s{X2jQ0c-XICchei;`H30y*F&r9A4*{4tU7nV;AxkGjNZ*w)Oe4d!9eY1; z*wz>=a=Oe5Ots7Ox-5ZBMF4UPOC?u5xAcv6UEok9>Tq(X7zXKP63WWzVIqHiAIMgG>PSIo@)4 zS@FRwIw3*_BZgg|EsTW;8X4$2=f8Ev18mU9rXVWm0w)yL!bK8 lr#|(mPkrjs8AAUPU;urWYc=4ZL!kfw002ovPDHLkV1hYDWWN9a literal 3206 zcmV;140-d3P)zHG1MXm=F>c<&lsl$Cwk1q6Tv?WEUfnsF92o z@)DT0Fz=q8zV}w`AI)_4oqo;WKxeaj|GV}0)$jNH{i<%=s^1mH82&#)mRo^x;{pNY z96Yv@*u=+st`cj@r-wM#Yk+tFJJ#*aGnz%h<~?$@bD12kYeiItM8pWMsRJaKE`{l^ zw6{Nenr_u%l-!L7ZE9an^EuV;To5qfJ5(CuEy8dua5WY+YLu^?`k(t?Q@~Fli%W9p$b9@kJm6AgVR?f&?Oxf1Dfw z2H^;j&qmR2+Zkmm)Jbhyx1L&G@!V+XJSqfC{yw1rN8ceZcLCLd<+9epo<9H;dB!k+ z$Rgm(vkw}aJrTVBuJ9GhpxP%b`-ahoh<8mu?I!OQ0qcN?+2wMwhdnO=%HLi$DZDpq z)cYJ{%u5q6@Ut4M%Mz%I2SE9Ca(@@b{e5VN=E8`e-1APTa*0_({A~3A{kmFqJPxc_9{%MiiS%p4flLK3J zN@-uwwyENO&c=?jdi{*wKwWpgw4FGg5=YowDHBD-?2#kq8i=mZ)-2; zMTGOM6}m>d&i)Cj<4Z?u2xmb+-6rP>X?d>!SLUm?t{6aEl)b8h^L!9`YE8cprBe0S?6U6 zT<~5G3|EhWaQ_hWPlYiasv%jpg8`jj+t^jfONJxABmrVAQsHd_GpAU)q271*1u*d< zt{N^}f%{U}S7cpY;;rXtOD2;q)~+Q|N_q!h5R% z)0Y(m7kS7@PLUp999?Dl>24V*Dl~O{~H2=bxNg7>p!9`;WsHKWKh zI0KV#KTx|m@sVO}^1A78E49ib!n4NP>$;Mq!zeIaBTU9%r&*yZi}$gmKpH_*+9(6b zy5hkoJ40Amn>Nz`&cV`4m=(~!_`|`(GA-rl%Nha)hSsNdf{l$#a&f*b5c7b#l9ERW z%`GmTSGwJ3KuNS^aWZJD&(5B0zY1rjz=>w}6CUmx0`XUzN8`^oJdGSkGNq^Ad-=Z( zB)50FsNBkw3$AM# zBv5pN^QR2gGhqq5`~B+wQ5chFBV@mMgsROyCAjyM+#aq+9AK92Pw^J5qG{{n zxOEfLL{7ZE0HZb($BiT zm)Pdb>F3xz|C}}+AaEq(b=lKR^&=0apDUkxHf=mW^k27QH8-Vg7<1p|v>vLX1CjK9 zL-+{r#*M+9F(v(M9X?KY=L;#pKYR?~`uF@*KX??hMxAUWy#1MUxv?yIZ~Y9$&YafXl?j$e_=C$@v@5q@JI;%Mf0Pax>H@vkvfX4f9swG*qQ8MLNm%L6_+ z!gZ;B<^)+Vf9;FFo@t@2tBqkb<}RQB&a~-1a-6BtXncG}4gtBJQz|zKvW+*kjXNcCBxoIP@);Ok zwh(tp>T|-YkL5%`w(-WcA&|NB&~7rv`|&xK0^m-p_eX)__>6b!C;6t_(8$Q=eJF4q z5MR2$w-)&7u3JR+$`yI*jAhYto1eVy+ivtJ=96{(V&Z?fEN`7a(Dt=&_{utOS>am? zveEJP|48rE*W|5prcR@G;o`h?`9G-hL;<7>?7nR|@oWA9w;`9HZ0`>uUlc&f``x$Q zNZTE^BkkOC)@<(&VrUc$!kIRmz6A^EDnL*n??aIjp?pygzituUq*!XPyyGUn!g;(u zhhgJi5c#5@^VTnbl(-Y>=w0HEf@0o>VnF2)X*W`GA5MF(Z-W8dXYCWck?k{CzwcdU^DwsKVGPCC7cz+P?#Cm!@ zlOZg5@htj2zA*jVb@K{zICC7;@x^~C=zYld78ruiu02%z$A03U{us%*vwU@`?G%wM zJJ2;zdR8n;@8t5r7{X7zfNE@|fAL3gr_}?Q^MHz@N15=gZ{k+h(6oMi!MP5A)zQs%MYHEDd6$kcH`J1O1m@}8YkA1wDd8G+B*C^M4$RH$8`grwE6hfp3c%$5k zlna&;aVd;=vD}K33zj7g$)v6BG0u4#}umZB>J4x==B#b70(FU7xWfpcE*|h@lbX{CeKP+i_8^2U zyG1BGzm)8f1ei5w4|M~Gq8ldfKm7_>mnIS6QHTP|U|s3Y2ytHv7ifG2O1e4__)yy# z3Z#`~FsvM*_LcM~B|inU6>6i~ls^hAQ15^DyKHN20ujmbeuu(4R3!Wb$RIbI+K{{8 z<-@SE#G3BpZGm12Bnq_|8U<>Gi+s=7PX!rsu|Cl6D|259L6N|cmG-yVHbnkq*kg=D zp_Y~QOAsSgrFwgf#Y|9$((DK4Ie>tSHby7!|edZd)HJ znbMPu5oa(que4v$uDTp}DPO(&N(JV0mRJS$`~+g`@JSFMjeT{GKlI}gXLo_Ov67Az zQP;Mv3$GdWAZKt^xx($MXs!yWKgaM$PNfIV-U?rmln5CDi~Et&OHT(m&Lyy{3mF@d zak@K#iRV$*mYveFXSb{iKRIGUxR5S?;fIL}zsy|tY3jmnbLBe}j_o9-;yp8)--`a$ stYPGvg;79R3HW2cg@1?3tw6c)zsagiodSM+I{*Lx07*qoM6N<$f;+-MTL1t6 diff --git a/static/images/icons/file.png b/static/images/icons/file.png index 96421434975cd734123da384da161116238a0a97..dabb56702ef643d451e8d12087ccf253bb05eaad 100644 GIT binary patch literal 1878 zcmV-c2dVgpP)AWo<=9w$P1(rE1Q*q-_Py*KZ@Nf;Z+NJcV}ktkwC zzT+a#G0sF`?ZSiF(@u%%sJ5CT%5dbI;7y!{X3w7h(Q#bN) zf{^LCr>X)r6gM^qL&Wm=OD3IQMo0OV4B8_!w*#QmRKFJ5@=Hal5$ zxWFqgfjJh8x5yr_nn@Y1d(OBO0ALOPU{(NxsNEE(#`&GA?Bvveenm<9ge29TxTsyf z_5>q%&YJ|IeAgBmn;T4==3tfq*tU9kgZPTH~?#Yk9LEc+?>p024g!*EnhRU3rZQ z$3-}_gKGc;sK(|)zvs;|!PAz(q?q7Il?WIirTOAoe}xc?Ky~qL#1kL<772(F}#BN-v}`MZTh#;?n8&<$*tk`)8SLEotXASQnW?-!*3Z8LcJER+RouR^(m z&z904;3)uD+yoO?J0+%}{230Ufagz=b}4yn@KmZ;i?946o>u{gI(gGldXY{F|c zd3RH)LVJmncEL~pC6l5n!Zt}xcn&8e2IrFNHk=nlf#ahZILnFXFM%ncdMq1bv<#yO zn?Uyk#=X$x_lZ5wRiUc@C^i8?s6dr4!$H~$6`3XMpiG)UHYrOaGqpt0wD_3D1e}aR zCQy%HX{NCjc4daNWwC7mi;(?Df1B8o)>3PE{n><`4I|wb=px%B2t-e9q%@^{4Q+!f zZ3=wN31pGDzmA|Xt=&fZBh{oVRqtkfg`T5~wV(f80fRV)8zV)hbW3yC+~)23u3!M= z1F-k>8yhOIGJ)<5riVFp=z|G8gP?DX4QCW-*lkw#2KyUh@#Cd33~&kt`ps7_udA3~ zLO-iR&mfTP@emX4J9%B~6Xt@fa62a`LfVuX+3kippW?i*`OwuS_4QLN%N~vfbx#m= zUYt9hzBbX(V`Qe>W(fcV0Rgz=r@TEiDN2(Y7S~f^V8Ar`(u9Z_427*ep1aSyb9wUg z>l+-Z4#t^~(GnKHR+zu}p=X7AO^V{zWlCQ)7~&zSBO|iJHwgh2I|y=9G+;sd4Ptxz z!DD|-!%K4%fRx4r1OV&-&tadvEgv7Z>UH)o5(ji)gagZ<-O(_b0fD!G(B=HjRXt^h z9{=#_N*Lgb*ev<-mD`8LFs7n1p`Rs4%DG+ZXW{-y0ASLHpWqobj46%g{R#kJGlODu ziKKghsRXv-o_^2q6EW~!8{WC?%$^CiCnlK8HZKQ2;mA@+tpDmVs9O0x{D4PrJFNic z)o0(j{Hx3p5ck+V@%G*IkWFCB%np?92oV6p7dzX*4`4C)0X`s5m)k%w0w!lW_WUw= zeBVY}@kxv^q09ET2#F2)0bz@;u}2Bhd15w!>%S3j9{uPVSbN`bQNB7|-<9>BskIgQ z!ae{~Ee80RC2p%egx}9S_U^{y+-B7gQm=je(z@6!KG*>9lbjMv1}4dCCo6aTr(rbi zHcNw;PUuG(r{45E!CRx}6B1y8O6%dwC-}9;%-Do}*5H9;mcqMaae+XM;t(^zW9GKu zteD(pqfGErl`z7Dn+>4MgV5hE>>>wH){y^PhxK8+BdY_})h!1XU6Y=mtfe8=!{k;R zK~=y*hs_id;3W>3RDK8nX!S+o?Zlo`Ik#(l4IW-I9Sg()0Oz&&!}(gzA2_PoZ9TB) z{~InG4yzN;cY}0*n4UiGa1ZO&_a7}rP(WnP{NYUw8_7sUGLn(>FaHWK03icwLs&Kl Q;s5{u07*qoM6N<$f;)v_@&Et; literal 1044 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 literal 1824 zcmZ`&dpML?96l2wx0q~7rOTpHF=pmNG?okv%00S>Fhkff7}vxkT~st=X1;M5g^=!a zv89wsO0`LnnL&0-i9s7(5PQBE?X&yGKF@b9-|xKd`}_Ug^PCKK*L51Ida3{b4JR7a z6Rx({P*H$$;kCW}a8V4k+h7O4rDJO2flBayQ83MO0{}@z0I<^m7=`5{zCJV#}D#13gy=<1)7Il$O5w_=v zNdgHXJ0%G^Ab1Liibz-xJ3{hA2wy@Lh{$~LDqi=$Fpvwy#V{^s5&4*=Ioe^4ie+^1 ziptg>f*4X>34(S^QRL|a7}z2o>WD~!$FLrGULsdy%dR5{+GQ!A@>CZHA1et=PLg@A zpg55$k>?@_UjCDdjCK%VRS*e3tP!j*Oc@5JdW0Qer%<2Bn^GY2B^EhY*AR^4VMvld zgrFkxybclyF`^$_*%2x>%k6~D$Wr`pc&c%cd2Sn)9hDGym^la!`U$)1k(Xh~ZzJ;B z2}NBSE3rE=DQ>pFY=i)L3Yqx=k(m&4W(BuZ-XLZRw@YpvW~QtvNH<5@;S8_-WEAxV zTq;I zGiF=y@T;t?I;3ZV)|&obez~+I(x~Xj%QKB<_byEH@$DFG7u}upfo55;Bw2MRU=c-2 zp+U_!ZdXK3Y57kF)Z?%7=dg2cBAkb&yJL~e? z7~YfZV|&UoZ!=#1)NC|NP}aU7{Gc9}7gxD$ps4++cw3zE=d_fwU-pqcb&jRP^{lQ{ zVo#O@MZ7FCIER#;-&)i_Xc*R*=cSR+WU zdZf_ipvPs&HuIggciFTH`2iQpFIJ$ArP9{t`Tc%9x4zfjjbb~_XH|ai(hTIecz(^T z#~)^H8tK|{cs1i~E@_N*zxk1IiEV`suZ`Y~TlwHk+LhP`-~KG5QF?h!LkVslXOwgG z-BTQ2Iqb17IhIvOSt|7WCL$w8Hox0inyq#&=uNS6rioLfpm}!eJZEWf*MRStzZf&_ z=xaGQn|zF8J&%=ssLVd!;d|aWr`ocdnRtD762*LU@5`jC+kGA}YI=I5y*)Y&eJW4x z?KgaVRLsQjeYJF%(`(%PIP;5Vm7lb6f8L~h!Zcmm^tOiX)6tE?Rp}|}lFN61>-3Ey zRq1x>k~FcU=IOq-D)#Rq+1B)mXAp0E=m!3;M)%Uw{KYzfM{u=s?utee>IpvDj*XlP z_6yfFF1@8)<8r`*GP z)ZOFh^Y*!A-dC>g*8JIlnVZe%BLUMKqr7|X+@f2IyEl?Y<{#7z#;p}}V2**WHM$AbU3q)d=vP#Rvb%9bk3&9%>Jb)b zbz0MZqctd9x-v5+R80*8>8lRymr|;e2Q?LvGjC2#L>fe7xa`>XmdoW1>VN|M3(v;* zjsB@G?kAH|CW3Y|X_uzgl?*x>-TT}duH2aS@RT3*j$dU!0_TJ(Gb}l9i6X-0`CIPK z3F~W}ku)5xxF?B`=6@4!SLZL}9P-cNpf*BIg$<8WBQ!E7;p1~!j-=B^rY%mS+zvMx zBLyRgl!&ILRKrP&{+Xdd*C(zy?t}0>8L}KUvFL#;hE;Gh11^9_Ftc1mAgv;pd7B|t zWD6@Z@(O~P6@gHYpu6`!gq@M}u#m+6CrAx1P#|G0mcc7BgcTnc%>eQ7@g`xrB4UCA ZnGBQ2=+OLuHF^*PoE%)K=htpe`x_JhR;~a5 diff --git a/static/images/icons/git-logo.png b/static/images/icons/git-logo.png index 72dee99e18369a90ef2fd74ce3bd31cbfc196ca2..e871f125ca21f8a512f65ced0c39251eb25a21eb 100644 GIT binary patch literal 877 zcmV-z1CsoSP)s^)*k* z0U1kOVhGazWES`fHS7BUGXj97EOhJ_UdA-z5& zcX*_T(8PTQ7Yfr7V7E)y*)Q;NrkMApB}87GT%O>l1qp@JCYh6v-NA(bw3g@5Bulg- zC{CXhVM7!CplfAtfr6g#+~O*k^0_WL@CeU%@U9888%svft;ttX8AEcmFP;cl^gUIg0xcslOxB0*XWlfygG>BVek*!l>)TxY(wtM}dZKNs3A#3SsVH&m zP&5^Nj?9jkC+swAUm8eDsfL)HL={O^(A?#1i{BQJ`4}y@v{{#!+!}fb`}ogAf~OGE z=86e>@37c?a#Ske$Rv1mi>e<5w!*lJ`X7bYR88g~y2HMVE_(bz82*?BjZji#Zjx;2Vn)^>*S=?LL}mWZ(vWmJlk?RG6gg={UhPO{V; zgF%JMrEsINq=itlToU)we`bz*&$;J(|Mxx5`##V6zTbcTIg@NhG#A21VgLX_mKG)? zcp9ud0w}m&sY`edj}5+tHiiJyqzNul(2z@eS&(c1I3W)J{VV`WFhqX~Km-neDKY?r z900^=`HhG40N^Fq9ds~-f>qG63fSuwq^%qZK?esn{Qzy89RY~3ouldEWbbi`zzR@_ z6oddOxtQDZA;$$HkA7f811T49F&u*%grh>rodg*JsRs4jdqKf^8KkS6E>O&^hKvV| za6t_1a7QS2=SC2Kc#*!`6hdK&I{>sJL2d-TD5!@T<&7dvufDjOWkYevt66 z`!Cl*>=MrR+Qzr_zuZfk6@97lsS$0<*l?*dQslyJo@7~tkDCVlx<(Hk?s?RFmg4ru zGO0$L7U8n9lId*c19QdzEt^Pn2PV=KqHG;PJFJHvviLofeR6 zq*=Iz!JpmW+QVa{m=_I${Na{1ru^glJGKgIn&U!50YFJunix8`w3cKqdXNmo+Eh!E zsf@!6r>qSBLO&PF*I5kf0(qyZzB_kJZAc?l{p{O;HEoe${xAE#oLs3tn>&X8AhjuN zVYuPz)wv@%JzXf)c?ZLV)5fpAF*2RYCA;?qCiE@0&|dWx2_(`jOzyhumcGDSw2jwO zk(_MAB4Lso1q4dy+KIsB+`>nzh4ku?s~$BZJdh4~I#mqDFAn%s4=AB!f7NPKu`|HL z%SId+;NvU!O{BPF+NghjzGm2-WIt)wszKi^b(X<{K0Ue@UuMoo-~zjOhDslIcbXFo zctW$=mEG%)Dr=@}Y71)B=aJJ*7hmMNoK?sIlZrUHFq*GiK%wo5nLX99R{L(sRy)&U z8b0?sZ^%V{m8uAfu96n`mNcw76v0B!vR>J_;J zEO|z{f_Qyz(XG53sZl+>6$`O z`h9t8$}!35OU}4mbBvN`f4jqafe>Hoa*3@PAi+P@O*d1LzN<7E1uidXYOV-i7L)C&)E{6 zDOOA1ufl6Z*~{<9uNBNL>m1 z3j%WCrY_;$lyEA+E0hWkpoYV1E9113)ifONIt08rK|_5XPK|)WO=v&5^e@BlU~hk) znEy9qQbX|2uw$)*eXvh>6eW}jqN1Wy{DT6*yeKrPN^q!e-mIP^6ah<9qDiF@`Sd?1 C?s(<^ diff --git a/static/images/icons/joomla-logo.png b/static/images/icons/joomla-logo.png index 6eee7e82b6bca96148a42fa2a6a97f9c600baed7..8cb876527b930fd5d1c439ff9f21cb4acb7c5c96 100644 GIT binary patch literal 1276 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 literal 834 zcmV-I1HJr-P);mFSB%hBi0)alRF>Cn~b(bnqI*z4Hb?b+Yx+TQNl-|pPt@8IO| z;pFk;=kn(1^XKaH={{8;`{{R2~ z|Nq%vyte=V02*{sPE!B_79S`uFhEIVsIbMy$jZ>$;p61x>+JFOsV~Y<0004HNklC~DA%3#d_%e*cGXCIku)${`e09_Bwl z*VOcP7!U*=&&=i=wUE=+*!M(UEEVz8_ubakX>J4XS_ixa;I|I=4In_K{AS-|MCNlJ_!#1si&;Z#*`4n-Cqj zfE=3TDDbV75mQV6sYZ4ngVi@u6*Cl|UCy&TVk)spr;bNV?X9=`ihn#J{04MrZ+O5K z-kXz*1^QJ$8DORM$O^#5a$|}be_b(3Ki4E?fH4kmUV!Z M07*qoM6N<$g2%|uA^-pY diff --git a/static/images/icons/locked.png b/static/images/icons/locked.png index 110376bb023d7c0fa274aa8481befffbab8af93b..e9d0559c034ee3da42608e321349549a8e8cf408 100644 GIT binary patch literal 1878 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 z z&cnlvA&`Od0;Uw65QfXSLD{|s;e72v0=00f9H=F6#=7y^FVZsbXIBUpzXBv5Zy5$1 zy^9p|EdK#$18T{@B4Vl3u@F}ze`z1ugZHvrg)?B#zpQJn7~bq|J5oPfinD^4!NBhF z`~v&oaqCNHd$hCn#W|06gX=n0)G3ypi1D<4xt?&wLGL8@#v0#U>KEQtnFfu%{uEwT zu))Cp=T&kpIpc5K2JRAvrMha`;_P6v#_4LEjr_h_NBPtdS7LL&6^ z0FW#4@nD36H;rS%5!!)z&D$7eT836OA;GX;BkrI}bQYa+eqN_B?L^SG;h&qG!1LaY9cKy|}(g}DKL zDE%pq9GJeL&^M|f*Jnvl;Xe#jBK#hms)ZuSnsR+qH9oBZQ1ukwj>0U7s=`;o7$9XL zhp?`OHB^~HD0%FEx`1$`5%ue2gIO@K#-V+rqbiIq9(baXmOR<+nwR;!qqh>!)K?~s zum|f;pHZ$eMbm1PB5n>1XR}1}rf76aYK3sPHEH<6bVj6fhEC&0iesdWif#*=Sf>;h zZRt9-=u_vH`O3GC(5*!}VO=Q!Iz(!lwaGoz29}4V2#dPml_ck7RkH*(xH)?zu=A-k z2i-%yb57Vq{-#}Fy_xjL+1k0mxE;V^7sf1pQqum4kl0eHYd3GQQ$EahuD)z7eM)fh zX|aoiiD0XP5p(d45mM*fjG>R%k!53{?#~cSzJhS{{Xk7?{i^Z@rjK@?%q=uPjjNlq zV**ru(l*!Y)FetxHs~&-R+sNG%TuN_L_aa>G+gjNdBn0)j;#yf^a{dJ>!sQGA diff --git a/static/images/icons/mailing.png b/static/images/icons/mailing.png new file mode 100644 index 0000000000000000000000000000000000000000..da227aa3207373a3ed7acc26ade5ce0ecd3095d5 GIT binary patch literal 1950 zcmV;P2VwY$P)rZhnjia)!hX%&5Fimfk#*{TIm zVn!cC=!08JN*k;lseLle_1v9%XV1Mmo6KfsX4|p{ZuZXHJG*nf`OfczkhZj?Ep2Iw zBw9neXQ)9aVS^AC2K%J&$ECsZ$}yVz*HO{|^EI%y6AnAzcm>Q;a89SxIr;E)_T>q} z4BZP#jCcx?0Ob~&69kB-^h%hla=m$qdH{5~-dv}o`0FFr=PoZ0W~d4GJe?2#q{C&O zv}ixRHW45?LhYi&L;#dQsdDvLC`zizOLGB=<^!<82Y_Gz(g45!2Y`WL-F4_M^5f1M za+eDTm;w9A7Cpb5A6ww#5{wJV+J?{nHbMDm4gg637#aYv`M`Pd{nIzb3WOeNmy1mx zrW>I?0|Wp>XAE(vbx-lnLhC`0XiZ}T!3UrO02Bon8l~3I$Mc02gP=IO7$oJ&3}7Yz z^P(mg;u7oL56%@@Xby_EkBJEa0FATlJF6?lq67d?ImZ~WZQt2K>&(H8*BmNO-17ky zRtP!%OgAusaz<1@vhI8TOr$_`G;9uW`2=JRps-aR7j{#|UCQ@a`Nr zw!0^n90#AptnXjv!?CSbsPjGF)liE@+h=5Qa@_KCUUM~8cgSB*KG$aVn;beuau z;RA#Tr~vqkxvI>8$+x+iM!^jBgL0XQ!ae}L((E3FU~cLWMyUosh%Y>1DLvcGD#*H3 z6t~0z8X^|U@^tFu{kpJmKNa?#9`*;4Z*cL`WyhMh#y;}WtyA^QA;CNWcZE|_ z1;7~qr3+O*AbbE;nkYViB5GIXUM8qXl;838AA^TqUT4=ZAwqKq1ws{oS`e@!Y$6Ky zsW4_mP#DAjBy0|HR~XALkEQK9KfN#rH=eE*I;cG6%8AFOqfAe$naj?PRgQ;WS!b)} zAbuxNCamB;-09Xbfyqx#thJMNj3jBFz~2n{iBPN4W*>kg^8^fluKe)k1Lv6;6jEMx z7w7|0XugyWz>W{XAWNHbpS{}asOF%#2{S?X0WTGWSfZ*i; zEf*?hjmbp^SAH*`%GM9hvBszoE)}Mz9HvrfteOUU@%u^swsO6+Iq~SAz8Fye_&t0o zj1>v)6yY$q^R<(`hhFb%eNzR$7*V4GV?absu$l_X3<+$iMClj8F+qMYBCUP>+|8wJ z`_7K)ex86CK9Mdj6L2xcnejegwuajC6PU8@z1t;lMtYPmC`IjL_zQTVhEGC^i5evoOXO z0BA{7G|l(S@@t}Jg6Ie6Zg5z-|GhIKa6Y}K16 zB*OtP_?U+CTVanKn>naV002xlzqgqvfV_S`On30FE+7DkFh*6X^JBJF1jX5Yi(kX$ zgOM`P)_MyP)tGvi(uDVB=;|NmHca%G;aaY{m3xh2TC?=+)!F|jaL`2C$Bth2R&g&i7X}$kpyR!OFrZNf zJ^+V8Db0=)gjNYplEy-A-xIc8xS~MdKp4EKk_kwF7(3YiFiZdd%Szp^2oM4~O*K_y kTiVi=wzMTe`Cotm0FRy#x^sZB+yDRo07*qoM6N<$g8R^R(EtDd literal 0 HcmV?d00001 diff --git a/static/images/icons/office-material.png b/static/images/icons/office-material.png index 743e27b08118f486372136f01e56ac2ea0ee19e0..07809dadc9cc3706fe2eda7d80fce5d6c83575e1 100644 GIT binary patch literal 1038 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 Ag8%>k literal 0 HcmV?d00001 diff --git a/static/images/icons/pencilcase.png b/static/images/icons/pencilcase.png index 6d2c3be360f862d52a6cbed16c7e80c4853872ec..9aa1dd5be7c802bdb1605b37eac3b51914ee33ea 100644 GIT binary patch literal 1593 zcmV-92FCe`P)05X_a>R7e?1__*YIi2UmDdi%kOd_} z?>~@8axhS*`FQ0rq*2G(8U!wj7Y@ge7pd;xPjKHo?^thh05}jFkZ{|Az~zHCMq)?#pdWX6A71z1b*Er~0iF3G1N=gD!UDX;dk6sda3n@fksbyIC$U>fT>EhrG_Bv^ zQ>4yf2tpL(PWR#NcHz9E!0B%Y2B>7m)q*(|)mLNz?-wi)BWW;BJ=(fWkDH$N-1&U&WKBzDy8gz zae@0aY7fp2;Mj}WwW*7kz+*!|s4i5^i_DN)yf~bxChsFaQAx@3U?132%) zdADRihur;OzL*J26->bU2uQdL3+8D`lr9n`rSputdW@PLM^~5-1rqLVueOyL{9^ZY z$pF2izLFZb_uhUWLG!+ht%(YybG#8hyRjfV63Cb*zMrMm7!0jP;n^}Nk(SO&jriGa z%MNoSB`%jqi4zq{=hg?on)l04ow6Wdi4$$Z1ZzudPSy%$N{rNdN^FT9qcqlf>fzVC zW1ONG9|hdgx#V&FPTTl6Q=eBK^~LoPV=BRgzND}r$g7)2~x&o zu*=wC_})PH(nyP%z^o4%^a|gHe{Q|PH+gC2D|~#;3>H$Db0Fj_m7E*I=CcFCTAejF zIMvj^QXsML=19t3COoKc07k`}Kae%qFdkGIQ71SpE%~O32Z9HJ2Z9HJ2Z9HJ8_Q-Y z>3rI*|9qjZ`fttUx-QFi8$rmru!P=IIbDxC#NAXvTbnajQpcOmgkx$>l+gUY;hNlg rtVtB$&oVRMi6@?T;>q6Se*p#n(*2?U0lXON00000NkvXXu0mjf9*OHI literal 3951 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 JPDHLkV1h$VxC;OP diff --git a/static/images/icons/post-office.png b/static/images/icons/post-office.png new file mode 100644 index 0000000000000000000000000000000000000000..7419b2b29a3cb2be16afcda16e8238900471bf83 GIT binary patch literal 1548 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 P00000NkvXXu0mjfGNHL3 literal 4314 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 literal 2865 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 P00000NkvXXu0mjf_I`op diff --git a/static/images/icons/sort.png b/static/images/icons/sort.png index a53593ae85d961f5b66b4cef0112ecd1a96ed5be..8f30ca3dc4ec1164c1524684012bef6ff674cdae 100644 GIT binary patch literal 1426 zcmV;D1#S9?P);$lWH!g|>e6ue0Kq=JYe zD2SrAE322?Zr|&wH~qRYGwGgmO**k2bo!;bCOz-hzxUY@!if_nPMkP#;>3v)C;Nyj zwfn2Yho5Z`!_Pz?aiaC4psqgG1brFSTSDn4KySdh2YL&1PwP$4rPdoaGu_jBq}KU5 zNO|FN^hh_qJfz% zlj%ADF#>({lNVPC0pXS4LHCFNfO-IWx2R#w!Vtv5AG<&z`f&U>Hj+S@q>o*J01ylS z!2l2p0Kotd3;@B5-m3!u_W}T2slJ0>JqURNFNsIJVc7t5Lm$`S_|rmwTYKy04l-88 z2ug8JFA0LCdiqNZMKgk2!-6{`d8*ej)iD6@Y>x@G27w1h8%*Glzosa7F#%ETK~?7t zSN?6M8AOPYIK4FDmx96HZHWGU6@`$@)}x)5R>HkZNOWviv^yXGNwSNz7Z^5#4DdJu z;0&C$JzW!|Pb^V&0O@jqE(@%$z4_DX&dc|N90W0kJ9u-sgNbrlLu7RT7i2)ig^*%{ zN`pa;330YZSYg5}cR0N?Z0`Ki2LJ--0WMuWvhKtG$Vjb`1x>j4%;0F06R>G)eNSo-Qfnibl>*10B*bsY0!W0@?V3m zpFX)x*B*ZVj}CmHtMjM9{CXDnk_hzG%dZ6^lL=*0q*ulrXdtp|#05xs0Ro`wfLtFB zm0;Tf0I2(L?wD*%KNG9kqjDzT9FQhLEyLjefDix}0RRD?qV4bsrv{fu|02(ze zmW0ir$_ecbtwSo7-g`G~(=iZ+&paze)6%${BRdoZfnJPIH+TrLtwF#TbNj5AAWJ@| z!XR(}JOkxN-uXR!F$2*)fG@K7dH1djy7t7@FPJfU)G|}2S1=8RPzTW8qIBrboH5!g zmdFj76Htbmx4ra*M`}>ps3E$T&$Dz_7y#7K@QvazVZLIi1QW7}km(MvhOfOMFvtfs zL9p;1RyIlcl))^s9KCaP#Q6gSFm)y94M~J8%D5MLV1gMd`mx zC^N8iMehg3-=+KNHwo<-_X-?EX?w{`nPVF0%(>({ri{?uqO2y zR;SU_hN|-M+F}6+;PeCbBcPw3vIpOB?&3ZT#_<9{H%Zhey`e!dS<*B1A1@HJ3k=y( z&)CvqhU0u;cpRC4a!$_<@^hUJ>K?l2w`)u1hC=2S&1Ox(u;T=r zsCb*E6~UxTfsG_|c|Qg$7+`e)R>N=%2!%paS69cyu3fukn5e$Kp5w=lC$F+3p}V^~VY{IL zvMd`8czS4VZZ=<48bQ~9D{ocCJ?f_7>#JSk`}==f%AV?_$*(NQDEg}YTu0Y{*h`KX ztSWP|s?0gNs?q=pgP>mUen3SC<6FR;W5Z^X00@ml2+NVwRF_0JvNFhaPXE1i4Ji8d zM~sDyMSXDoX}-0_4Zu%cz0KKo{Yfe_b@+MBGLF2ma$4N*DUgwoL3w$3T+HkB5(orz z`2ZMJyO#bpckxa100rgVXNm z*49?TM0Is_(48vZNQ5Yd zWG*jH*hklZTX#o@BzV1FQS89!h(17i`oi1~sHO^{ptj3%$AQB3q__}6& zych|g^y(j<_69^kLFD%Tp?Et`dhR{+@nR%Ixcvr7PX~%OISX5&PqYC|X>CAE zeBY45<fxOClop1}ZY zISilO1x1D3uTL_e`%VR#7uv4*mnwo zqfzk}E?mIna*>^#&8}U$*!_BhuuXQo_+5|yVdeh?_U&HAzFo`4#rpO zaPp16@KpIK?DpuQ=;_m^sjaOY|A1raha8hvgeHpz=mQBB-kP0Yt5| zY|C}qe=qK=%M%}et!U(fmCK*4biOD_k^+bWzd0y8ZMVc1x92urPN1zafN3yA9YbNs=N-lKAc6-z79b z&wy#-eG}r#%F1Hm{|?wK7yGCtOvSl#=S+(iLSVVjM>Qc4V&a>duZq&r(rMz;-hf9j z!Hjq?uP@x6f8ZXoMQjHgA{7H>FG+qf*YWohY?MaR2YkaB3OEm6Ir3t>6_{&!k zijNtPr*-gXflV4eqw#|p->dN^jmHcd28Ol$3azb4P z3n8!rGVmS{n=kq_{)xst8o#6Q{{W*v?0dOOOdv4j*n1j}eQx%t#?8-YGzcNymL#cK zlB9F{fBlLLVB5Csbl&Ttw5$ZX-G<-a$I##~Jw0A_*6g6Gs|(<5;D*a diff --git a/static/images/icons/warning.png b/static/images/icons/warning.png index e298ba22bbb20856f6131ffd02824a3bf1e9f09f..a6a4e1ca4454427cbb6dfa706fb2428a0b06b0e7 100644 GIT binary patch literal 1519 zcmVFyIWd8wYhWr89D2gU5Aw-E@!d?{dGAk$wvN{Jn zDbkmyQDcTcJSAPe>V7p{RkJhOAJsi==m$kj_nY4B`tAFw*S!F>)KW_=wP?aJU%AO! zz(EWcjetiwF^A_kjcs({%%F+7IXv8n^A1!r@pJ=q4Gsf;d45`AOi8@3-?+F(M){>hh+tT zPa|5;*di53pnw?ZVgPdx>6)X(hX7n$_yPhDAQl|X`|c;#y}{vKgIPmR#|2no-Mlw( zi^feH*Ol{oFW=}RfVQv%C$tETAfSKn(m&qjOS`RsaI!<-@n5(gAq$WIggXEu5K9-Y zxif~qbu%wW6aeD0#|T8@HeX-};;{>VyR(51D1ok61}Xsf{>5Db0RjOGSp)|`@c!fH z|8mQR07j%Q975;<;qiAzb`KDMCtO3EV-zggYk#`sTS5r{q&qMIA?2Ib_8PMH+QL!ImHZh!}uD zkdq65Bj-Rn4r9dA@BMz@^EV$_HVj{*e&d>JotDge@l!E*VIN|E2bx~Gea>@hyd z2-5(_&kM!7Ly3V=$k#{j6BX&ys`Qz6e-rwSlkuLKnXW1s#P$J{(kPEU-%%+tO%{;= zvOs87IVPmJC&m?vC_XTjmm<@-1B`-W$#nv&j639kkRwI1%D96HphS0wJ3>_uSvRnZ zJKGEp##>^Qu!JBkqzaD-P5LGCG~cX5b|^U}%t720zN>;U0m_I8JGHiWb&4ekpwJX~ z_ox51>B-Qd@?>an@8uiqhTaPt&5c0a@Wfprrs(wDp}s-VD?weSy8vH=_&bY-PyN~! zx{u#_WFry8gaA$>fRj@mjF?SPts#H>M>qYpuJeNM{bmtTpSC8$&3uA(mcqxh61w37@%90T$QEo{H& z0*N6PPIHIG{#*c*3NooXI7ux*20;sQ9EV(_0C9{K4|M)`?z(~QlLZznLCperh5pLw zLeHy!@>+okg4whLH4WMjT&EGII&Tet)tI2x0T$)VHpjX55>{h^S_oN`)7u>9 zY`k*YmY^3vd4;lpS+t&&$F_3Fc#T&jNP0wc{it=R|2cq6P%zMJzG?C`gh`UBM|bs!169~ zhW!A|62=OlNtO_Bu)d4LU$}xluoJy81}$735d9f-WP8?F!TPx>nlHnFPxJl^w!?lm+GEUKX=%wLo{;{_Y-9A zHm7d6J2@Y86w-1J(pQN&Euo4K^1V3XWN`;pHFr<|ure$GGsBQ(5rmFDd*;d$Hq+p= zVoA#yY8n)oAw`*NBQS0#DXJ9>dv(A>05B1N(MjU#g}cLNCmtGzG*pQ~$OOQ7@9YO| z>VF2w{Jza|t5<{tw2~}(%UXX69VqV?=;lw?-PU#LbvXM7z=v9Dsil@$^2>h$3;?) literal 2429 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 diff --git a/static/images/icons/web-domain.png b/static/images/icons/web-domain.png index 37c5a02538bcc5578c133d04ebc43949b163cbc6..271e6900d8ae87fd7f165813b620aef8155758c4 100644 GIT binary patch literal 1652 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 WX=`wed(xp_1t7S2<8R^u(*6aA#y^Ds diff --git a/static/images/license-status.png b/static/images/license-status.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1fa8ab4fe976aaf11bdc51bf306af23d6788c6 GIT binary patch literal 1420 zcmV;71#|j|P)P-h00w*en2G8%}wns+W6f#v2^3OU^y<;J;O& zfsv~6-}Y(*AdK&-!yl_0+zbH1;itS>08oJDuZAgeuUV!5B<{frLLLBLi63L%kG8d2 zf(eceR@bcs0D!%@zivw~0C*0+)vW~p$N<3P4%!v?VnP`JK-?hX4)^cD0LRMWEkS`` zbB7(Zk&^}o@cVdBNQ9;UEaPU=%;AU2@au<}9TfB{GC|GdBN}^+TTLxOgXfc*B4T^#dgvbI;dS@!E%;WUh8b-!F*3ABO z1ZK-MI|!ESATwNl20;aT#0o+)CYE6=go32ETW;>aW(noF9~IlcO`jab$r zD1*#$?IzDHmwsXkrV#*)AV66?P?Q2AB{mE&S8^)9Wy{)SvVLz&aI8`4a))&sr*n>P z)xN$#-Z|KIB<*wiiXoVGZ0q$1|4_aQERJedSIN`(y%7(Tsv%(q$SdvFK)DX91W z6}mVJ08!Bs^#ck3(7&xYh2Ic&fWjX`g+`s})1XoSXh$e}JOhB<_siUYhc=TZLvJmo zy!_^n&i98|g939?C4My4B#8mwAWQVwV6(Er6aW@?pbtlFkH)@y_*xSn{cN!Bm<32J z5T6_3*na%W=e{jgd5)>OG6)Cd)EYX)hz}5el{vBiIfv8)YSN?di>pW`cZi+}TT`S| zfza8(Jqx620YZfQ;wn-(#e~Y1K;I9r$sgZ;Hsa0>5dbV?iM}AwC^4~vB|FeJM4FW% zf!7iuCTNqdH~-byVWlI}fvrO_LR|Y#<{}jvL}s0c*Ma}&#__;r39hucG6<9k7i9;} zygNj*Koad~G#7D1r=1~^5#n{IsBX$0Uvw2&Jv)$Epa7^~&Mc6b$9Fm?qs>f~kQ75U z`R%78qqBGa(b=Kzk>;mJ`K&TlKyv$@IW=_%AKv_;q}$9C6KFM9B+q_6s$1(L&g|e? zJ5&#h(!HTsckLh~Q$Hc)zfA&xlQz>}*DSKcNSo(*ORR3%EXGXPftJIK0%6SP4zwKp zSlpp{Oi)eD4({(vR_6(X|DV78_u7250HL}OrKSv#zI{U0#pjMyiXRBaD$*q|hNKo) zov#+iyjP&qo?c-}X+`MvII}LPB14Xtu8eh96!(n>3>v@*B6 a6JP+#4WQJxo26C&0000#E+k#L?6!qC^jHF+IH6E( zoN$vs>?9;{PTO&O#IY?OvaEaG8;zuqG?GTLY)kU{`}01MM{~THdEfc}es7*eGPm0e z7A#nZhl~Njf&~MF1q%iU3lG#uwcOeNrU(o8I0tmhA;Ge1z)^j zBBh0YPhZ=A=Jx&1f&r42P*51^NvS2JI?mPXAf=g6i2fgvuGUpmLBdsg`=z!uzoTlJ|ZFz!ZH=djAfA2%pUaS+KaI+r~k|6 zu$5S)A1sRo?_RPL#$n)`%K*#1l*kg%wtx9Aoh*x_dj^SFOKX=;!~}=kk%NyfuEN}Y zOI&aWGsHA!iD=trJ|vwp2!G#WDB66%Jx#gyoQCC_T@uJp;?%ryoGR2|`KO)GA8=x5 z-NI?h5(&rID zAC^VJgfg7~i3J3AWrT)f&c>nhOEIR=p!(BO&?wKqote}=!WWm-n^3ykj4k)hiJC=& zWYz|TLmC1S&yet}^+4~Jv@kkD!8lq|1XETPs*apSwy7Ub2c`_!VeO>BNVIG^dyNHO zf3Xd{d$pK%*)TfaH6X@|M)my)R6OovU+zjPiS>QYo%7h?AUQ|7QVVsDhMVRX&&T0K zi?DlDC5lgtVa2Y`kv-lM0tXHArlM&x)>38DfgPDXIA|0vGvkK!eNo{EsuLT?n1&f7 zCP1`nfSvyaoV$}`g8uBs} zR!sP&sSOS+Uwazed$O>rNiVfdbqtd9GwHEqkn=q+`&I)V-ANjfS%nLp8^`kf`;qDD z6U`XDMt4+;;a`;`JWEg@va~=!nG+S&Hr%@LlvHEwgX2b$EohwHr{!Mv{-F>J73bm; z0*BN(k$RNhrxfq-n9Y&W-MmC%(XPpuzVngEf2-TN3vgOI?+vTR;ClFY*s)k#=J;jF zlxB#3JFy?x^Cq}P{_9msU>=ubt^+fq&W&%scL?wQsu(+;&WWcU+cr2DBxwQ2_a)x{ zh()$gP?S~vmgyQ(V03F99Jcs@kh=W`TMnY|T(d6|JaNeqjG1GXaykNuHrI*1PG!t> z;MY~T(ZS4mI(U$pMCo{M4DZwtlcJk;A3>#6Z>vWhO_-F}P`fB@Z!m?CEiwo_k((w1#7r6MaI#6Kbz{j@W3d?Pc(X*LTj0CYOJHyBho&GS)O`2cGED`0hvx9f*VsTKx7oSkyB%rT(21bLag3v|4GHn zda8R6qf{uSLpBMsLg}>@=vR*;`} zAv5w_Zpc59q3@|2oY|wERv@B45wtwFrH$0I|Jo)qF+frfkeN2tKH)y!f!vKJ@tu$N z03&AHd+Qopd-lAr^V_X<44*s$({>Hof0+y0L^1#oxHZ9csd2yWziqNc21ts;19I+R z)N7|pHX#ZemY*HLBRf7JqE(LH+*^n8Tz&NVkW4agycf0s2S&DLmCWC0=^pdIAD z`X_DjStGkr*`&9}VyvY$EUDii5gK8`zxLpfPxr+H2X}Rn%aAv}81ihgj_OGf&mgPFDW$hbwC;h&Av_T7=s>_FqXoXg zM>$#drf+7r+DWNrfFx&_q+VSUktM`JodJwq-v=D%1PB;wF9^H?UXcmpsQ`;J@^&)x znNVvp{APcZ8CB1BVg5IUp~`f{2n3=6fe1i&pa=m%bQ=Ud0*ZUn-I>mIQtBBX$(1cy zrcyRZxhIi#g#}ysJtJvvziN5F=Vhe5tI5%Aw@BNctQ=j)w46IlSo%y4^3JnL211%_ z3J-)Aig4SY8Oc)u>ceG}yRw`ucV#(h7$C_JEz=D|aJJH&XTiQs&vUivmil|FG~}oj zs(~Kq4^4qummxY`QRqO$?1518{YcSXZYc77DE4zE;xVOM(S(}_7NdKgv%yjfban(>=2-k)a&ha43L?PrbK0l z$!44YKQVrr@65JWFhFK5n#t)Ijt7YIZyt#`<4EmBc242FSEWo2?YDYR_VZKF)mS3R zrg60m2l_`)O4MI>mw%*)<+?to*B^zdVj^Oe2wkUJAjQOwg{MBAb&z?9+;TTEKxQZ& z^Z1Y^sj}&|ja^v1ZV>g)bmFpm`=VxvXh68kjPaFCN55U*HA7HrE3CkB^|_j=@-DQy3sTP&nnH za&67mb8K}CkeQ1{sSTQbTkq!I9!JgXr(r0cKt;_&%o#%1Az(j7+<0*=cau;U!*;(} zmm0RQ32A0t7FaRW>S2`qwjCv39|)@l=|ZRmRHEzC-aLrXhr0M|B1tv{ zXNgd`CifP%r^wv*F+gT09(NL%CBu$LlE-_>2Rr;N)>vl6eY^ML>@S$(zGFT7eim*m zFW>+fw)p#W&)7Y^SQL6`mA~mgcJ)Mvk1)SyfbHRh$ap32 znOf3%Y{L{FpW zAdTiH3#;+@JKBg)M3Qa&&6&7nZUHB=e!c5(fCo8h@!UZ#&jc1^MILTK<&{)GEN8-> zGI_oo1tc3({InbDVtas(a9R`?YbwB8b2ij=E3|N+v_uK}h#aFT&-gFfHT|&NyB9AN z{Sgz&@vuPnp$H3v7+7@-kQs^%4$iFah~y*2#^m^3ehnVXt3k`33UF+v9;Z80QL{v( zyVhfU3Jf)6OaOY?f$T`$)ym7CQ_zx$xy=p znc1kPsz-{C_}$uay#AjBag1vU9ma9uciA}KT!hTUbMfWvABA4=2^iK0H*3rTqp+DL zqyv&^m+V#S<>PSw$6@4tvlrS0HWWPI>6mbg%V0aCK-c{hQ2(_6a*I45dvf(wSi)ur zDF!__gOI6AV$EdGXE~7*(-7|S;0!S~q7a25)^SZXl9~2>rvMxERRm8nHt#+nxy}}o z86!P|lIJ&%k=m=IKf^v#B?tY!&&UM>D0#RW@(fQJ8z-4gekP0C-;wPFu>N=vl)H== z?X_al@BfdRXa4w7DYD5oj|dQ+<0toL9|p(_$FJ<%(>Qj-CYvTd9NcP_WA`_T@Qbz! zp(l{s{>ttExh3W~hC2IU>N*qC{*9QOG0iU%^my6eS=McnW5{iV<0GRlLpVqV8QENd z-e2m0zGAF8eHZl3+^7aU8W1i;aCdR)MOys~G>v~!aSwB#0~yPOK!o;d1-}b7N9cbp znYel9Is;0bs8~0G&la9U!CV6t78y~j%Y;%+B#*_$$*FjHtVYM27<1ZVT4r#>Q`YbsHMx3yWxslgrK-cecFwv(J**CZ7ar5uDJHVTS9tXGBaoX|co~&91ND{=i z)SMw~hVQw(k(&GDfCyg3JDrZaoqOFl3U3;Ns=zU+{job;I5XskNnX+D8MSh9$_ofJ z<0i8MrTHpo6rPqnxXp-@&l^RdkPd`66hWWuc(Gf{07)K5-1KC;BMpeaDXws1vt;3c zhy+jRY6}Xl9*6!SOU(O0&re^s3vQh~uH!Ijb7GKY5r>Q`#raAf9KKAm-H6WT4Wd8< zLlFZI!LY60-lc6|fFx1;quNb-wl+lrLRyxP4n!D<0bPj`rPquj@5*tgC1e$P#Xr;M zggeVI>0>cYd{0)GA@!~a1rB_-gzIpK1&CltB`(Q)pWXk`N!#zEdI*S7#er#NkGKd_@U+&Pg zFhG(L5?4Jrd7EPO5z*$2EXCYWmiITPIjbk2pKtdqA+NANwq$HtkI`sr7TPxC#VVU3 z0U`Ws_~j10F%{d660;zlw87v0WmPr0ZP`@UBK6Z*)*J# zO&%H6ycHy)e5D(PLLf^O>LdD26FH``L1~l2s8vCym4%G@jTZeUfuWBwVcMAkm+;Pd zBuOQgEVu4|^+fgt21p9T-I-3>lk(7X01-Aj$)nE`+%OIIoPulVC=|p{Yn>`$@?CI@ z6KOmMHai<@=M9qH;x%n_EA7e%))TV+zmjWX`if*h*dVZBx?PWi(bLE zzdC?I-LtSji=F!ik#o+a5%(`&tCkE0jS;ge5DppyM9milQMAeg%ZCOG6Hx3Ea!Ha( zICd+Q{l~1$AT-wL9Q-fjCelYlo+qAR9K9=^#hqXF+y@yL7{Hb-TcFVtqVT*gA**~2 zET>MQ_p{frY~7MbUpIxA)@=467%gtdM?}|97u`f~B9VK(V7T0D4zw{X2FXGFGq*l7hiM zv+2d@@)3y~#*saz3kz=80&`Cp+O~f!>~>XJ7v@}LM#0K)sB;`4nWNug$Nu++F!oXr ziVOuXTrq@`nlWL`W1d4{;`Qf811%7@@oh}U0G@5WSbC$koiXGT<}zctue$=mAKeZ=Hs zQ)D2bubX~*Pq>Vf?$@3cH9(5*v-h%K&hN(in%!90f2j{N`-BX=@8kgQ7?E?H8QE)w zpfm<%pYD^R-p-DYdJFccbk-%lFG0Biw&4!S(5W4> z)`QTvBiGsh{-)t{`-oV8;QYkGO;F_T48JqZELhsU54&Y<)QlIVw<&D>=`x5;*7Csx2 z3!TB17fbhRM4*FZlM))NbY07Re_8DDq%K)t1_9C|gUo6`$jLOt?;}DqcT7GaB!fip z5nZSE!Q%Qn^2t;kK!*Ih5cpgYfR2>;T%uAc1PI}=>e#a<-^2h(@%X=ijOMQuOw5Rn zh;>|3G&pFCqYY}=@-RSz%BEO=@cthL2;X{~o{ZI=E^TDCODumQOn{G&CYxek&Wukb z?TN*;3)!mMqR6IjjbGG9gk%XZAVM-$nizBji06cJUA>d@5n&{i^x@zUGf3G22X49Q zXWaYOwhyBELLG`rJkJ?!e6k0(tt*BmLxwZGD!l))JFJfg1|l}uBnCv_y2Ev1FhEin z5aL4;o`@g?ih2nCOMLHF+3yX(mv!25VS;m2(#Q< z$Y+YsM{f$B@mo-8$0N^nLYLzbeQYOPH`lUx()vTye?V0mU<~e_2{=WSXbA zxx!7Cb6Jf6l0FiP-U|^tgjoQDOCI?F&2;+8t4HzqE-l7K75MmVJ#N3W0>i^H-*S9| zi2wwA@VEr?dzYWT!~@8&wtQG76d{8Xy>&X&mgk!`uhJCoa|I4XC=kLD9tiLtL;!-X zvz2Uv7Ke;0Yna4Jli1#+Yrd|0EWU1A^8eG1<&bwdSbdEdT7!!p(-c`YNxdIYSTe@R zCK^ZD@Wvw%s#@Xcf&L)luO?CfmzGDj}F0fJOAFsFC(u# zRpV-&!v-s+i4XCO>XkZLH`qtK^I8@UggYV-!QIA@x?h)`@A+aBZTNfk6bG!^?7v z?S2i;5aAksyu&yaF81_Z9d66_`3SlWt|!aePz4$5!(F8uAR3JmRZ9l3zb!|k`!&>9 zU%AGD3#zRcHOp}6g;u=%nK}drFBD=x1neVy^(;pL*^ugOL(cHvG6?-4P~Izq{vL+V zM^HT^ruQB%f2%)hqEFD9((euNg)L(ebH3g!#Ul#zF*GF`o&Vp&!^8mW4 z#b+e@h*JKirS)1jzIvS*+1V}*4m)4WWWFJ?-}KSFHVzVjH}n2D4$Wk=$b6-ine;S? z*N$g5kw!KwYOI6Ib?|S9y9B*cVnBF-69Xa`3Zb!HR^ydd3hY0U$Mqoj)+^GBi9?~nFpVQ@r)+-xh(T`-6bkL5`A z5zR-G{)R6GgwJDy1;VdO{6?KgtaOOxHe)-H5F7onY4ScIST^~6ggfm02)b;|vOb@@ z+QZ2!1l*t#0wQ)lV&8GkJ&~mg1_FG9S2o4qBZ6d8n9mg60?(^|o;3`R^paT(#80#) z%14CWwH5;+)JH5?==pKa&yVH@_y~)_<0FJaO@eRIQ5Zfr;PD}uL}p#IXwV0RRUWgC zkN^byp9L)MDY6@nr?d}Y5=#*89mp}QS~|$-X3|&;@XBA2SYvgxw{Dznr?X4z0Pe-Lk;$eE0f@Lxv7=8*-@ zAL3bz43IR64?fRrUvcgLz3R~i4pc|`7Tx5AgA4rw_q~*s>n=Z0NnTfzGW_Dx=M;+7 z@r4&YXz&6u@NQ{6Ck1M|XhW*b{6ocyr3hLrk+Wy9W|ua4=7 zAg<=QCQ=&R@64?u(x$SdOaCXY%vwdvdWdY2OZE{VvI*h*icGLB;XEvZq-T8An%}T| zdH)7-b*EQp`ZI3TaSjLHL0;O)YcqkPrTc@D7V*sR0?k};0TPhm-YRPc%I?^@_3&jf z8Om0WEb>9SF;EhT$tD>hWSXEXAvTZ99XYEoK+-Sv>?xp6=b%F-Hk^II=?Ve>ZN#Lw zE68hwh>vLI0imxZk`-dP4^Yp)4&QRiEt7tx6oKQ<vxC(GiMO_899 zB(sp(4{%_B#1IE|7q;^!e5xLZRy*135fqIS5V_nvXX`gUz5XjtpI1Q|Go5A-y{{p~ z#7D{!!Jp9{!9P`{G$71_BuNl?MKe-$A^{;;h-R-2Z+3FOT-ih#Z3QXYxHGSa!AAra zv94i-peVWJ*NEsHr_Yn?=u=hg*Kq*`vaOAEI z_aCYn86YeY74-?0S3;RZqnz&q@HmjB1&!qF*O0O!00gdqhsi2RS11r%aS4hKsJe7G zDGZS0lUE6qCBZUF_?i2Kh3%x&k_Np#VwO-w0>UMhW!AYjFKuCfut>DL>fjr6qGLnQ zb^^lv+~Nk(z?V}~Eh?KL0TD7pg}~8xPGh>97zRjs%d21?5+JhzAbIwz7E-9>x}TI` zuHh@fW(YB#GR(p8^tp}cbYd7F$tAC*q;Zj~)J|Sn#bj0pD1WHh0ELtGbZr*z-ExV+ z(Mn3K`>FJTg8`EI@~SlsvmVtv6aQc$rJfF1;r&T#nC{+IE^GX5S&jR*%UaU$QyCOA3tcP3O?e(?E;t?!9y{WR2ivV2k^It4-;Cau^_KF0X_#i)_#P zcq0mBOh3;|G6aR8dA6M+Cb3diUd0oVWflttNUF=Lcp_?V77GT*tdmzlnI$mxEQ>He zk~(UqSza-j#Q;f3|1sUaCGOo`HJ`;;FhG({UePYo8>drVF`2~xNyY3j-SR3}X4SJ( z!2n4|dDYHj76XLIt0@A6$t(s)DrAq=8Io5_W-&lg0+7ZTu16!2SqzY5mRC(PSr?MM z=-8@lOlC1al2u-{CqaFhn9O2;FnJXn5GJ$2gv{-Bv!jrJxbn9$+Q5X3j1C6$J=r{4 zj-oq^TmPQE-#Yx2kNcgN;6I|vl*h8I3S};?$^H%c9Q*L+k@Zp+qYrKf&RV8h4Ubmk zDk{%9V*TrDZ$ylsf2(?Vh$*VzE@*THM>kbYOn&sjIBwSSUWi5YxI(S%`2rNwukg1nPHGF2M zf&a@#Nf(vsE2ltHs1+1Ls?@zq zwJM?VYV=qU_K-i*cn?%0SK2d^LT1Gp1_3Pe2ZkDw5tO9u<|PNsYo6=)k}^ODqonJ6 zRO@epd14g1)DL4KCo${QjC#OuCFl~j`1s$Ts^ns{b?wISxxb$@baBQ;0?B<0kjP-v z^FZ8~F5XCG0i3GDHRh=b3Y}FyMiyTy6dF;B^L*}8=jT%6!k=BhQb-u|iBeq=d{@k)8 zHU;Y4*A&bg>qy-jlc`eEDzW%G-D{?B{b4`*$}=*UtnmZ*UpEfo#%FS;JKJ(_+S zc;Vn?$;(YlKS z+DL*MKAlDz%cF1Ifch0raSiyHUH5a-Xag387p&X2EC`s7zS94LLu{Vl`cOFN=d@6W z!tKw^%YKAM-ue<(|NnmPPVUvaZZBXTo_G#lKI^BrddYY2!rq5{`x?BD6fSyf3bW_q z%BsJ|>iO&N#-S&tyUo$@SQ|;HB>PvF?4y3CHG|L;N=_KP-?3>bB^K4+TkmvpQsbgI z*W-aJUJ97cs4nw0K<`y~DnqZz;TmhW`bd?G2M7LwwYrVmx@e(b(S3cs^?O`);4;O_ zU*tX$+sD>Zui|en{7)|Ptg5_?gT$LXrvVD@xT}=<64ta!ENa5|UMzaR5;o*qconAl zn_jIcBy_s)Gy2|SJIP&jS5|(FoA&eqlZFs_EI{BO@lvv*RsC){p!>`}H zDP*1>e4#m@KJ?1%ZM@O;NBIBdUHAF`>m57J?W>7MJi5PBHbvUUw~lY-0NHuse=uqr z;IdP&JWOEh;LmY$Dt|L^M(?Ea!%7-3&EL&nF(o}v!tZ@Fr^}8d%TNtbody>tr>th, .table>tfoot>tr>th, .table>thead>tr>th { + color: #777777; + font-weight: 400; + border-color: #cccccc; + border-width: 1px; + background-color: transparent; +} + +.table { + font-size: 14px; + width: 100%; + border-spacing: 0; + border-collapse: separate; + border-radius: 5px; + background: #fdfdfd; + padding: 0px 12px; + margin: 10px 12px; +} + +.table>tbody>tr>td, .table>tbody>tr>th, .table>tfoot>tr>td, .table>tfoot>tr>th, .table>thead>tr>td, .table>thead>tr>th { + /* padding: 10px; */ + border-top-width: 1px; + border-top-style: solid; + text-align: left; +} + +.mt-5 { + margin-top: 5px; +} +.mt-10 { + margin-top: 10px; +} +.mt-20 { + margin-top: 20px; +} +.mt-30 { + margin-top: 30px; +} +.mr-10 { + margin-right: 10px; +} +.mb-10 { + margin-bottom: 10px; +} +.ml-10 { + margin-left: 10px; +} +.my-10 { + margin-top: 10px; + margin-bottom: 10px; +} + +.mx-5 { + margin-left: 5px; + margin-right: 5px; +} +.mx-10 { + margin-left: 10px; + margin-right: 10px; +} + +.title-hero { + font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + margin: 0 0 15px; + padding: 0; + text-transform: none; + font-size: 14px; + opacity: 1; + color: #777777; + font-weight: 400; +} + +.bs-badge { + font-size: 11px; + font-weight: 400; + line-height: 19px; + display: inline-block; + min-width: 20px; + padding: 0 5px 0 4px; + border-radius: 2px; +} + +.row-title { + color: #778899; +} + +/*span.h4 { + white-space: nowrap; +}*/ +.panel-body { + white-space: nowrap; +} + +.bg-gradient-9 { + background: #0daeff; /* Old browsers */ + background: -moz-linear-gradient(-45deg, #0daeff 0%,#3939ad 30%); /* FF3.6-15 */ + background: -webkit-linear-gradient(-45deg, #0daeff 0%,#3939ad 30%); /* Chrome10-25,Safari5.1-6 */ + background: linear-gradient(-45deg, #0daeff 0%,#3939ad 30%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3939ad', endColorstr='#0daeff',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */ +} + +#page-header .user-account-btn>a.user-profile .glyph-icon, .logo-bg { + background-color: rgba(0,0,0,.15); +} + +a:hover { + text-decoration: none; +} + +.text-success { + color: #29A329 !important; +} + +.alert-success, .alert-success a, .parsley-success { + color: #1e620f; + border-color: #7cd362; + background: #E4FFE4; +} + +.flex { + display: flex; +} + +.align-center { + margin: 0 auto; +} +.text-bold { + font-weight: 600; +} +.tile-box-shortcut .tile-header { + background: 0 0; + padding: 25px; + position: absolute; + font-size: 18px; + font-weight: 400; + left: 3em; + bottom: 0px; +} +.tile-box-shortcut .tile-content-wrapper>.glyph-icon { + position: absolute; + left: 25px; + top: 40px; +} + +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: 2.25em; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + left: 25px; + top: 28px; +} +.bs-badge { + font-size: 18px; + font-weight: 100; + line-height: 19px; + display: inline-block; + min-width: 20px; + padding: 0 5px 0 4px; + border-radius: 2px; + color: #afeeee; +} +.tile-box-shortcut .bs-badge { + left: auto; + right: 10px; + top: 30px; + background: transparent; +} +#sidebar-menu { + background: #EAEAF1; +} +#page-sidebar ul li a .glyph-icon { + color: #191970; +} +#header-logo .logo-content-big, .logo-content-small { + height: 40px; + left: 15px; +} +#mobile-navigation .logo-content-small { + width: 50px; + display: block; + left: 75px; +} +#header-nav-left { + margin: 0 20px; +} + +#page-content { + background: #ffffff; +} + +.service-panel { + background: #A1BDC6 !important; +} +.serviceImg img { + box-shadow: 0 0 2px 1px rgba(0,0,0,.05); +} +.btn-icon { + top: 0px; + left: 0px; + margin: 0px auto; + position: relative; + font-size: 16px; +} + +.tab-mod { + color: #777777; + background: transparent; + border-color: #dddddd; +} + +.btn-primary { + background: #33ADFF; + border-color: #0099FF; +} +.btn-primary:hover,.btn-primary:focus { + background: #5CBDFF; + border-color: #33ADFF; +} + +.btn-min-width { + min-width: 350px; +} diff --git a/static/websiteFunctions/websiteFunctions.js b/static/websiteFunctions/websiteFunctions.js index c195f6741..22f8a3ea7 100644 --- a/static/websiteFunctions/websiteFunctions.js +++ b/static/websiteFunctions/websiteFunctions.js @@ -247,10 +247,8 @@ app.controller('listWebsites', function ($scope, $http) { } function cantLoadInitialData(response) { - console.log("not good"); } - $scope.getFurtherWebsitesFromDB = function (pageNumber) { var config = { @@ -287,6 +285,58 @@ app.controller('listWebsites', function ($scope, $http) { } + }; + + $scope.cyberPanelLoading = true; + + $scope.issueSSL = function (virtualHost) { + $scope.cyberPanelLoading = false; + + var url = "/manageSSL/issueSSL"; + + + var data = { + virtualHost: virtualHost + }; + + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; + + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); + + + function ListInitialDatas(response) { + $scope.cyberPanelLoading = true; + if (response.data.SSL === 1) { + new PNotify({ + title: 'Success!', + text: 'SSL successfully issued.', + type: 'success' + }); + } + else { + new PNotify({ + title: 'Operation Failed!', + text: response.data.error_message, + type: 'error' + }); + } + + } + + function cantLoadInitialDatas(response) { + $scope.cyberPanelLoading = true; + new PNotify({ + title: 'Operation Failed!', + text: 'Could not connect to server, please refresh this page', + type: 'error' + }); + } + + }; });