From f41b420071f50aa6575a7b3eb600e67f11a1b3e6 Mon Sep 17 00:00:00 2001 From: usmannasir <01-134132-158@student.bahria.edu.pk> Date: Thu, 26 Oct 2017 23:50:59 +0500 Subject: [PATCH] Updates to Remote Backup Transfer --- api/urls.py | 4 + api/views.py | 80 +- backup/static/backup/backup.js | 620 ++++++++--- backup/templates/backup/remoteBackups.html | 70 +- backup/urls.py | 5 +- backup/views.py | 395 ++++--- locale/br/LC_MESSAGES/django.mo | Bin 5620 -> 30458 bytes locale/br/LC_MESSAGES/django.po | 1103 ++++++++++++-------- manageSSL/views.py | 3 + middleware.py | 6 - plogical/backupUtilities.py | 27 +- plogical/remoteBackup.py | 202 +++- plogical/sslUtilities.py | 1 + websiteFunctions/views.py | 9 +- 14 files changed, 1674 insertions(+), 851 deletions(-) delete mode 100644 middleware.py diff --git a/api/urls.py b/api/urls.py index 21494585b..1c865fd72 100644 --- a/api/urls.py +++ b/api/urls.py @@ -15,4 +15,8 @@ urlpatterns = [ url(r'^fetchSSHkey', views.fetchSSHkey, name='fetchSSHkey'), url(r'^remoteTransfer', views.remoteTransfer, name='remoteTransfer'), url(r'^fetchAccountsFromRemoteServer', views.fetchAccountsFromRemoteServer, name='fetchAccountsFromRemoteServer'), + url(r'^FetchRemoteTransferStatus', views.FetchRemoteTransferStatus, name='FetchRemoteTransferStatus'), + + url(r'^cancelRemoteTransfer', views.cancelRemoteTransfer, name='cancelRemoteTransfer'), + ] \ No newline at end of file diff --git a/api/views.py b/api/views.py index f83ff14db..86f51bc2c 100644 --- a/api/views.py +++ b/api/views.py @@ -16,6 +16,10 @@ from baseTemplate.views import renderBase from random import randint import plogical.remoteBackup as rBackup from websiteFunctions.models import Websites +import os +import signal +from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging +from shutil import rmtree # Create your views here. @@ -422,6 +426,80 @@ def fetchAccountsFromRemoteServer(request): return HttpResponse(json_data) except BaseException, msg: - data = {'transferStatus': 0,'error_message': str(msg)} + data = {'fetchStatus': 0,'error_message': str(msg)} json_data = json.dumps(data) return HttpResponse(json_data) + + +def FetchRemoteTransferStatus(request): + try: + if request.method == "POST": + data = json.loads(request.body) + username = data['username'] + password = data['password'] + dir = "/home/backup/transfer-"+str(data['dir'])+"/backup_log" + + statusFile = open(dir,'r') + status = statusFile.read() + statusFile.close() + + admin = Administrator.objects.get(userName=username) + if hashPassword.check_password(admin.password, password): + + final_json = json.dumps({'fetchStatus': 1, 'error_message': "None", "status": status}) + + return HttpResponse(final_json) + else: + data_ret = {'fetchStatus': 0, 'error_message': "Invalid Credentials"} + json_data = json.dumps(data_ret) + return HttpResponse(json_data) + + except BaseException, msg: + data = {'fetchStatus': 0,'error_message': str(msg)} + json_data = json.dumps(data) + return HttpResponse(json_data) + +def cancelRemoteTransfer(request): + try: + if request.method == "POST": + data = json.loads(request.body) + username = data['username'] + password = data['password'] + dir = "/home/backup/transfer-"+str(data['dir']) + + admin = Administrator.objects.get(userName=username) + + if hashPassword.check_password(admin.password, password): + + if os.path.exists(dir): + + path = dir+"/pid" + + pid = open(path, "r").readlines()[0] + + try: + os.kill(int(pid), signal.SIGKILL) + except BaseException, msg: + logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [cancelRemoteTransfer]") + + rmtree(dir) + + data = {'cancelStatus': 1, 'error_message': "None"} + json_data = json.dumps(data) + return HttpResponse(json_data) + + else: + data = {'cancelStatus': 1, 'error_message': "None"} + json_data = json.dumps(data) + return HttpResponse(json_data) + else: + data_ret = {'cancelStatus': 0, 'error_message': "Invalid Credentials"} + json_data = json.dumps(data_ret) + return HttpResponse(json_data) + + + except BaseException, msg: + data = {'cancelStatus': 1, 'error_message': str(msg)} + json_data = json.dumps(data) + return HttpResponse(json_data) + diff --git a/backup/static/backup/backup.js b/backup/static/backup/backup.js index 1b4e92446..4f2fe8272 100644 --- a/backup/static/backup/backup.js +++ b/backup/static/backup/backup.js @@ -396,7 +396,6 @@ app.controller('restoreWebsiteControl', function($scope,$http,$timeout) { }; - $scope.restoreBackup = function(){ var backupFile = $scope.backupFile; @@ -1033,21 +1032,97 @@ app.controller('scheduleBackup', function($scope,$http,$timeout) { //*** Remote Backup site ****// app.controller('remoteBackupControl', function($scope, $http, $timeout) { + $scope.backupButton = true; - - $scope.status_success = true; - $scope.status_danger = true; - $scope.status_info = true; - $scope.backupLoading = true; $scope.request = true; $scope.requestData = ""; $scope.submitDisable = false; $scope.startRestore = true; + $scope.accountsInRemoteServerTable = true; + $scope.transferBoxBtn = true; + $scope.stopTransferbtn = true; + $scope.fetchAccountsBtn = false; + + + // notifications boxes + $scope.notificationsBox = true; + $scope.errorMessage = true; + $scope.couldNotConnect = true; + $scope.accountsFetched = true; + $scope.backupProcessStarted = true; + $scope.backupCancelled = true; + + // status box + + $scope.backupStatus = true; + + var websitesToBeBacked = []; + var websitesToBeBackedTemp = []; + + var index = 0; + var tempTransferDir = ""; + + $scope.passwordEnter = function() { + $scope.backupButton = false; + }; + + $scope.addRemoveWebsite = function (website,websiteStatus) { + if(websiteStatus==true) + { + var check = 1; + for(var j = 0; j < websitesToBeBacked.length; j++){ + if (websitesToBeBacked[j] == website){ + check = 0; + break; + } + } + if(check == 1) { + websitesToBeBacked.push(website); + } + + } + else{ + + var tempArray = []; + + for(var j = 0; j < websitesToBeBacked.length; j++){ + if (websitesToBeBacked[j] != website){ + tempArray.push(websitesToBeBacked[j]); + } + } + websitesToBeBacked = tempArray; + } + }; + + $scope.allChecked = function (webSiteStatus) { + + + + if(webSiteStatus==true) { + + websitesToBeBacked = websitesToBeBackedTemp; + $scope.webSiteStatus = true; + } + else{ + websitesToBeBacked = []; + $scope.webSiteStatus = false; + } + }; $scope.fetchAccountsFromRemoteServer = function () { + $scope.backupLoading = false; + + // notifications boxes + $scope.notificationsBox = true; + $scope.errorMessage = true; + $scope.couldNotConnect = true; + $scope.accountsFetched = true; + $scope.backupProcessStarted = true; + $scope.backupCancelled = true; + var IPAddress = $scope.IPAddress; var password = $scope.password; @@ -1071,112 +1146,87 @@ app.controller('remoteBackupControl', function($scope, $http, $timeout) { if (response.data.status == 1) { $scope.records = JSON.parse(response.data.data); + var parsed = JSON.parse(response.data.data); + + for(var j = 0; j < parsed.length; j++){ + websitesToBeBackedTemp.push(parsed[j].website); + } + $scope.accountsInRemoteServerTable = false; + $scope.backupLoading = true; + + // enable the transfer/cancel btn + + $scope.transferBoxBtn = false; + + // notifications boxes + $scope.notificationsBox = false; + $scope.errorMessage = true; + $scope.couldNotConnect = true; + $scope.accountsFetched = false; + $scope.backupProcessStarted = true; + $scope.backupCancelled = true; + + } else { $scope.error_message = response.data.error_message; + $scope.backupLoading = true; + + // notifications boxes + $scope.notificationsBox = false; + $scope.errorMessage = false; + $scope.couldNotConnect = true; + $scope.accountsFetched = true; + $scope.backupProcessStarted = true; + $scope.backupCancelled = true; } } function cantLoadInitialDatas(response) { - } + // notifications boxes - }; - - $scope.passwordEnter = function() { - $scope.backupButton = false; - }; - - var seek = 0; - var backupDir; - var username = "admin"; - - - - function getBackupStatus(password) { - - url = "/backup/getRemoteTransferStatus"; - - var data = { - ipAddress: $scope.IPAddress, - seek: seek, - backupDir: backupDir, - }; - - var config = { - headers: { - 'X-CSRFToken': getCookie('csrftoken') - } - }; - - - console.log("Initiating Status with seek: " + seek) - - $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); - - function ListInitialDatas(response) { - console.log(response.data) - - if (response.data.remoteTransferStatus == 1) { - seek = response.data.where; - if (response.data.complete == 1) { - $scope.submitDisable = false; - $scope.backupLoading = true; - - $scope.status_danger = true; - $scope.status_info = true; - $scope.status_success = false; - $scope.startRestore = true; - $scope.statusBox = "Backup Files Transferred! Require Permission to restore backups"; - $scope.requestData = $scope.requestData + response.data.logs - seek = 0; - - $scope.startRestore = false; - } else { - $scope.requestData = $scope.requestData + response.data.logs - $timeout(getBackupStatus(password), 5000); - } - } else { - if (response.data.error_message == "list index out of range") { - $timeout(getBackupStatus(password), 5000); - } else { - $scope.submitDisable = false; - $scope.status_danger = false; - $scope.status_info = true; - $scope.status_success = true; - $scope.statusBox = "Unable to Transfer File: " + response.data.error_message; - } - - } + $scope.notificationsBox = false; + $scope.errorMessage = true; + $scope.couldNotConnect = false; + $scope.accountsFetched = true; + $scope.backupProcessStarted = true; + $scope.backupCancelled = true; } - function cantLoadInitialDatas(response) { - $scope.status_danger = false; - $scope.status_info = true; - $scope.status_success = true; - $scope.statusBox = "Unable to connect" - } }; + + $scope.startTransfer = function () { - $scope.submitRemoteBackup = function() { - $scope.requestData = ""; - $scope.status_success = true; - $scope.status_danger = true; - $scope.status_info = true; + // notifications boxes + $scope.notificationsBox = true; + $scope.errorMessage = true; + $scope.couldNotConnect = true; + $scope.accountsFetched = true; + $scope.backupProcessStarted = true; + $scope.backupCancelled = true; + + + + if(websitesToBeBacked.length === 0){ + alert("No websites selected for transfer.") + return; + } + + $scope.fetchAccountsBtn = true; $scope.backupLoading = false; - $scope.submitDisable = true; + var IPAddress = $scope.IPAddress; var password = $scope.password; - url = "/backup/submitRemoteBackups"; + url = "/backup/starRemoteTransfer"; var data = { ipAddress: IPAddress, - username: username, password: password, }; @@ -1187,48 +1237,82 @@ app.controller('remoteBackupControl', function($scope, $http, $timeout) { }; - $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); - function ListInitialDatas(response) { - console.log(response.data) - if (response.data.status == 1) { - $scope.request = false; - console.log("Backup generated!!") - backupDir = response.data.dir; - getBackupStatus(password); - } else { - $scope.submitDisable = false; + if (response.data.remoteTransferStatus == 1) { + tempTransferDir = response.data.dir; + $scope.accountsInRemoteServerTable = true; + + // notifications boxes + $scope.notificationsBox = false; + $scope.errorMessage = true; + $scope.couldNotConnect = true; + $scope.accountsFetched = true; + $scope.backupProcessStarted = false; + $scope.backupCancelled = true; + + // disable transfer button + + $scope.startTransferbtn = true; + + + // enable cancel button + + $scope.stopTransferbtn = false; + + + getBackupStatus(); + + + } + else { + + $scope.error_message = response.data.error_message; $scope.backupLoading = true; - $scope.status_danger = false; - $scope.status_info = true; - $scope.status_success = true; - $scope.statusBox = "Unable to Transfer File: " + response.data.error_message; + // Notifications box settings + + // notifications boxes + $scope.notificationsBox = false; + $scope.errorMessage = false; + $scope.couldNotConnect = true; + $scope.accountsFetched = true; + $scope.backupProcessStarted = true; + $scope.backupCancelled = true; + } } function cantLoadInitialDatas(response) { - $scope.status_danger = false; - $scope.status_info = true; - $scope.status_success = true; - $scope.statusBox = "Unable to connect" + + // Notifications box settings + + // notifications boxes + $scope.notificationsBox = false; + $scope.errorMessage = true; + $scope.couldNotConnect = false; + $scope.accountsFetched = true; + $scope.backupProcessStarted = true; + $scope.backupCancelled = true; + } }; - function getRestStatus() { - url = "/backup/remoteRestoreStatus"; + + function getBackupStatus(password) { + + url = "/backup/getRemoteTransferStatus"; var data = { - seek: seek, - backupDir: backupDir, + password : $scope.password, + ipAddress: $scope.IPAddress, + dir: tempTransferDir, }; - console.log(data) var config = { headers: { @@ -1237,69 +1321,58 @@ app.controller('remoteBackupControl', function($scope, $http, $timeout) { }; - console.log("Initiating Status with seek: " + seek) - $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { - console.log(response.data) - if (response.data.remoteRestoreStatus == 1) { - seek = response.data.where; - console.log(seek); - if (response.data.complete == 1) { - $scope.submitDisable = false; + if (response.data.remoteTransferStatus == 1) { + + if(response.data.backupsSent == 0){ + $scope.backupStatus = false; + $scope.requestData = response.data.status; + $timeout(getBackupStatus, 2000); + } + else{ + $scope.requestData = response.data.status; + $timeout.cancel(); $scope.backupLoading = true; - - $scope.status_danger = true; - $scope.status_info = true; - $scope.status_success = false; - - $scope.statusBox = "Backup Files Restored!"; - $scope.requestData = $scope.requestData + response.data.logs - $scope.startRestore = false; - } else { - $scope.requestData = $scope.requestData + response.data.logs - $timeout(getRestStatus(), 5000); - } - } else { - if (response.data.error_message == "list index out of range") { - $timeout(getRestStatus(), 5000); - } else { - $scope.submitDisable = false; - $scope.status_danger = false; - $scope.status_info = true; - $scope.status_success = true; - $scope.statusBox = "Unable to Restore File: " + response.data.error_message; + remoteBackupRestore(); } + } + else{ + + $scope.error_message = response.data.error_message; + $scope.backupLoading = true; + $scope.couldNotConnect = true; + + // Notifications box settings + + $scope.couldNotConnect = true; + $scope.errorMessage = false; + $scope.accountsFetched = true; + $scope.notificationsBox = false; + $timeout.cancel(); } } function cantLoadInitialDatas(response) { - $scope.status_danger = false; - $scope.status_info = true; - $scope.status_success = true; - $scope.statusBox = "Unable to connect" + // Notifications box settings + + $scope.couldNotConnect = false; + $scope.errorMessage = true; + $scope.accountsFetched = true; + $scope.notificationsBox = false; } }; - $scope.submitBackupRestore = function() { - $scope.status_success = true; - $scope.status_danger = true; - $scope.status_info = false; - $scope.statusBox = "Restoring Backup"; - - $scope.backupLoading = false; - $scope.submitDisable = true; - + function remoteBackupRestore(){ url = "/backup/remoteBackupRestore"; var data = { - backupDir: backupDir + backupDir: tempTransferDir, }; - console.log(data) var config = { headers: { @@ -1307,42 +1380,241 @@ app.controller('remoteBackupControl', function($scope, $http, $timeout) { } }; - seek = 0 $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); function ListInitialDatas(response) { - console.log(response.data) if (response.data.remoteRestoreStatus == 1) { - $scope.request = false; - $scope.backupLoading = false; + localRestoreStatus(); + } + } - $scope.status_danger = true; - $scope.status_info = true; - $scope.status_success = false; - $scope.statusBox = "Restore in Progress, fetching details" - getRestStatus(); - } else { - $scope.submitDisable = false; + function cantLoadInitialDatas(response) { + // Notifications box settings + + $scope.couldNotConnect = false; + $scope.errorMessage = true; + $scope.accountsFetched = true; + $scope.notificationsBox = false; + } + + /////////////// + + }; + + function localRestoreStatus(password) { + + + + url = "/backup/localRestoreStatus"; + + var data = { + backupDir: tempTransferDir, + }; + + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; + + + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); + + function ListInitialDatas(response) { + + if (response.data.remoteTransferStatus == 1) { + + if(response.data.complete == 0){ + $scope.backupStatus = false; + $scope.requestData = response.data.status; + $timeout(localRestoreStatus, 2000); + } + else{ + $scope.requestData = response.data.status; + $timeout.cancel(); + $scope.backupLoading = true; + $scope.startTransferbtn = false; + } + } + else{ + + $scope.error_message = response.data.error_message; $scope.backupLoading = true; - $scope.status_danger = false; - $scope.status_info = true; - $scope.status_success = true; - $scope.statusBox = "Unable to Restore Backups: " + response.data.error_message; + $scope.couldNotConnect = true; + + // Notifications box settings + + $scope.couldNotConnect = true; + $scope.errorMessage = false; + $scope.accountsFetched = true; + $scope.notificationsBox = false; + } } function cantLoadInitialDatas(response) { - $scope.status_danger = false; - $scope.status_info = true; - $scope.status_success = true; - $scope.statusBox = "Unable to connect"; + // Notifications box settings + + $scope.couldNotConnect = false; + $scope.errorMessage = true; + $scope.accountsFetched = true; + $scope.notificationsBox = false; + } + }; + + + function restoreAccounts() { + + url = "/backup/getRemoteTransferStatus"; + + var data = { + password : $scope.password, + ipAddress: $scope.IPAddress, + dir: tempTransferDir, + }; + + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; + + + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); + + function ListInitialDatas(response) { + + if (response.data.remoteTransferStatus == 1) { + + if(response.data.backupsSent == 0){ + $scope.backupStatus = false; + $scope.requestData = response.data.status; + $timeout(getBackupStatus, 2000); + } + else{ + $timeout.cancel(); + } + } + + } + + function cantLoadInitialDatas(response) { + // Notifications box settings + + $scope.couldNotConnect = false; + $scope.errorMessage = true; + $scope.accountsFetched = true; + $scope.notificationsBox = false; + } + }; + + $scope.cancelRemoteBackup = function () { + + + $scope.backupLoading = false; + + // notifications boxes + $scope.notificationsBox = true; + $scope.errorMessage = true; + $scope.couldNotConnect = true; + $scope.accountsFetched = true; + $scope.backupProcessStarted = true; + $scope.backupCancelled = true; + + var IPAddress = $scope.IPAddress; + var password = $scope.password; + + url = "/backup/cancelRemoteBackup"; + + var data = { + ipAddress: IPAddress, + password: password, + dir:tempTransferDir, + }; + + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; + + + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); + + function ListInitialDatas(response) { + + if (response.data.cancelStatus == 1) { + $scope.backupLoading = true; + + // notifications boxes + $scope.notificationsBox = false; + $scope.errorMessage = true; + $scope.couldNotConnect = true; + $scope.accountsFetched = true; + $scope.backupProcessStarted = true; + $scope.backupCancelled = false; + + // enable transfer button + + $scope.startTransferbtn = false; + + //disable cancel button + + $scope.stopTransferbtn = true; + + // hide status box + + $scope.backupStatus = true; + + // bring back websites table + + $scope.accountsInRemoteServerTable = false; + + // enable fetch button + + $scope.fetchAccountsBtn = false; + + + } + else { + + $scope.error_message = response.data.error_message; + $scope.backupLoading = true; + + // notifications boxes + + $scope.notificationsBox = false; + $scope.errorMessage = false; + $scope.couldNotConnect = true; + $scope.accountsFetched = true; + $scope.backupProcessStarted = true; + $scope.backupCancelled = true; + + + + } + + } + + function cantLoadInitialDatas(response) { + + // notifications boxes + + $scope.notificationsBox = false; + $scope.errorMessage = true; + $scope.couldNotConnect = false; + $scope.accountsFetched = true; + $scope.backupProcessStarted = true; + $scope.backupCancelled = true; + } }; + }); ///** Backup site ends **/// \ No newline at end of file diff --git a/backup/templates/backup/remoteBackups.html b/backup/templates/backup/remoteBackups.html index b2cf6e564..084f67515 100644 --- a/backup/templates/backup/remoteBackups.html +++ b/backup/templates/backup/remoteBackups.html @@ -41,13 +41,60 @@
- +
-
+ + + +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+
+

{$ error_message $}

+
+
+

Could not connect, please refresh this page.

+
+ +
+

Accounts Successfully Fetched from remote server.

+
+ +
+

Backup Process successfully started.

+
+ +
+

Backup successfully cancelled.

+
+ +
+
+
+ +
+ +
+
+
@@ -59,16 +106,16 @@ {% trans "PHP" %} {% trans "Package" %} {% trans "Email" %} - {% trans "Transfer" %} + - + - + @@ -78,17 +125,12 @@ -
-

{$ error_message $}

-
-
-

{$ statusBox $}

-
-
+ + +
- - +
diff --git a/backup/urls.py b/backup/urls.py index e635476fa..df1efd2c8 100644 --- a/backup/urls.py +++ b/backup/urls.py @@ -39,11 +39,12 @@ urlpatterns = [ url(r'^remoteBackups', views.remoteBackups, name='remoteBackups'), url(r'^submitRemoteBackups', views.submitRemoteBackups, name='submitRemoteBackups'), - url(r'^remoteTransferStatus', views.remoteTransferStatus, name='remoteTransferStatus'), url(r'^getRemoteTransferStatus', views.getRemoteTransferStatus, name='getRemoteTransferStatus'), url(r'^remoteBackupRestore', views.remoteBackupRestore, name='remoteBackupRestore'), - url(r'^remoteRestoreStatus', views.remoteRestoreStatus, name='remoteRestoreStatus'), + url(r'^starRemoteTransfer', views.starRemoteTransfer, name='starRemoteTransfer'), + url(r'^localRestoreStatus', views.localRestoreStatus, name='localRestoreStatus'), + url(r'^cancelRemoteBackup', views.cancelRemoteBackup, name='cancelRemoteBackup'), diff --git a/backup/views.py b/backup/views.py index 0fdcd4f2a..a64290d96 100644 --- a/backup/views.py +++ b/backup/views.py @@ -160,61 +160,55 @@ def getCurrentBackups(request): def submitBackupCreation(request): try: - try: - if request.method == 'POST': + if request.method == 'POST': - data = json.loads(request.body) - backupDomain = data['websiteToBeBacked'] + data = json.loads(request.body) + backupDomain = data['websiteToBeBacked'] - website = Websites.objects.get(domain=backupDomain) + website = Websites.objects.get(domain=backupDomain) - backupPath = "/home/"+backupDomain+"/backup/" + backupPath = "/home/" + backupDomain + "/backup/" - if not os.path.exists(backupPath): - os.mkdir(backupPath) + if not os.path.exists(backupPath): + os.mkdir(backupPath) - domainUser = backupDomain.split('.') + domainUser = backupDomain.split('.') - backupName = 'backup-'+domainUser[0]+"-"+time.strftime("%I-%M-%S-%a-%b-%Y") + backupName = 'backup-' + domainUser[0] + "-" + time.strftime("%I-%M-%S-%a-%b-%Y") - tempStoragePath = backupPath+backupName + tempStoragePath = backupPath + backupName - if not os.path.exists(tempStoragePath): - os.mkdir(tempStoragePath) + if not os.path.exists(tempStoragePath): + os.mkdir(tempStoragePath) - ## Generating meta + ## Generating meta - meta = tempStoragePath+"/meta" + meta = tempStoragePath + "/meta" - metaFile = open(meta,'w') + metaFile = open(meta, 'w') - metaFile.write(backupDomain+"\n") + metaFile.write(backupDomain + "\n") - databases = website.databases_set.all() + databases = website.databases_set.all() - for items in databases: - dbuser = DBUsers.objects.get(user=items.dbUser) - metaFile.write(items.dbName + "-" + items.dbUser + "-"+dbuser.password + "\n") - metaFile.close() + for items in databases: + dbuser = DBUsers.objects.get(user=items.dbUser) + metaFile.write(items.dbName + "-" + items.dbUser + "-" + dbuser.password + "\n") + metaFile.close() - backupUtil.backupUtilities.initiateBackup(tempStoragePath,backupName,backupPath) + backupUtil.backupUtilities.initiateBackup(tempStoragePath, backupName, backupPath) - newBackup = Backups(website=website,fileName=backupName,date=time.strftime("%I-%M-%S-%a-%b-%Y"), - size=0,status=0) - newBackup.save() - - - final_json = json.dumps({'metaStatus': 1, 'error_message': "None",'tempStorage':tempStoragePath}) - return HttpResponse(final_json) - - except BaseException,msg: - final_dic = {'metaStatus': 0, 'error_message': str(msg)} - final_json = json.dumps(final_dic) + newBackup = Backups(website=website, fileName=backupName, date=time.strftime("%I-%M-%S-%a-%b-%Y"), + size=0, status=0) + newBackup.save() + final_json = json.dumps({'metaStatus': 1, 'error_message': "None", 'tempStorage': tempStoragePath}) return HttpResponse(final_json) - except KeyError: - final_dic = {'metaStatus': 0, 'error_message': "Not Logged In, please refresh the page or login again."} + + except BaseException, msg: + final_dic = {'metaStatus': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) + return HttpResponse(final_json) def backupStatus(request): @@ -397,79 +391,78 @@ def deleteBackup(request): def submitRestore(request): try: - val = request.session['userID'] - try: - if request.method == 'POST': + if request.method == 'POST': + data = json.loads(request.body) + backupFile = data['backupFile'] - data = json.loads(request.body) - backupFile = data['backupFile'] + originalFile = "/home/backup/" + backupFile - backupUtil.backupUtilities.initiateRestore(backupFile) + if not os.path.exists(originalFile): + dir = data['dir'] + else: + dir = None - final_dic = {'restoreStatus': 1, 'error_message': "None"} - final_json = json.dumps(final_dic) - return HttpResponse(final_json) + backupUtil.backupUtilities.initiateRestore(backupFile, dir) - except BaseException,msg: - final_dic = {'restoreStatus': 0, 'error_message': str(msg)} + final_dic = {'restoreStatus': 1, 'error_message': "None"} final_json = json.dumps(final_dic) return HttpResponse(final_json) - except KeyError: - final_dic = {'restoreStatus': 0, 'error_message': "Not Logged In, please refresh the page or login again."} + + except BaseException, msg: + final_dic = {'restoreStatus': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) return HttpResponse(final_json) def restoreStatus(request): try: - val = request.session['userID'] - try: - if request.method == 'POST': + if request.method == 'POST': + data = json.loads(request.body) + backupFile = data['backupFile'].strip(".tar.gz") - data = json.loads(request.body) - backupFile = data['backupFile'].strip(".tar.gz") + path = "/home/backup/" + backupFile - path = "/home/backup/"+backupFile + if os.path.exists(path): + pass + else: + dir = data['dir'] + path = "/home/backup/transfer-" + str(dir) + "/" + backupFile + if os.path.exists(path): + try: + status = open(path + '/status', 'r').readlines()[0] + except: + status = "Just Started" - if os.path.exists(path): - try: - status = open(path+'/status','r').readlines()[0] - except: - status = "Just Started" - - if status == "Done": - rmtree(path) - final_json = json.dumps({'restoreStatus': 1, 'error_message': "None", "status": "Done"}) - return HttpResponse(final_json) - - if status == "Website already exists": - rmtree(path) - final_json = json.dumps({'restoreStatus': 1, 'error_message': "Website already exists", "status": "Website already exists"}) - return HttpResponse(final_json) - - if status.find("Not able to create Account and databases") > -1: - rmtree(path) - final_json = json.dumps({'restoreStatus': 1, 'error_message': "Not able to create Account and databases, aborting.", - "status": "Not able to create Account and databases, aborting."}) - return HttpResponse(final_json) - - - final_json = json.dumps({'restoreStatus': 1, 'error_message': "None", "status": status}) - return HttpResponse(final_json) - else: - final_json = json.dumps({'restoreStatus': 1, 'error_message': "None", "status": 0}) + if status == "Done": + rmtree(path) + final_json = json.dumps({'restoreStatus': 1, 'error_message': "None", "status": "Done"}) return HttpResponse(final_json) + if status == "Website already exists": + rmtree(path) + final_json = json.dumps({'restoreStatus': 1, 'error_message': "Website already exists", + "status": "Website already exists"}) + return HttpResponse(final_json) - except BaseException,msg: - final_dic = {'restoreStatus': 0, 'error_message': str(msg)} - final_json = json.dumps(final_dic) - return HttpResponse(final_json) - except KeyError: - final_dic = {'restoreStatus': 0, 'error_message': "Not Logged In, please refresh the page or login again."} + if status.find("Not able to create Account and databases") > -1: + rmtree(path) + final_json = json.dumps( + {'restoreStatus': 1, 'error_message': "Not able to create Account and databases, aborting.", + "status": "Not able to create Account and databases, aborting."}) + return HttpResponse(final_json) + + final_json = json.dumps({'restoreStatus': 1, 'error_message': "None", "status": status}) + return HttpResponse(final_json) + else: + final_json = json.dumps({'restoreStatus': 1, 'error_message': "None", "status": 0}) + return HttpResponse(final_json) + + + except BaseException, msg: + final_dic = {'restoreStatus': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) return HttpResponse(final_json) @@ -1063,10 +1056,6 @@ def submitRemoteBackups(request): pathToSSH = "/root/.ssh/authorized_keys" - sshFile = open(pathToSSH, 'a') - sshFile.writelines("#Added by CyberPanel\n") - sshFile.close() - presenseCheck = 0 @@ -1078,6 +1067,7 @@ def submitRemoteBackups(request): if presenseCheck == 0: writeToFile = open(pathToSSH, 'a') + writeToFile.writelines("#Added by CyberPanel\n") writeToFile.writelines("\n") writeToFile.writelines(sshkey) writeToFile.writelines("\n") @@ -1091,8 +1081,6 @@ def submitRemoteBackups(request): r = requests.post(url, data=finalData, verify=False) - logging.CyberCPLogFileWriter.writeToFile(r.text) - data = json.loads(r.text) @@ -1127,73 +1115,92 @@ def submitRemoteBackups(request): final_json = json.dumps({'status': 0, 'type':'exception', 'error_message': str(msg)}) return HttpResponse(final_json) - - -def remoteTransferStatus(request): +def starRemoteTransfer(request): try: - if request.method == "POST": - data = json.loads(request.body) - backupDir = data['backupDir'] - seek = data['seek'] + val = request.session['userID'] + try: + if request.method == 'POST': + data = json.loads(request.body) - #admin = Administrator.objects.get(userName=username) - if 1==1: - backupLogPath = "/home/backup/transfer-"+ backupDir +"/" + "backup_log" - print backupLogPath + ipAddress = data['ipAddress'] + password = data['password'] - if os.path.isfile(backupLogPath): - pass + ownIP = requests.get('https://api.ipify.org').text + + finalData = json.dumps({'username': "admin", "password": password,"ipAddress": ownIP}) + + url = "https://" + ipAddress + ":8090/api/remoteTransfer" + + r = requests.post(url, data=finalData, verify=False) + + data = json.loads(r.text) + + localStoragePath = "/home/backup/transfer-"+str(data['dir']) + + if not os.path.exists(localStoragePath): + os.makedirs(localStoragePath) + + if data['transferStatus'] == 1: + final_json = json.dumps({'remoteTransferStatus': 1, 'error_message': "None","dir":data['dir']}) + return HttpResponse(final_json) else: - data_ret = {'remoteTransferStatus': 0, 'error_message': "No such log found"} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) + final_json = json.dumps({'remoteTransferStatus': 0, 'error_message': data['error_message']}) + return HttpResponse(final_json) - last_line = "" - with open(backupLogPath, 'r') as logfile: - last_line = logfile.readlines()[-1] - logfile.seek(seek) - data = logfile.read() - where = logfile.tell() - - if 'success' in last_line: - data_ret = {'remoteTransferStatus': 1, "complete":1, 'error_message': "None","logs":data,"where":where} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) - else: - - data_ret = {'remoteTransferStatus': 1, "complete":0, 'error_message': "Backup In Progress","logs":data,"where":where} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) - - else: - data_ret = {'remoteTransferStatus': 0, "complete":0, 'error_message': "Invalid Credentials"} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) - - - except BaseException, msg: - data = {'remoteTransferStatus': 0, 'error_message': str(msg)} - json_data = json.dumps(data) - return HttpResponse(json_data) + except BaseException,msg: + final_json = json.dumps({'remoteTransferStatus': 0, 'error_message': str(msg)}) + return HttpResponse(final_json) + except KeyError: + final_json = json.dumps({'remoteTransferStatus': 0, 'error_message': str(msg)}) + return HttpResponse(final_json) def getRemoteTransferStatus(request): try: if request.method == "POST": data = json.loads(request.body) ipAddress = data['ipAddress'] - backupDir = data['backupDir'] - seek = data['seek'] + password = data['password'] + dir = data['dir'] + username = "admin" - finalData = json.dumps({'backupDir': backupDir, "seek":seek}) - r = requests.post("https://"+ipAddress+":8090/backup/remoteTransferStatus", data=finalData) + finalData = json.dumps({'dir': dir, "username":username,"password":password}) + r = requests.post("https://"+ipAddress+":8090/api/FetchRemoteTransferStatus", data=finalData) + + data = json.loads(r.text) + + if data['fetchStatus'] == 1: + if data['status'].find("Backups are successfully generated and received on") > -1: + + #try: + #finalData = json.dumps({"backupDir": dir}) + #r = requests.post("http://localhost:5003/backup/remoteBackupRestore", data=finalData) + #logging.CyberCPLogFileWriter.writeToFile(r.text) + #except BaseException,msg: + # logging.CyberCPLogFileWriter.writeToFile("Something happened here:" +str(msg)) + + + + data = {'remoteTransferStatus': 1, 'error_message': "None", "status": data['status'],'backupsSent': 1} + json_data = json.dumps(data) + return HttpResponse(json_data) + else: + data = {'remoteTransferStatus': 1, 'error_message': "None", "status": data['status'], + 'backupsSent': 0} + json_data = json.dumps(data) + return HttpResponse(json_data) + else: + data = {'remoteTransferStatus': 0, 'error_message': data['error_message'], + 'backupsSent': 0} + json_data = json.dumps(data) + return HttpResponse(json_data) - return HttpResponse(r.text) except BaseException, msg: - data = {'remoteTransferStatus': 0, 'error_message': str(msg)} + data = {'remoteTransferStatus': 0, 'error_message': str(msg),'backupsSent': 0} json_data = json.dumps(data) return HttpResponse(json_data) + def remoteBackupRestore(request): try: val = request.session['userID'] @@ -1202,11 +1209,10 @@ def remoteBackupRestore(request): data = json.loads(request.body) backupDir = data['backupDir'] - backupDir = "/home/backup/transfer-"+str(backupDir) - admin = Administrator.objects.get(pk=val) + backupDirComplete = "/home/backup/transfer-"+str(backupDir) #adminEmail = admin.email - restoreRequest = rBackup.remoteBackup.remoteRestore(backupDir, admin) + restoreRequest = rBackup.remoteBackup.remoteRestore(backupDirComplete,str(backupDir)) if restoreRequest[0] == 1: data = {'remoteRestoreStatus': 1, 'error_message': 'None'} @@ -1227,50 +1233,93 @@ def remoteBackupRestore(request): json_data = json.dumps(data_ret) return HttpResponse(json_data) - - - -def remoteRestoreStatus(request): +def localRestoreStatus(request): try: if request.method == "POST": + data = json.loads(request.body) backupDir = data['backupDir'] - seek = data['seek'] #admin = Administrator.objects.get(userName=username) - if 1==1: - backupLogPath = "/home/backup/transfer-"+ backupDir +"/" + "backup_log" + backupLogPath = "/home/backup/transfer-"+ backupDir +"/" + "backup_log" - if os.path.isfile(backupLogPath): - pass - else: - data_ret = {'remoteRestoreStatus': 0, 'error_message': "No such log found"} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) + removalPath = "/home/backup/transfer-"+ str(backupDir) - last_line = "" - with open(backupLogPath, 'r') as logfile: - last_line = logfile.readlines()[-1] - logfile.seek(seek) - data = logfile.read() - where = logfile.tell() + if os.path.isfile(backupLogPath): - if 'success' in last_line: - data_ret = {'remoteRestoreStatus': 1, "complete":1, 'error_message': "None","logs":data,"where":where} + statusFile = open(backupLogPath,"r") + status = statusFile.read() + statusFile.close() + + if status.find("completed[success]")>-1: + rmtree(removalPath) + data_ret = {'remoteTransferStatus': 1, 'error_message': "None", "status": status, "complete": 1} json_data = json.dumps(data_ret) return HttpResponse(json_data) else: - - data_ret = {'remoteRestoreStatus': 1, "complete":0, 'error_message': "Backup In Progress","logs":data,"where":where} + data_ret = {'remoteTransferStatus': 1, 'error_message': "None", "status": status, "complete": 0} json_data = json.dumps(data_ret) return HttpResponse(json_data) - else: - data_ret = {'remoteRestoreStatus': 0, "complete":0, 'error_message': "Invalid Credentials"} + data_ret = {'remoteTransferStatus': 0, 'error_message': "No such log found","status":"None","complete":0} json_data = json.dumps(data_ret) return HttpResponse(json_data) + except BaseException, msg: - data = {'remoteRestoreStatus': 0, "complete":0, 'error_message': str(msg)} + data = {'remoteTransferStatus': 0,'error_message': str(msg),"status":"None","complete":0} json_data = json.dumps(data) - return HttpResponse(json_data) \ No newline at end of file + return HttpResponse(json_data) + +def cancelRemoteBackup(request): + try: + + if request.method == "POST": + + data = json.loads(request.body) + ipAddress = data['ipAddress'] + password = data['password'] + dir = data['dir'] + username = "admin" + + + finalData = json.dumps({'dir': dir, "username":username,"password":password}) + r = requests.post("https://"+ipAddress+":8090/api/cancelRemoteTransfer", data=finalData) + + data = json.loads(r.text) + + if data['cancelStatus'] == 1: + pass + else: + logging.CyberCPLogFileWriter.writeToFile("Some error cancelling at remote server, see the log file for remote server.") + + path = "/home/backup/transfer-" + str(dir) + + if os.path.exists(path): + try: + pathpid = path + "/pid" + + pid = open(pathpid, "r").readlines()[0] + + try: + os.kill(int(pid), signal.SIGKILL) + except BaseException, msg: + logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [cancelRemoteBackup]") + + rmtree(path) + except: + rmtree(path) + + data = {'cancelStatus': 1, 'error_message': "None"} + json_data = json.dumps(data) + return HttpResponse(json_data) + else: + data = {'cancelStatus': 1, 'error_message': "None"} + json_data = json.dumps(data) + return HttpResponse(json_data) + + + except BaseException, msg: + data = {'cancelStatus': 0, 'error_message': str(msg)} + json_data = json.dumps(data) + return HttpResponse(json_data) diff --git a/locale/br/LC_MESSAGES/django.mo b/locale/br/LC_MESSAGES/django.mo index b923c58798c88f3ee80d4af24b726ae967b14be9..ba8f25d3ec37c1410e856d322c5c21f1b9e73342 100644 GIT binary patch literal 30458 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 MvSb}K{~_7`0VE?VcK`qY literal 5620 zcma);dvIJ;9mfxXAOS=W@ChDX7AQ+nC{RLyE=igOvPsM)Ed?CsX7@H-*zCr=cMB05 zOItUbo@T2e@cr1Jmo&^5}Plv~T z#F$UPv*6jV14_gI)cz58BK#6O9+u##aME+T=OgfB#-D1jhthL9l%5il{ClC~e+%N8dCZSL>BpaiA7gwL z%D>-0{!D`(`Sm)Kzkh_%a|B|V`4^P_{eq4fV7YW;}>Q9KnYo@eqSKhA?U9b?Q&D1F=bk)6As)_og(0{#GA1fPTL z@DK0`*hWw#=X$94_d?a*Es#I+Wqv*bx5G2xGKmR6_pMQs! z!m|j@=V2F={5zohcoJ^ zpQe8DcK!(-1LdQh(G=z!&kj$P znVV^<1xwR&BTco?d{mEXXtG-mu9zO0^y^to>!K+xl%ctSrd(e|Yd#rXuJE0UnuAa^ zc`dDzCcE|IQn>SY3GXAc4K&>Ym(dg_Jy+5;(r%@xX4`44Pd^>yK#$H&^SRo;sJ`{6 zPWbGZRW#ils-pp#p4(`uPt~IGaSKg(P)=6T^jw$1{a(ti>bIMAIcy8^|Z~jLE23;eS`JrE?Dc{(tEp)_j7$;-|Al4FztHUI+~tMG}S_0oot~HMv?8W zjyGR7g<}&zscf>vqM98J3)NaN(tCS%SPtWGacCP0gRyeho(t}_UDZk@EX1X1g~dx| z^7;NHvp3dD<)Y~t8nyX2i0hGi9gTwV&~$ALDhsefK@{DEcGFc00~B`;%`rM~OJ&>hBP0J){;PU`|_SG2D%-BsdHNtO2$OR*i=Fr)-*DUC-a)#H9$ z+T9z&wOX~Nf#xfbQbszhkuh$NWD_3 zj2ld@)?*mD26t!+H&fXUtz0T>|%kKL58=L!n+I^P_y1PUUQqX#fehIc$*?#e6bHz zYq1%sm8!K;JjF{jt`@3gGaO8$IX1&Ef6jy7Z$>%rNo5QKdy|~RBIFk9m)3 zthze0sv~pxD!b~c&MU83*>Pn@2MaU9;kJ^p;n!{M$qr|7gPHEE-7wgh>sxv2;6P7X ze-Oo)ky=oRNKm!bY1fbT_uGMNuE(zJ$z}Wc*JZoAhkNq*>seYEuao7>NEl3X+Wzc7 z?`XD{b@fURm1^tClv<=xi^Ia!%L>(r#VuH#>&x{ldb;Yejy6sj6_0j8*J+Zr<`? zFwW$8Y&akbmUV6NBoel}ZPNyU53+kdyALjYA(o6{z%)yyZ8G23VTqX(Ik~NS)0=V0 zMqNNCW0#BIbHr%}Ce1BX+VWXhvRh^*v&n(R4nx@Hlf54xt0kcp0n#M{XByu~aIZDs zc(5CJ+m)ck!zTGIfm0z6C7YIsb$+&7LE2ApmCJd>n~++BBk2Q!l1@-2%cDi$lsuO< zXXcDg+W!=}yaIi!mk+ymKSIo=8#|LjiW>!TR81|RT`q)UFfR{v2#7tdAH;czNXLT# zORaE5lG*f>sKyQ|el9j9d5XS@X_l=sE)@q`KA=m!pZ;XJ3V8qx=|{9Vs@meDHXcxV zH~|F7)!;tWQsbNQ(tTT->wl73>g;5bO3md-2SyU6(@(A{#N`1WWTKO^B+Gn+lSh*M zPK`Tbhuq5aoU67DTFPLa6+6?wsKW2#RgSw-Y93hUS#!o2v!wje$nQ&cE~%=c6wgr> zFHg6Ubd+Vw&csa1$G;g2cbhE!3y|zd4!hXANPGx7C&`@`T{m*`1(OC{hcY>kDqXm3 zbV?V_?a`{iMdiP4geOqCTcRE$@O!z(ngz9ol2gjiJ!6##<`>R)nu+IC92A|!Y~5?_ z-fKL}F2=F2dEzC;$N8|6!CjP0UusnYu3*th=$#}vzE{RjYFw>OR`dTBR9jg z04g#a;wmC8votPWr4i%tz4_Icw!_(6x{~ZV!766zX}7)(zW({T5Q-W1k5cl(WUld0 zlBY3X9~C7h54r!KbanV6ncjYUfJusCt;^eAA?!?(uU}mxN;z}tq=(jd z=+AHZ0aRx`Iqa@^UmNpWN4guh>Svt$L}OXC>Go==Fj>EBg>xMP=1@b?G()rWth!=r O>_UzEqO}(0jQI~CH{-DY diff --git a/locale/br/LC_MESSAGES/django.po b/locale/br/LC_MESSAGES/django.po index 2181eed54..50adcd667 100644 --- a/locale/br/LC_MESSAGES/django.po +++ b/locale/br/LC_MESSAGES/django.po @@ -1,21 +1,29 @@ -# CyberPanel Translation File. -# Copyright (C) 2017 LiteSpeedTech -# This file is distributed under the same license as the CyberPanel package. -# FIRST AUTHOR , 2017. +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. # -#, fuzzy +#: baseTemplate/templates/baseTemplate/index.html:211 +#: baseTemplate/templates/baseTemplate/index.html:301 +#: baseTemplate/templates/baseTemplate/index.html:356 +#: baseTemplate/templates/baseTemplate/index.html:362 +#: baseTemplate/templates/baseTemplate/index.html:368 +#: baseTemplate/templates/baseTemplate/index.html:374 +#: baseTemplate/templates/baseTemplate/index.html:380 +#: baseTemplate/templates/baseTemplate/index.html:386 msgid "" msgstr "" -"Project-Id-Version: CyberPanel\n" +"Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-21 16:59+0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"POT-Creation-Date: 2017-10-25 01:02+0500\n" +"PO-Revision-Date: 2017-10-24 22:23+0300\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7.1\n" #: CyberCP/settings.py:167 msgid "English" @@ -37,14 +45,22 @@ msgstr "" msgid "Portuguese" msgstr "" +#: CyberCP/settings.py:172 +msgid "Japanese" +msgstr "" + +#: CyberCP/settings.py:173 +msgid "Bosnian" +msgstr "" + #: backup/templates/backup/backup.html:3 backup/templates/backup/backup.html:13 #: backup/templates/backup/backup.html:20 msgid "Back up Website" -msgstr "" +msgstr "Архивирай Страница" #: backup/templates/backup/backup.html:14 msgid "This page can be used to Back up your websites" -msgstr "" +msgstr "От тази страница може да направите архив на Вашите страници" #: backup/templates/backup/backup.html:29 #: databases/templates/databases/createDatabase.html:28 @@ -59,27 +75,25 @@ msgstr "" #: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:28 #: websiteFunctions/templates/websiteFunctions/suspendWebsite.html:29 msgid "Select Website" -msgstr "" +msgstr "Избери Страница" #: backup/templates/backup/backup.html:40 #: backup/templates/backup/backupSchedule.html:90 msgid "Destination" -msgstr "" +msgstr "Дестинация" #: backup/templates/backup/backup.html:43 -#: baseTemplate/templates/baseTemplate/homePage.html:13 +#: baseTemplate/templates/baseTemplate/homePage.html:12 msgid "Home" msgstr "Начало" #: backup/templates/backup/backup.html:59 #: backup/templates/backup/restore.html:62 -#, fuzzy -#| msgid "User Name" msgid "File Name" -msgstr "Потребителско Име" +msgstr "Първо Име" #: backup/templates/backup/backup.html:60 -#: backup/templates/backup/backup.html:99 +#: backup/templates/backup/backup.html:105 #: backup/templates/backup/restore.html:63 #: baseTemplate/templates/baseTemplate/index.html:390 #: firewall/templates/firewall/firewall.html:36 @@ -89,14 +103,18 @@ msgstr "Статус" #: backup/templates/backup/backup.html:65 msgid "Running" -msgstr "" +msgstr "Активен" #: backup/templates/backup/backup.html:80 #: baseTemplate/templates/baseTemplate/index.html:561 msgid "Create Back up" -msgstr "" +msgstr "Създай Архив" -#: backup/templates/backup/backup.html:95 +#: backup/templates/backup/backup.html:87 +msgid "Cancel Backup" +msgstr "Откажи Архив" + +#: backup/templates/backup/backup.html:101 #: backup/templates/backup/backupDestinations.html:90 #: backup/templates/backup/backupSchedule.html:89 #: databases/templates/databases/listDataBases.html:86 @@ -105,49 +123,50 @@ msgstr "" #: ftp/templates/ftp/listFTPAccounts.html:87 #: managePHP/templates/managePHP/installExtensions.html:61 msgid "ID" -msgstr "" +msgstr "ID" -#: backup/templates/backup/backup.html:96 +#: backup/templates/backup/backup.html:102 msgid "File" msgstr "Файл" -#: backup/templates/backup/backup.html:97 +#: backup/templates/backup/backup.html:103 msgid "Date" msgstr "Дата" -#: backup/templates/backup/backup.html:98 +#: backup/templates/backup/backup.html:104 #: ftp/templates/ftp/listFTPAccounts.html:90 msgid "Size" msgstr "Размер" -#: backup/templates/backup/backup.html:100 +#: backup/templates/backup/backup.html:106 #: backup/templates/backup/backupDestinations.html:93 #: backup/templates/backup/backupSchedule.html:92 #: dns/templates/dns/addDeleteDNSRecords.html:134 #: firewall/templates/firewall/firewall.html:131 #: firewall/templates/firewall/secureSSH.html:122 msgid "Delete" -msgstr "" +msgstr "Изтрий" -#: backup/templates/backup/backup.html:124 +#: backup/templates/backup/backup.html:130 msgid "Cannot delete website, Error message: " -msgstr "" +msgstr "Страницата не може да бъде премахната. Съобщение за грешка:" -#: backup/templates/backup/backup.html:128 +#: backup/templates/backup/backup.html:134 msgid "Successfully Deleted" -msgstr "" +msgstr "Успешно изтрита" #: backup/templates/backup/backupDestinations.html:3 #: backup/templates/backup/backupDestinations.html:14 #: backup/templates/backup/backupDestinations.html:21 msgid "Set up Back up Destinations" -msgstr "" +msgstr "Постави дестинация за Архив" #: backup/templates/backup/backupDestinations.html:15 msgid "On this page you can set up your Back up destinations. (SFTP)" -msgstr "" +msgstr "От тази страница може да настройте дестинацията за архивите (SFTP)" #: backup/templates/backup/backupDestinations.html:30 +#: dns/templates/dns/addDeleteDNSRecords.html:60 #: dns/templates/dns/createNameServer.html:48 #: dns/templates/dns/createNameServer.html:65 msgid "IP Address" @@ -166,29 +185,30 @@ msgstr "Парола" #: backup/templates/backup/backupDestinations.html:48 #: backup/templates/backup/backupSchedule.html:54 +#: baseTemplate/templates/baseTemplate/index.html:563 msgid "Add Destination" -msgstr "" +msgstr "Добави дестинация" #: backup/templates/backup/backupDestinations.html:62 #: backup/templates/backup/backupDestinations.html:66 msgid "Connection to" -msgstr "" +msgstr "Връзка към" #: backup/templates/backup/backupDestinations.html:62 msgid "failed. Please delete and re-add." -msgstr "" +msgstr "неуспешно. Моля премахнете и добавете отново." #: backup/templates/backup/backupDestinations.html:66 msgid "successful." -msgstr "" +msgstr "успешно" #: backup/templates/backup/backupDestinations.html:70 msgid "Cannot add destination. Error message:" -msgstr "" +msgstr "Дестинацията не е добавена, защото:" #: backup/templates/backup/backupDestinations.html:74 msgid "Destination Added." -msgstr "" +msgstr "Дестинацията е добавена" #: backup/templates/backup/backupDestinations.html:78 #: backup/templates/backup/backupSchedule.html:77 @@ -216,12 +236,12 @@ msgstr "" #: backup/templates/backup/backupDestinations.html:91 msgid "IP" -msgstr "" +msgstr "IP" #: backup/templates/backup/backupDestinations.html:92 #: backup/templates/backup/backupDestinations.html:100 msgid "Check Connection" -msgstr "" +msgstr "Провери връзката" #: backup/templates/backup/backupSchedule.html:3 msgid "Schedule Back up - CyberPanel" @@ -249,11 +269,11 @@ msgstr "" #: backup/templates/backup/backupSchedule.html:43 msgid "Daily" -msgstr "" +msgstr "Дневно" #: backup/templates/backup/backupSchedule.html:44 msgid "Weekly" -msgstr "" +msgstr "Седмично" #: backup/templates/backup/backupSchedule.html:69 msgid "Cannot add schedule. Error message:" @@ -265,7 +285,7 @@ msgstr "" #: backup/templates/backup/backupSchedule.html:91 msgid "Frequency" -msgstr "" +msgstr "Честота" #: backup/templates/backup/index.html:3 msgid "Back up Home - CyberPanel" @@ -273,17 +293,20 @@ msgstr "" #: backup/templates/backup/index.html:13 backup/templates/backup/index.html:29 #: backup/templates/backup/index.html:45 -#: baseTemplate/templates/baseTemplate/homePage.html:270 +#: baseTemplate/templates/baseTemplate/homePage.html:266 +#: baseTemplate/templates/baseTemplate/homePage.html:269 +#: baseTemplate/templates/baseTemplate/index.html:554 #: baseTemplate/templates/baseTemplate/index.html:556 +#: baseTemplate/templates/baseTemplate/index.html:572 msgid "Back up" -msgstr "" +msgstr "Архив" #: backup/templates/backup/index.html:14 msgid "Back up and restore sites." msgstr "" #: backup/templates/backup/index.html:19 -#: baseTemplate/templates/baseTemplate/homePage.html:165 +#: baseTemplate/templates/baseTemplate/homePage.html:164 #: databases/templates/databases/index.html:19 dns/templates/dns/index.html:19 #: firewall/templates/firewall/index.html:19 ftp/templates/ftp/index.html:19 #: mailServer/templates/mailServer/index.html:19 @@ -296,21 +319,65 @@ msgstr "" #: userManagment/templates/userManagment/index.html:20 #: websiteFunctions/templates/websiteFunctions/index.html:20 msgid "Available Functions" -msgstr "" +msgstr "Налични Функции" + +#: backup/templates/backup/index.html:27 backup/templates/backup/index.html:43 +msgid "Back up Site" +msgstr "Архивирай Страница" + +#: backup/templates/backup/index.html:55 +#: baseTemplate/templates/baseTemplate/index.html:562 +msgid "Restore Back up" +msgstr "Възстанови Архив" #: backup/templates/backup/index.html:57 #: backup/templates/backup/restore.html:45 msgid "Restore" msgstr "Възстанови" +#: backup/templates/backup/remoteBackups.html:75 +#: websiteFunctions/templates/websiteFunctions/deleteWebsite.html:65 +msgid "Website" +msgstr "Страница" + +#: backup/templates/backup/remoteBackups.html:76 +#: baseTemplate/templates/baseTemplate/homePage.html:331 +#: baseTemplate/templates/baseTemplate/index.html:625 +#: baseTemplate/templates/baseTemplate/index.html:627 +#: managePHP/templates/managePHP/installExtensions.html:62 +msgid "PHP" +msgstr "PHP" + +#: backup/templates/backup/remoteBackups.html:77 +#: packages/templates/packages/createPackage.html:91 +#: packages/templates/packages/deletePackage.html:63 +#: packages/templates/packages/modifyPackage.html:102 +msgid "Package" +msgstr "Пакети" + +#: backup/templates/backup/remoteBackups.html:78 +#: baseTemplate/templates/baseTemplate/index.html:514 +#: baseTemplate/templates/baseTemplate/index.html:516 +#: userManagment/templates/userManagment/createUser.html:47 +#: userManagment/templates/userManagment/modifyUser.html:54 +#: userManagment/templates/userManagment/userProfile.html:50 +#: websiteFunctions/templates/websiteFunctions/createWebsite.html:60 +#: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:67 +msgid "Email" +msgstr "Email" + +#: backup/templates/backup/remoteBackups.html:79 +msgid "Transfer" +msgstr "" + #: backup/templates/backup/restore.html:3 msgid "Restore Website - CyberPanel" -msgstr "" +msgstr "Възстанови Страница - CyberPanel" #: backup/templates/backup/restore.html:14 #: backup/templates/backup/restore.html:21 msgid "Restore Website" -msgstr "" +msgstr "Възстанови Страница" #: backup/templates/backup/restore.html:15 msgid "" @@ -321,14 +388,14 @@ msgstr "" #: backup/templates/backup/restore.html:30 msgid "Select Back up" -msgstr "" +msgstr "Избери Архив" #: backup/templates/backup/restore.html:86 #: databases/templates/databases/deleteDatabase.html:64 #: firewall/templates/firewall/firewall.html:156 #: managePHP/templates/managePHP/editPHPConfig.html:212 msgid "Error message:" -msgstr "" +msgstr "Съобщение за Грешка" #: backup/templates/backup/restore.html:90 msgid "Site related to this Back up already exists." @@ -336,124 +403,167 @@ msgstr "" #: baseTemplate/templates/baseTemplate/homePage.html:3 msgid "Home - CyberPanel" -msgstr "" +msgstr "Начало - CyberPanel" -#: baseTemplate/templates/baseTemplate/homePage.html:14 +#: baseTemplate/templates/baseTemplate/homePage.html:13 msgid "Use the tabs to navigate through the control panel." msgstr "" -#: baseTemplate/templates/baseTemplate/homePage.html:24 +#: baseTemplate/templates/baseTemplate/homePage.html:23 #: websiteFunctions/templates/websiteFunctions/website.html:33 msgid "Usage" -msgstr "" +msgstr "Използване" -#: baseTemplate/templates/baseTemplate/homePage.html:35 +#: baseTemplate/templates/baseTemplate/homePage.html:34 #: baseTemplate/templates/baseTemplate/index.html:221 msgid "CPU Usage" -msgstr "Използвано CPU" +msgstr "CPU Използване" -#: baseTemplate/templates/baseTemplate/homePage.html:56 +#: baseTemplate/templates/baseTemplate/homePage.html:55 #: baseTemplate/templates/baseTemplate/index.html:232 msgid "Ram Usage" -msgstr "Използвана RAM" +msgstr "Използване на RAM" -#: baseTemplate/templates/baseTemplate/homePage.html:75 +#: baseTemplate/templates/baseTemplate/homePage.html:74 msgid "Disk Usage '/'" -msgstr "Зает диск" +msgstr "Зает Диск" -#: baseTemplate/templates/baseTemplate/homePage.html:99 +#: baseTemplate/templates/baseTemplate/homePage.html:98 msgid "HTTP Statistics" msgstr "HTTP Статистика" -#: baseTemplate/templates/baseTemplate/homePage.html:108 +#: baseTemplate/templates/baseTemplate/homePage.html:107 msgid "Available/Max Connections" -msgstr "Налични/Максимални Connections" +msgstr "Налични/Максимални Връзки" -#: baseTemplate/templates/baseTemplate/homePage.html:119 +#: baseTemplate/templates/baseTemplate/homePage.html:118 msgid "Available/Max SSL Connections" -msgstr "Налични/Максимални SSL Connections" +msgstr "Налични/Максимални SSL Връзки" -#: baseTemplate/templates/baseTemplate/homePage.html:128 +#: baseTemplate/templates/baseTemplate/homePage.html:127 msgid "Requests Processing" -msgstr "" +msgstr "Обработвани заявки" -#: baseTemplate/templates/baseTemplate/homePage.html:137 +#: baseTemplate/templates/baseTemplate/homePage.html:136 msgid "Total Requests" -msgstr "" +msgstr "Всички Заявки" -#: baseTemplate/templates/baseTemplate/homePage.html:177 +#: baseTemplate/templates/baseTemplate/homePage.html:173 +#: userManagment/templates/userManagment/index.html:13 +msgid "User Functions" +msgstr "Функции на Потребителите" + +#: baseTemplate/templates/baseTemplate/homePage.html:176 +#: baseTemplate/templates/baseTemplate/index.html:426 +#: baseTemplate/templates/baseTemplate/index.html:427 #: baseTemplate/templates/baseTemplate/index.html:428 msgid "Users" msgstr "Потребители" -#: baseTemplate/templates/baseTemplate/homePage.html:190 +#: baseTemplate/templates/baseTemplate/homePage.html:186 +#: websiteFunctions/templates/websiteFunctions/index.html:13 +msgid "Website Functions" +msgstr "Функции на Страниците" + +#: baseTemplate/templates/baseTemplate/homePage.html:189 #: baseTemplate/templates/baseTemplate/index.html:360 +#: baseTemplate/templates/baseTemplate/index.html:444 +#: baseTemplate/templates/baseTemplate/index.html:445 #: baseTemplate/templates/baseTemplate/index.html:446 #: websiteFunctions/templates/websiteFunctions/listWebsites.html:21 msgid "Websites" -msgstr "Страници" +msgstr "Страница" -#: baseTemplate/templates/baseTemplate/homePage.html:203 +#: baseTemplate/templates/baseTemplate/homePage.html:199 +msgid "Add/Modify Packages" +msgstr "Добави/Промени Пакет" + +#: baseTemplate/templates/baseTemplate/homePage.html:202 #: baseTemplate/templates/baseTemplate/index.html:366 +#: baseTemplate/templates/baseTemplate/index.html:461 #: baseTemplate/templates/baseTemplate/index.html:463 #: packages/templates/packages/index.html:13 msgid "Packages" msgstr "Пакети" -#: baseTemplate/templates/baseTemplate/homePage.html:227 +#: baseTemplate/templates/baseTemplate/homePage.html:223 +#: databases/templates/databases/index.html:12 +msgid "Database Functions" +msgstr "Функции на Бази от Данни" + +#: baseTemplate/templates/baseTemplate/homePage.html:226 +#: baseTemplate/templates/baseTemplate/index.html:477 +#: baseTemplate/templates/baseTemplate/index.html:478 #: baseTemplate/templates/baseTemplate/index.html:479 #: packages/templates/packages/createPackage.html:59 #: packages/templates/packages/modifyPackage.html:63 #: websiteFunctions/templates/websiteFunctions/website.html:44 msgid "Databases" -msgstr "Бази от Данни" +msgstr "База от Данни" -#: baseTemplate/templates/baseTemplate/homePage.html:239 +#: baseTemplate/templates/baseTemplate/homePage.html:235 +msgid "Control DNS" +msgstr "Контрол на DNS" + +#: baseTemplate/templates/baseTemplate/homePage.html:238 #: baseTemplate/templates/baseTemplate/index.html:372 +#: baseTemplate/templates/baseTemplate/index.html:495 #: baseTemplate/templates/baseTemplate/index.html:497 msgid "DNS" -msgstr "" +msgstr "DNS" -#: baseTemplate/templates/baseTemplate/homePage.html:252 +#: baseTemplate/templates/baseTemplate/homePage.html:248 +#: ftp/templates/ftp/index.html:12 +msgid "FTP Functions" +msgstr "FTP Функции" + +#: baseTemplate/templates/baseTemplate/homePage.html:251 #: baseTemplate/templates/baseTemplate/index.html:378 +#: baseTemplate/templates/baseTemplate/index.html:536 #: baseTemplate/templates/baseTemplate/index.html:538 #: websiteFunctions/templates/websiteFunctions/website.html:39 msgid "FTP" -msgstr "" +msgstr "FTP" -#: baseTemplate/templates/baseTemplate/homePage.html:282 +#: baseTemplate/templates/baseTemplate/homePage.html:278 +#: baseTemplate/templates/baseTemplate/homePage.html:281 #: packages/templates/packages/createPackage.html:67 #: packages/templates/packages/modifyPackage.html:70 msgid "Emails" -msgstr "Пощи" +msgstr "Emails" -#: baseTemplate/templates/baseTemplate/homePage.html:295 +#: baseTemplate/templates/baseTemplate/homePage.html:291 +#: baseTemplate/templates/baseTemplate/homePage.html:294 #: tuning/templates/tuning/index.html:12 msgid "Server Tuning" -msgstr "" +msgstr "Оптимизация на Сървър" -#: baseTemplate/templates/baseTemplate/homePage.html:319 +#: baseTemplate/templates/baseTemplate/homePage.html:315 +#: baseTemplate/templates/baseTemplate/homePage.html:318 +#: baseTemplate/templates/baseTemplate/index.html:606 #: baseTemplate/templates/baseTemplate/index.html:608 +#: baseTemplate/templates/baseTemplate/index.html:641 #: serverStatus/templates/serverStatus/index.html:13 msgid "Server Status" -msgstr "" +msgstr "Сървър Статус" -#: baseTemplate/templates/baseTemplate/homePage.html:332 -#: baseTemplate/templates/baseTemplate/index.html:627 -#: managePHP/templates/managePHP/installExtensions.html:62 -msgid "PHP" -msgstr "PHP" +#: baseTemplate/templates/baseTemplate/homePage.html:328 +msgid "PHP Configurations" +msgstr "PHP Конфигурация" -#: baseTemplate/templates/baseTemplate/homePage.html:344 +#: baseTemplate/templates/baseTemplate/homePage.html:340 +#: baseTemplate/templates/baseTemplate/homePage.html:343 #: baseTemplate/templates/baseTemplate/index.html:643 #: websiteFunctions/templates/websiteFunctions/website.html:113 msgid "Logs" msgstr "Логове" -#: baseTemplate/templates/baseTemplate/homePage.html:367 +#: baseTemplate/templates/baseTemplate/homePage.html:363 +#: baseTemplate/templates/baseTemplate/homePage.html:366 +#: baseTemplate/templates/baseTemplate/index.html:659 #: baseTemplate/templates/baseTemplate/index.html:661 msgid "Security" -msgstr "Защита" +msgstr "Сигурност" #: baseTemplate/templates/baseTemplate/index.html:212 msgid "CPU Status" @@ -463,110 +573,151 @@ msgstr "CPU Статус" #: websiteFunctions/templates/websiteFunctions/website.html:51 #: websiteFunctions/templates/websiteFunctions/website.html:72 msgid "Disk Usage" -msgstr "" +msgstr "Използван диск" + +#: baseTemplate/templates/baseTemplate/index.html:275 +#: baseTemplate/templates/baseTemplate/index.html:278 +#: baseTemplate/templates/baseTemplate/index.html:282 +msgid "CyberPanel" +msgstr "CyberPanel" #: baseTemplate/templates/baseTemplate/index.html:280 #: baseTemplate/templates/baseTemplate/index.html:284 msgid "Web Hosting Control Panel" -msgstr "" +msgstr "Уеб Хостинг Панел" + +#: baseTemplate/templates/baseTemplate/index.html:286 +msgid "Close sidebar" +msgstr "Затвори страничен бар" + +#: baseTemplate/templates/baseTemplate/index.html:292 +msgid "My Account" +msgstr "Моят Акаунт" #: baseTemplate/templates/baseTemplate/index.html:309 -#, fuzzy -#| msgid "Edit Profile" msgid "Edit profile" -msgstr "Редактирай профил" +msgstr "Промени профил" #: baseTemplate/templates/baseTemplate/index.html:310 #: baseTemplate/templates/baseTemplate/index.html:433 +#: userManagment/templates/userManagment/index.html:26 #: userManagment/templates/userManagment/index.html:28 msgid "View Profile" msgstr "Преглед на профил" #: baseTemplate/templates/baseTemplate/index.html:317 +#: baseTemplate/templates/baseTemplate/index.html:398 msgid "Logout" msgstr "Излез" +#: baseTemplate/templates/baseTemplate/index.html:328 +#: baseTemplate/templates/baseTemplate/index.html:332 +#: baseTemplate/templates/baseTemplate/index.html:336 +msgid "CPU Load Average" +msgstr "Средно CPU Натоварване" + +#: baseTemplate/templates/baseTemplate/index.html:340 +msgid "Fullscreen" +msgstr "Пълен Екран" + +#: baseTemplate/templates/baseTemplate/index.html:345 +msgid "System Status" +msgstr "Статус" + +#: baseTemplate/templates/baseTemplate/index.html:350 +msgid "Dashboard Quick Menu" +msgstr "Бързо Меню" + #: baseTemplate/templates/baseTemplate/index.html:384 +#: baseTemplate/templates/baseTemplate/index.html:590 #: baseTemplate/templates/baseTemplate/index.html:592 msgid "Tuning" msgstr "Настройка" #: baseTemplate/templates/baseTemplate/index.html:411 msgid "Overview" -msgstr "Общ Преглед" +msgstr "Преглед" +#: baseTemplate/templates/baseTemplate/index.html:413 #: baseTemplate/templates/baseTemplate/index.html:415 +#: baseTemplate/templates/baseTemplate/index.html:417 msgid "Dashboard" msgstr "Начало" +#: baseTemplate/templates/baseTemplate/index.html:418 #: baseTemplate/templates/baseTemplate/index.html:419 #: baseTemplate/templates/baseTemplate/versionManagment.html:10 msgid "Version Management" -msgstr "" +msgstr "Мениджър на Версия" #: baseTemplate/templates/baseTemplate/index.html:423 msgid "Main" -msgstr "" +msgstr "Главно" #: baseTemplate/templates/baseTemplate/index.html:434 #: userManagment/templates/userManagment/createUser.html:12 -#, fuzzy -#| msgid "Create User" msgid "Create New User" msgstr "Нов Потребител" #: baseTemplate/templates/baseTemplate/index.html:435 +#: userManagment/templates/userManagment/index.html:52 #: userManagment/templates/userManagment/index.html:54 #: userManagment/templates/userManagment/modifyUser.html:12 #: userManagment/templates/userManagment/modifyUser.html:120 msgid "Modify User" -msgstr "Редактирай Потребител" +msgstr "Промени Потребител" #: baseTemplate/templates/baseTemplate/index.html:436 #: userManagment/templates/userManagment/deleteUser.html:13 #: userManagment/templates/userManagment/deleteUser.html:20 #: userManagment/templates/userManagment/deleteUser.html:42 +#: userManagment/templates/userManagment/index.html:74 #: userManagment/templates/userManagment/index.html:76 msgid "Delete User" -msgstr "" +msgstr "Изтрий Потребител" #: baseTemplate/templates/baseTemplate/index.html:451 #: websiteFunctions/templates/websiteFunctions/createWebsite.html:12 #: websiteFunctions/templates/websiteFunctions/createWebsite.html:102 +#: websiteFunctions/templates/websiteFunctions/index.html:26 #: websiteFunctions/templates/websiteFunctions/index.html:28 msgid "Create Website" -msgstr "Добави Страница" +msgstr "Нова Страница" #: baseTemplate/templates/baseTemplate/index.html:452 +#: websiteFunctions/templates/websiteFunctions/index.html:38 #: websiteFunctions/templates/websiteFunctions/index.html:40 #: websiteFunctions/templates/websiteFunctions/listWebsites.html:14 msgid "List Websites" msgstr "Преглед на Страници" #: baseTemplate/templates/baseTemplate/index.html:453 +#: websiteFunctions/templates/websiteFunctions/index.html:50 #: websiteFunctions/templates/websiteFunctions/index.html:52 #: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:12 #: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:19 #: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:95 msgid "Modify Website" -msgstr "" +msgstr "Промени Страница" #: baseTemplate/templates/baseTemplate/index.html:454 #: websiteFunctions/templates/websiteFunctions/suspendWebsite.html:41 msgid "Suspend/Unsuspend" -msgstr "" +msgstr "Пусни/Спри" #: baseTemplate/templates/baseTemplate/index.html:455 #: websiteFunctions/templates/websiteFunctions/deleteWebsite.html:12 #: websiteFunctions/templates/websiteFunctions/deleteWebsite.html:19 #: websiteFunctions/templates/websiteFunctions/deleteWebsite.html:42 +#: websiteFunctions/templates/websiteFunctions/index.html:84 #: websiteFunctions/templates/websiteFunctions/index.html:86 msgid "Delete Website" -msgstr "" +msgstr "Изтрий Страница" #: baseTemplate/templates/baseTemplate/index.html:468 #: packages/templates/packages/createPackage.html:13 #: packages/templates/packages/createPackage.html:76 +#: packages/templates/packages/index.html:25 #: packages/templates/packages/index.html:27 msgid "Create Package" msgstr "Създай Пакет" @@ -575,11 +726,13 @@ msgstr "Създай Пакет" #: packages/templates/packages/deletePackage.html:12 #: packages/templates/packages/deletePackage.html:18 #: packages/templates/packages/deletePackage.html:40 +#: packages/templates/packages/index.html:37 #: packages/templates/packages/index.html:39 msgid "Delete Package" -msgstr "Изтриване на Пакет" +msgstr "Изтрий Пакет" #: baseTemplate/templates/baseTemplate/index.html:470 +#: packages/templates/packages/index.html:49 #: packages/templates/packages/index.html:51 #: packages/templates/packages/modifyPackage.html:9 #: packages/templates/packages/modifyPackage.html:15 @@ -591,19 +744,24 @@ msgstr "Промени Пакет" #: databases/templates/databases/createDatabase.html:12 #: databases/templates/databases/createDatabase.html:19 #: databases/templates/databases/createDatabase.html:68 +#: databases/templates/databases/index.html:25 #: databases/templates/databases/index.html:27 +#: manageSSL/templates/manageSSL/index.html:26 msgid "Create Database" -msgstr "Създай База от Данни" +msgstr "Нова База от Данни" #: baseTemplate/templates/baseTemplate/index.html:485 #: databases/templates/databases/deleteDatabase.html:12 #: databases/templates/databases/deleteDatabase.html:19 #: databases/templates/databases/deleteDatabase.html:53 +#: databases/templates/databases/index.html:37 #: databases/templates/databases/index.html:39 +#: manageSSL/templates/manageSSL/index.html:38 msgid "Delete Database" -msgstr "Изтриване на База от Данни" +msgstr "Изтрий База от Данни" #: baseTemplate/templates/baseTemplate/index.html:486 +#: databases/templates/databases/index.html:53 #: databases/templates/databases/index.html:55 #: databases/templates/databases/listDataBases.html:13 #: databases/templates/databases/listDataBases.html:19 @@ -611,58 +769,68 @@ msgid "List Databases" msgstr "Преглед на Бази от Данни" #: baseTemplate/templates/baseTemplate/index.html:487 +#: databases/templates/databases/index.html:65 #: databases/templates/databases/index.html:67 msgid "PHPMYAdmin" msgstr "PhpMyAdmin" #: baseTemplate/templates/baseTemplate/index.html:502 #: dns/templates/dns/createNameServer.html:12 -#: dns/templates/dns/createNameServer.html:76 dns/templates/dns/index.html:74 +#: dns/templates/dns/createNameServer.html:76 dns/templates/dns/index.html:72 +#: dns/templates/dns/index.html:74 msgid "Create Nameserver" msgstr "Създай Nameserver" #: baseTemplate/templates/baseTemplate/index.html:503 #: dns/templates/dns/createDNSZone.html:12 -#: dns/templates/dns/createDNSZone.html:40 dns/templates/dns/index.html:31 +#: dns/templates/dns/createDNSZone.html:40 dns/templates/dns/index.html:29 +#: dns/templates/dns/index.html:31 dns/templates/dns/index.html:84 #: dns/templates/dns/index.html:86 msgid "Create DNS Zone" -msgstr "Създай DNS Zone" +msgstr "Създай DNS Зона" #: baseTemplate/templates/baseTemplate/index.html:504 -#: dns/templates/dns/deleteDNSZone.html:40 dns/templates/dns/index.html:43 +#: dns/templates/dns/deleteDNSZone.html:40 dns/templates/dns/index.html:41 +#: dns/templates/dns/index.html:43 dns/templates/dns/index.html:96 #: dns/templates/dns/index.html:98 msgid "Delete Zone" -msgstr "Премахни Зона" +msgstr "Изтрий Зона" #: baseTemplate/templates/baseTemplate/index.html:505 msgid "Add/Delete Records" -msgstr "Добави/Премахни Запис" +msgstr "Добави/Премахни Записи" -#: baseTemplate/templates/baseTemplate/index.html:516 -#: userManagment/templates/userManagment/createUser.html:47 -#: userManagment/templates/userManagment/modifyUser.html:54 -#: userManagment/templates/userManagment/userProfile.html:50 -#: websiteFunctions/templates/websiteFunctions/createWebsite.html:60 -#: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:67 -msgid "Email" -msgstr "Email" +#: baseTemplate/templates/baseTemplate/index.html:521 +#: mailServer/templates/mailServer/createEmailAccount.html:12 +#: mailServer/templates/mailServer/createEmailAccount.html:19 +msgid "Create Email Account" +msgstr "Създай Email Акаунт" #: baseTemplate/templates/baseTemplate/index.html:521 #: mailServer/templates/mailServer/createEmailAccount.html:64 +#: mailServer/templates/mailServer/index.html:25 #: mailServer/templates/mailServer/index.html:27 msgid "Create Email" msgstr "Създай Email" +#: baseTemplate/templates/baseTemplate/index.html:522 +#: mailServer/templates/mailServer/deleteEmailAccount.html:12 +#: mailServer/templates/mailServer/deleteEmailAccount.html:19 +msgid "Delete Email Account" +msgstr "Изтрий Email Акаунт" + #: baseTemplate/templates/baseTemplate/index.html:522 #: mailServer/templates/mailServer/deleteEmailAccount.html:56 +#: mailServer/templates/mailServer/index.html:37 #: mailServer/templates/mailServer/index.html:39 msgid "Delete Email" -msgstr "Премахни Email" +msgstr "Изтрий Email" #: baseTemplate/templates/baseTemplate/index.html:523 #: databases/templates/databases/listDataBases.html:72 #: ftp/templates/ftp/listFTPAccounts.html:73 #: mailServer/templates/mailServer/changeEmailPassword.html:64 +#: mailServer/templates/mailServer/index.html:49 #: mailServer/templates/mailServer/index.html:51 msgid "Change Password" msgstr "Промени Парола" @@ -673,33 +841,33 @@ msgstr "Webmail" #: baseTemplate/templates/baseTemplate/index.html:543 #: ftp/templates/ftp/createFTPAccount.html:12 -#: ftp/templates/ftp/createFTPAccount.html:19 ftp/templates/ftp/index.html:27 +#: ftp/templates/ftp/createFTPAccount.html:19 ftp/templates/ftp/index.html:25 +#: ftp/templates/ftp/index.html:27 #: websiteFunctions/templates/websiteFunctions/website.html:461 msgid "Create FTP Account" -msgstr "Създай FTP Потребител" +msgstr "Създай FTP Акаунт" #: baseTemplate/templates/baseTemplate/index.html:544 #: ftp/templates/ftp/deleteFTPAccount.html:12 #: ftp/templates/ftp/deleteFTPAccount.html:18 -#: ftp/templates/ftp/deleteFTPAccount.html:52 ftp/templates/ftp/index.html:39 +#: ftp/templates/ftp/deleteFTPAccount.html:52 ftp/templates/ftp/index.html:37 +#: ftp/templates/ftp/index.html:39 #: websiteFunctions/templates/websiteFunctions/website.html:473 msgid "Delete FTP Account" -msgstr "Премахни FTP Акаунт" +msgstr "Изтрий FTP Акаунт" #: baseTemplate/templates/baseTemplate/index.html:545 -#: ftp/templates/ftp/index.html:51 ftp/templates/ftp/listFTPAccounts.html:13 +#: ftp/templates/ftp/index.html:49 ftp/templates/ftp/index.html:51 +#: ftp/templates/ftp/listFTPAccounts.html:13 #: ftp/templates/ftp/listFTPAccounts.html:19 msgid "List FTP Accounts" -msgstr "Преглед на FTP Акаунти" - -#: baseTemplate/templates/baseTemplate/index.html:562 -msgid "Restore Back up" -msgstr "" +msgstr "Преглед FTP Акаунти" #: baseTemplate/templates/baseTemplate/index.html:563 msgid "Add/Delete Destination" -msgstr "" +msgstr "Добави/Премахни Дестинация" +#: baseTemplate/templates/baseTemplate/index.html:573 #: baseTemplate/templates/baseTemplate/index.html:574 msgid "SSL" msgstr "SSL" @@ -709,12 +877,12 @@ msgstr "SSL" #: manageSSL/templates/manageSSL/manageSSL.html:13 #: manageSSL/templates/manageSSL/manageSSL.html:20 msgid "Manage SSL" -msgstr "" +msgstr "Нов SSL" #: baseTemplate/templates/baseTemplate/index.html:580 #: manageSSL/templates/manageSSL/index.html:40 msgid "Hostname SSL" -msgstr "" +msgstr "Hostname SSL" #: baseTemplate/templates/baseTemplate/index.html:588 msgid "Server" @@ -725,37 +893,46 @@ msgid "NEW" msgstr "НОВ" #: baseTemplate/templates/baseTemplate/index.html:598 -#: tuning/templates/tuning/index.html:26 +#: tuning/templates/tuning/index.html:24 tuning/templates/tuning/index.html:26 #: tuning/templates/tuning/liteSpeedTuning.html:12 msgid "LiteSpeed Tuning" -msgstr "LiteSpeed Оптимизация" +msgstr "LiteSpeed Настройки" #: baseTemplate/templates/baseTemplate/index.html:599 -#: tuning/templates/tuning/index.html:38 +#: tuning/templates/tuning/index.html:36 tuning/templates/tuning/index.html:38 #: tuning/templates/tuning/phpTuning.html:13 msgid "PHP Tuning" -msgstr "PHP Оптимизация" +msgstr "PHP Настройки" #: baseTemplate/templates/baseTemplate/index.html:614 +#: serverStatus/templates/serverStatus/index.html:25 #: serverStatus/templates/serverStatus/index.html:27 msgid "LiteSpeed Status" msgstr "LiteSpeed Статус" #: baseTemplate/templates/baseTemplate/index.html:615 #: serverStatus/templates/serverStatus/cybercpmainlogfile.html:15 +#: serverStatus/templates/serverStatus/index.html:37 #: serverStatus/templates/serverStatus/index.html:39 msgid "CyberPanel Main Log File" -msgstr "Главен Лог за CyberPanel" +msgstr "Главен CyberPanel Лог" #: baseTemplate/templates/baseTemplate/index.html:632 +#: managePHP/templates/managePHP/installExtensions.html:13 +msgid "Install PHP Extensions" +msgstr "Инсталирай PHP Модул" + +#: baseTemplate/templates/baseTemplate/index.html:632 +#: managePHP/templates/managePHP/index.html:24 #: managePHP/templates/managePHP/index.html:26 msgid "Install Extensions" -msgstr "Инсталирай модули" +msgstr "Инсталирай Модул" #: baseTemplate/templates/baseTemplate/index.html:633 +#: managePHP/templates/managePHP/index.html:36 #: managePHP/templates/managePHP/index.html:38 msgid "Edit PHP Configs" -msgstr "Редактирай PHP Config" +msgstr "Промени PHP Config" #: baseTemplate/templates/baseTemplate/index.html:648 msgid "Access Log" @@ -763,10 +940,18 @@ msgstr "Access Лог" #: baseTemplate/templates/baseTemplate/index.html:649 #: serverLogs/templates/serverLogs/errorLogs.html:14 +#: serverLogs/templates/serverLogs/index.html:37 #: serverLogs/templates/serverLogs/index.html:39 #: websiteFunctions/templates/websiteFunctions/website.html:133 msgid "Error Logs" -msgstr "Error Лог" +msgstr "Error Логове" + +#: baseTemplate/templates/baseTemplate/index.html:650 +#: serverLogs/templates/serverLogs/emailLogs.html:14 +#: serverLogs/templates/serverLogs/index.html:49 +#: serverLogs/templates/serverLogs/index.html:51 +msgid "Email Logs" +msgstr "Email Логове" #: baseTemplate/templates/baseTemplate/index.html:650 msgid "Email Log" @@ -774,16 +959,23 @@ msgstr "Email Лог" #: baseTemplate/templates/baseTemplate/index.html:651 #: serverLogs/templates/serverLogs/ftplogs.html:14 +#: serverLogs/templates/serverLogs/index.html:61 #: serverLogs/templates/serverLogs/index.html:63 msgid "FTP Logs" -msgstr "FTP Лог" +msgstr "FTP Логове" #: baseTemplate/templates/baseTemplate/index.html:666 +msgid "Firewall Home" +msgstr "Защитна Стена" + +#: baseTemplate/templates/baseTemplate/index.html:666 +#: firewall/templates/firewall/index.html:25 #: firewall/templates/firewall/index.html:27 msgid "Firewall" msgstr "Защитна Стена" #: baseTemplate/templates/baseTemplate/index.html:667 +#: firewall/templates/firewall/index.html:36 #: firewall/templates/firewall/index.html:38 #: firewall/templates/firewall/secureSSH.html:13 #: firewall/templates/firewall/secureSSH.html:20 @@ -792,7 +984,7 @@ msgstr "Сигурен SSH" #: baseTemplate/templates/baseTemplate/versionManagment.html:3 msgid "Version Management - CyberPanel" -msgstr "" +msgstr "Мениджър на Версия - CyberPanel" #: baseTemplate/templates/baseTemplate/versionManagment.html:11 msgid "" @@ -804,7 +996,7 @@ msgstr "" #: baseTemplate/templates/baseTemplate/versionManagment.html:25 msgid "Current Version" -msgstr "Налична Версия" +msgstr "Сегашна Версия" #: baseTemplate/templates/baseTemplate/versionManagment.html:33 msgid "Build" @@ -822,15 +1014,15 @@ msgstr "Последен Билд" #: firewall/templates/firewall/secureSSH.html:78 #: managePHP/templates/managePHP/editPHPConfig.html:140 msgid "Error message: " -msgstr "Съобщение за грешка" +msgstr "Error Съобщение" #: baseTemplate/templates/baseTemplate/versionManagment.html:70 msgid "Update started..." -msgstr "" +msgstr "Начало на актуализация" #: baseTemplate/templates/baseTemplate/versionManagment.html:74 msgid "Update finished..." -msgstr "" +msgstr "Актуализацията приключи" #: baseTemplate/templates/baseTemplate/versionManagment.html:79 #: firewall/templates/firewall/secureSSH.html:87 @@ -839,15 +1031,15 @@ msgstr "" #: managePHP/templates/managePHP/editPHPConfig.html:221 #: managePHP/templates/managePHP/installExtensions.html:113 msgid "Could not connect. Please refresh this page." -msgstr "" +msgstr "Не можем да се свържем, моля презаредете страницата." #: databases/templates/databases/createDatabase.html:3 msgid "Create New Database - CyberPanel" -msgstr "" +msgstr "Създай нова База от Данни - CyberPanel" #: databases/templates/databases/createDatabase.html:13 msgid "Create a new database on this page." -msgstr "" +msgstr "Създай нова база от данни от тази страница." #: databases/templates/databases/createDatabase.html:42 #: databases/templates/databases/listDataBases.html:87 @@ -863,46 +1055,40 @@ msgid "User Name" msgstr "Потребителско Име" #: databases/templates/databases/createDatabase.html:79 -#, fuzzy -#| msgid "Database created error. Error Message:" msgid "Cannot create database. Error message:" -msgstr "База от данни не е създадена. Съобщение за грешка:" +msgstr "Базата от Данни не е създадена, защото:" #: databases/templates/databases/createDatabase.html:83 msgid "Database created successfully." -msgstr "" +msgstr "Базата от Данни е създадена успешно." #: databases/templates/databases/deleteDatabase.html:3 msgid "Delete Database - CyberPanel" -msgstr "" +msgstr "Премахни База от Данни - CyberPanel" #: databases/templates/databases/deleteDatabase.html:13 msgid "Delete an existing database on this page." -msgstr "" +msgstr "Премахни налична база от данни." #: databases/templates/databases/deleteDatabase.html:40 msgid "Select Database" -msgstr "" +msgstr "Избери База от Данни" #: databases/templates/databases/deleteDatabase.html:68 msgid "Database deleted successfully." -msgstr "" +msgstr "Базата от Данни е успешно премахната." #: databases/templates/databases/index.html:3 msgid "Database Functions - CyberPanel" -msgstr "" - -#: databases/templates/databases/index.html:12 -msgid "Database Functions" -msgstr "" +msgstr "Бази от Данни - CyberPanel" #: databases/templates/databases/index.html:13 msgid "Create, edit and delete databases on this page." -msgstr "" +msgstr "Създай, редактирай базите от данни." #: databases/templates/databases/listDataBases.html:3 msgid "List Databases - CyberPanel" -msgstr "" +msgstr "Бази от Данни - CyberPanel" #: databases/templates/databases/listDataBases.html:14 msgid "List Databases or change their passwords." @@ -956,7 +1142,38 @@ msgstr "" #: dns/templates/dns/addDeleteDNSRecords.html:19 msgid "Add Records" -msgstr "Добави Запис" +msgstr "" + +#: dns/templates/dns/addDeleteDNSRecords.html:53 +#: dns/templates/dns/addDeleteDNSRecords.html:131 +#: firewall/templates/firewall/firewall.html:128 +#: serverStatus/templates/serverStatus/litespeedStatus.html:40 +msgid "Name" +msgstr "Име" + +#: dns/templates/dns/addDeleteDNSRecords.html:69 +msgid "IPV6" +msgstr "IPv6" + +#: dns/templates/dns/addDeleteDNSRecords.html:78 +#: dns/templates/dns/addDeleteDNSRecords.html:133 +msgid "Priority" +msgstr "Приоритет" + +#: dns/templates/dns/addDeleteDNSRecords.html:87 +#: dns/templates/dns/createDNSZone.html:27 +#: dns/templates/dns/createNameServer.html:27 +#: websiteFunctions/templates/websiteFunctions/createWebsite.html:52 +msgid "Domain Name" +msgstr "Домейн Име" + +#: dns/templates/dns/addDeleteDNSRecords.html:95 +msgid "Policy" +msgstr "" + +#: dns/templates/dns/addDeleteDNSRecords.html:103 +msgid "Text" +msgstr "" #: dns/templates/dns/addDeleteDNSRecords.html:111 #: firewall/templates/firewall/firewall.html:109 @@ -967,43 +1184,33 @@ msgstr "Добави" msgid "Type" msgstr "Вид" -#: dns/templates/dns/addDeleteDNSRecords.html:131 -#: firewall/templates/firewall/firewall.html:128 -#: serverStatus/templates/serverStatus/litespeedStatus.html:40 -msgid "Name" -msgstr "Първо Име" - #: dns/templates/dns/addDeleteDNSRecords.html:132 msgid "Value" msgstr "Валута" -#: dns/templates/dns/addDeleteDNSRecords.html:133 -msgid "Priority" -msgstr "Приоритед" - #: dns/templates/dns/addDeleteDNSRecords.html:160 msgid "Cannot fetch records. Error message:" -msgstr "" +msgstr "Записите не са извлечени, защото:" #: dns/templates/dns/addDeleteDNSRecords.html:164 msgid "Cannot add record. Error message: " -msgstr "" +msgstr "Записа не е добавен, защото:" #: dns/templates/dns/addDeleteDNSRecords.html:172 msgid "Record Successfully Deleted" -msgstr "" +msgstr "Записа е успешно премахнат" #: dns/templates/dns/addDeleteDNSRecords.html:176 msgid "Cannot delete record. Error message:" -msgstr "" +msgstr "Записа не е премахнат, защото:" #: dns/templates/dns/addDeleteDNSRecords.html:180 msgid "Record Successfully Added." -msgstr "" +msgstr "Записа е успешно добавен." #: dns/templates/dns/createDNSZone.html:3 msgid "Create DNS Zone - CyberPanel" -msgstr "" +msgstr "Създай DNS Зона - CyberPanel" #: dns/templates/dns/createDNSZone.html:13 msgid "" @@ -1017,23 +1224,17 @@ msgstr "" msgid "Details" msgstr "Детайли" -#: dns/templates/dns/createDNSZone.html:27 -#: dns/templates/dns/createNameServer.html:27 -#: websiteFunctions/templates/websiteFunctions/createWebsite.html:52 -msgid "Domain Name" -msgstr "Домейн Име" - #: dns/templates/dns/createDNSZone.html:51 msgid "Cannot create DNS Zone. Error message:" -msgstr "" +msgstr "DNS зоната не е създадена, защото:" #: dns/templates/dns/createDNSZone.html:55 msgid "DNS Zone for domain:" -msgstr "" +msgstr "DNS Зона за домейн:" #: dns/templates/dns/createNameServer.html:3 msgid "Create Nameserver - CyberPanel" -msgstr "" +msgstr "Създай Nameserver - CyberPanel" #: dns/templates/dns/createNameServer.html:13 msgid "" @@ -1043,11 +1244,11 @@ msgstr "" #: dns/templates/dns/createNameServer.html:39 msgid "First Nameserver" -msgstr "" +msgstr "Първи Nameserver" #: dns/templates/dns/createNameServer.html:55 msgid "Second Nameserver (Back up)" -msgstr "" +msgstr "Втори Nameserver" #: dns/templates/dns/createNameServer.html:87 msgid "Nameserver cannot be created. Error message:" @@ -1059,12 +1260,12 @@ msgstr "" #: dns/templates/dns/deleteDNSZone.html:3 msgid "Delete DNS Zone - CyberPanel" -msgstr "" +msgstr "Премахни DNS Зона - CyberPanel" #: dns/templates/dns/deleteDNSZone.html:12 #: dns/templates/dns/deleteDNSZone.html:18 msgid "Delete DNS Zone" -msgstr "" +msgstr "Премахни DNS Зона" #: dns/templates/dns/deleteDNSZone.html:13 msgid "" @@ -1074,7 +1275,7 @@ msgstr "" #: dns/templates/dns/deleteDNSZone.html:27 msgid "Select Zone" -msgstr "" +msgstr "Избери Зона" #: dns/templates/dns/deleteDNSZone.html:49 #: ftp/templates/ftp/deleteFTPAccount.html:61 @@ -1083,7 +1284,7 @@ msgstr "" #: userManagment/templates/userManagment/deleteUser.html:51 #: websiteFunctions/templates/websiteFunctions/deleteWebsite.html:51 msgid "Are you sure?" -msgstr "" +msgstr "Сирен ли си?" #: dns/templates/dns/deleteDNSZone.html:59 msgid "Cannot delete zone. Error message: " @@ -1091,11 +1292,11 @@ msgstr "" #: dns/templates/dns/deleteDNSZone.html:63 msgid "Zone for domain:" -msgstr "" +msgstr "Зона за домейн:" #: dns/templates/dns/deleteDNSZone.html:63 msgid "is successfully erased." -msgstr "" +msgstr "е успешно заличено." #: dns/templates/dns/index.html:3 msgid "DNS Functions - CyberPanel" @@ -1109,13 +1310,17 @@ msgstr "" msgid "Create, edit and delete DNS zones on this page." msgstr "" +#: dns/templates/dns/index.html:53 dns/templates/dns/index.html:108 +msgid "Add Delete Records" +msgstr "" + #: dns/templates/dns/index.html:55 dns/templates/dns/index.html:110 msgid "Add Delete/Records" msgstr "" #: firewall/templates/firewall/firewall.html:3 msgid "Firewall - CyberPanel" -msgstr "" +msgstr "Защитна Стена - CyberPanel" #: firewall/templates/firewall/firewall.html:13 msgid "Add/Delete Firewall Rules" @@ -1129,15 +1334,15 @@ msgstr "" #: firewall/templates/firewall/firewall.html:19 msgid "Add/Delete Rules" -msgstr "" +msgstr "Добави/Премахни Правила" #: firewall/templates/firewall/firewall.html:45 msgid "Start" -msgstr "Старт" +msgstr "Стартирай" #: firewall/templates/firewall/firewall.html:51 msgid "Stop" -msgstr "Стоп" +msgstr "Спри" #: firewall/templates/firewall/firewall.html:58 msgid "Reload" @@ -1145,12 +1350,12 @@ msgstr "Презареди" #: firewall/templates/firewall/firewall.html:63 msgid "Action failed. Error message:" -msgstr "" +msgstr "Действието не е изпълнено, защото:" #: firewall/templates/firewall/firewall.html:67 #: serverStatus/templates/serverStatus/litespeedStatus.html:85 msgid "Action successful." -msgstr "" +msgstr "Действието е успешно изпълнено." #: firewall/templates/firewall/firewall.html:129 msgid "Protocol" @@ -1162,15 +1367,15 @@ msgstr "Порт" #: firewall/templates/firewall/firewall.html:162 msgid "Rule successfully added." -msgstr "" +msgstr "Правилата са успешно добавени." #: firewall/templates/firewall/index.html:3 msgid "Security - CyberPanel" -msgstr "" +msgstr "Защита - CyberPanel" #: firewall/templates/firewall/index.html:12 msgid "Security Functions" -msgstr "" +msgstr "Функции на Защитата" #: firewall/templates/firewall/index.html:13 msgid "Manage the security of the server on this page." @@ -1188,7 +1393,7 @@ msgstr "" #: firewall/templates/firewall/secureSSH.html:28 #: managePHP/templates/managePHP/editPHPConfig.html:29 msgid "Basic" -msgstr "" +msgstr "Базови" #: firewall/templates/firewall/secureSSH.html:34 msgid "SSH Keys" @@ -1200,7 +1405,7 @@ msgstr "SSH Порт" #: firewall/templates/firewall/secureSSH.html:56 msgid "Permit Root Login" -msgstr "" +msgstr "Позволи Root Достъп" #: firewall/templates/firewall/secureSSH.html:60 msgid "" @@ -1212,30 +1417,30 @@ msgstr "" #: managePHP/templates/managePHP/editPHPConfig.html:130 #: managePHP/templates/managePHP/editPHPConfig.html:203 msgid "Save Changes" -msgstr "" +msgstr "Запази промените" #: firewall/templates/firewall/secureSSH.html:82 msgid "SSH Configurations Saved." -msgstr "" +msgstr "SSH Конфигурацията е запаметена." #: firewall/templates/firewall/secureSSH.html:121 msgid "Key" -msgstr "" +msgstr "Ключ" #: firewall/templates/firewall/secureSSH.html:150 msgid "Add Key" -msgstr "" +msgstr "Добави Ключ" #: firewall/templates/firewall/secureSSH.html:158 #: websiteFunctions/templates/websiteFunctions/suspendWebsite.html:55 #: websiteFunctions/templates/websiteFunctions/website.html:303 #: websiteFunctions/templates/websiteFunctions/website.html:363 msgid "Save" -msgstr "" +msgstr "Запази" #: firewall/templates/firewall/secureSSH.html:167 msgid "SSH Key Deleted" -msgstr "" +msgstr "SSH Ключа е премахнат" #: ftp/templates/ftp/createFTPAccount.html:3 msgid "Create FTP Account - CyberPanel" @@ -1249,15 +1454,19 @@ msgstr "" #: ftp/templates/ftp/createFTPAccount.html:52 msgid "FTP Password" -msgstr "" +msgstr "FTP Парола" #: ftp/templates/ftp/createFTPAccount.html:59 msgid "Path (Relative)" msgstr "" +#: ftp/templates/ftp/createFTPAccount.html:61 +msgid "Leave empty to select default home directory." +msgstr "" + #: ftp/templates/ftp/createFTPAccount.html:72 msgid "Create FTP" -msgstr "" +msgstr "Създай FTP" #: ftp/templates/ftp/createFTPAccount.html:80 msgid "Cannot create FTP account. Error message:" @@ -1267,7 +1476,7 @@ msgstr "" #: ftp/templates/ftp/createFTPAccount.html:87 #: ftp/templates/ftp/deleteFTPAccount.html:75 msgid "FTP Account with username:" -msgstr "" +msgstr "FTP Акаунт с Име:" #: ftp/templates/ftp/createFTPAccount.html:84 #: ftp/templates/ftp/createFTPAccount.html:87 @@ -1285,7 +1494,7 @@ msgstr "" #: ftp/templates/ftp/deleteFTPAccount.html:40 msgid "Select FTP Account" -msgstr "" +msgstr "Избери FTP Акаунт" #: ftp/templates/ftp/deleteFTPAccount.html:71 msgid "Cannot delete account. Error message:" @@ -1293,7 +1502,7 @@ msgstr "" #: ftp/templates/ftp/deleteFTPAccount.html:75 msgid " is successfully deleted." -msgstr "" +msgstr "е успешно изтрит" #: ftp/templates/ftp/deleteFTPAccount.html:79 #: userManagment/templates/userManagment/deleteUser.html:70 @@ -1304,10 +1513,6 @@ msgstr "" msgid "FTP Functions - CyberPanel" msgstr "" -#: ftp/templates/ftp/index.html:12 -msgid "FTP Functions" -msgstr "" - #: ftp/templates/ftp/index.html:13 msgid "Delete and create FTP accounts on this page." msgstr "" @@ -1331,7 +1536,7 @@ msgstr "" #: ftp/templates/ftp/listFTPAccounts.html:89 msgid "Directory" -msgstr "" +msgstr "Директория" #: mailServer/templates/mailServer/changeEmailPassword.html:3 msgid "Change Email Password - CyberPanel" @@ -1349,7 +1554,7 @@ msgstr "" #: mailServer/templates/mailServer/changeEmailPassword.html:42 #: mailServer/templates/mailServer/deleteEmailAccount.html:42 msgid "Select Email" -msgstr "" +msgstr "Избери Email" #: mailServer/templates/mailServer/changeEmailPassword.html:73 #: mailServer/templates/mailServer/deleteEmailAccount.html:72 @@ -1367,37 +1572,27 @@ msgstr "" #: mailServer/templates/mailServer/createEmailAccount.html:3 msgid "Create Email Account - CyberPanel" -msgstr "" - -#: mailServer/templates/mailServer/createEmailAccount.html:12 -#: mailServer/templates/mailServer/createEmailAccount.html:19 -msgid "Create Email Account" -msgstr "" +msgstr "Създай Email акаунт - CyberPanel" #: mailServer/templates/mailServer/createEmailAccount.html:13 msgid "Select a website from the list, to create an email account." -msgstr "" +msgstr "Избери за коя страница искате да създадете email акаунт." #: mailServer/templates/mailServer/createEmailAccount.html:72 msgid "Cannot create email account. Error message:" -msgstr "" +msgstr "Email акаунта не е създаден, защото:" #: mailServer/templates/mailServer/createEmailAccount.html:76 msgid "Email with id :" -msgstr "" +msgstr "Email с id:" #: mailServer/templates/mailServer/createEmailAccount.html:76 msgid " is successfully created." -msgstr "" +msgstr "е успешно създаден." #: mailServer/templates/mailServer/deleteEmailAccount.html:3 msgid "Delete Email Account - CyberPanel" -msgstr "" - -#: mailServer/templates/mailServer/deleteEmailAccount.html:12 -#: mailServer/templates/mailServer/deleteEmailAccount.html:19 -msgid "Delete Email Account" -msgstr "" +msgstr "Премахни Email Акаунт - CyberPanel" #: mailServer/templates/mailServer/deleteEmailAccount.html:13 msgid "Select a website from the list, to delete an email account." @@ -1405,15 +1600,15 @@ msgstr "" #: mailServer/templates/mailServer/deleteEmailAccount.html:76 msgid "Email with id : {$ deletedID $} is successfully deleted." -msgstr "" +msgstr "Email с id : {$ deletedID $} е успешно премахнато." #: mailServer/templates/mailServer/index.html:3 msgid "Mail Functions - CyberPanel" -msgstr "" +msgstr "Mail Функции - CyberPanel" #: mailServer/templates/mailServer/index.html:12 msgid "Mail Functions" -msgstr "" +msgstr "Mail Функции" #: mailServer/templates/mailServer/index.html:13 msgid "Manage email accounts on this page." @@ -1421,16 +1616,16 @@ msgstr "" #: managePHP/templates/managePHP/editPHPConfig.html:3 msgid "Edit PHP Configurations - CyberPanel" -msgstr "" +msgstr "Редактирай PHP Конфигурация - CyberPanel" #: managePHP/templates/managePHP/editPHPConfig.html:14 #: managePHP/templates/managePHP/editPHPConfig.html:21 msgid "Edit PHP Configurations" -msgstr "" +msgstr "Редактирай PHP Конфигурация" #: managePHP/templates/managePHP/editPHPConfig.html:35 msgid "Advanced" -msgstr "" +msgstr "За Напреднали" #: managePHP/templates/managePHP/editPHPConfig.html:48 #: managePHP/templates/managePHP/editPHPConfig.html:174 @@ -1439,44 +1634,44 @@ msgstr "" #: websiteFunctions/templates/websiteFunctions/createWebsite.html:68 #: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:74 msgid "Select PHP" -msgstr "" +msgstr "Избери PHP" #: managePHP/templates/managePHP/editPHPConfig.html:66 msgid "display_errors" -msgstr "" +msgstr "display_errors" #: managePHP/templates/managePHP/editPHPConfig.html:73 msgid "file_uploads" -msgstr "" +msgstr "file_uploads" #: managePHP/templates/managePHP/editPHPConfig.html:81 msgid "allow_url_fopen" -msgstr "" +msgstr "allow_url_fopen" #: managePHP/templates/managePHP/editPHPConfig.html:89 msgid "allow_url_include" -msgstr "" +msgstr "allow_url_include" #: managePHP/templates/managePHP/editPHPConfig.html:97 msgid "memory_limit" -msgstr "" +msgstr "memory_limit" #: managePHP/templates/managePHP/editPHPConfig.html:104 msgid "max_execution_time" -msgstr "" +msgstr "max_execution_time" #: managePHP/templates/managePHP/editPHPConfig.html:111 msgid "upload_max_filesize" -msgstr "" +msgstr "upload_max_filesize" #: managePHP/templates/managePHP/editPHPConfig.html:118 msgid "max_input_time" -msgstr "" +msgstr "max_input_time" #: managePHP/templates/managePHP/editPHPConfig.html:144 #: managePHP/templates/managePHP/editPHPConfig.html:216 msgid "PHP Configs Saved." -msgstr "" +msgstr "PHP Configs са запазени." #: managePHP/templates/managePHP/index.html:3 msgid "Manage PHP Installations - CyberPanel" @@ -1494,10 +1689,6 @@ msgstr "" msgid "Install PHP Extensions - CyberPanel" msgstr "" -#: managePHP/templates/managePHP/installExtensions.html:13 -msgid "Install PHP Extensions" -msgstr "" - #: managePHP/templates/managePHP/installExtensions.html:14 msgid "Install/uninstall php extensions on this page." msgstr "" @@ -1505,6 +1696,10 @@ msgstr "" #: managePHP/templates/managePHP/installExtensions.html:19 #: tuning/templates/tuning/phpTuning.html:19 msgid "Select PHP Version" +msgstr "Избери PHP Версия" + +#: managePHP/templates/managePHP/installExtensions.html:48 +msgid "Search Extensions.." msgstr "" #: managePHP/templates/managePHP/installExtensions.html:63 @@ -1513,31 +1708,31 @@ msgstr "" #: managePHP/templates/managePHP/installExtensions.html:64 msgid "Description" -msgstr "" +msgstr "Описание" #: managePHP/templates/managePHP/installExtensions.html:66 #: managePHP/templates/managePHP/installExtensions.html:77 msgid "Install" -msgstr "" +msgstr "Инсталирай" #: managePHP/templates/managePHP/installExtensions.html:67 #: managePHP/templates/managePHP/installExtensions.html:78 msgid "Uninstall" -msgstr "" +msgstr "Де-Инсталирай" #: managePHP/templates/managePHP/installExtensions.html:93 msgid "Go Back" -msgstr "" +msgstr "Назад" #: managePHP/templates/managePHP/installExtensions.html:104 #: tuning/templates/tuning/phpTuning.html:114 #: userManagment/templates/userManagment/modifyUser.html:144 msgid "Cannot fetch details. Error message:" -msgstr "" +msgstr "Детайлите не са извлечени, защото:" #: managePHP/templates/managePHP/installExtensions.html:108 msgid "Cannot perform operation. Error message:" -msgstr "" +msgstr "Операцията не е изпълнена, защото:" #: manageSSL/templates/manageSSL/index.html:3 msgid "SSL Functions - CyberPanel" @@ -1545,7 +1740,7 @@ msgstr "" #: manageSSL/templates/manageSSL/index.html:13 msgid "SSL Functions" -msgstr "" +msgstr "SSL Функции" #: manageSSL/templates/manageSSL/index.html:14 msgid "Issue Let’s Encrypt SSLs for websites and hostname." @@ -1553,7 +1748,7 @@ msgstr "" #: manageSSL/templates/manageSSL/manageSSL.html:3 msgid "Manage SSL - CyberPanel" -msgstr "" +msgstr "SSL - CyberPanel" #: manageSSL/templates/manageSSL/manageSSL.html:14 msgid "" @@ -1564,7 +1759,7 @@ msgstr "" #: manageSSL/templates/manageSSL/manageSSL.html:42 #: manageSSL/templates/manageSSL/sslForHostName.html:42 msgid "Issue SSL" -msgstr "" +msgstr "Издаване на SSL" #: manageSSL/templates/manageSSL/manageSSL.html:52 #: manageSSL/templates/manageSSL/sslForHostName.html:52 @@ -1573,7 +1768,7 @@ msgstr "" #: manageSSL/templates/manageSSL/manageSSL.html:56 msgid "SSL Issued for" -msgstr "" +msgstr "SSL издаден за" #: manageSSL/templates/manageSSL/sslForHostName.html:3 msgid "Issue SSL For Hostname - CyberPanel" @@ -1582,7 +1777,7 @@ msgstr "" #: manageSSL/templates/manageSSL/sslForHostName.html:13 #: manageSSL/templates/manageSSL/sslForHostName.html:20 msgid "Issue SSL For Hostname" -msgstr "" +msgstr "Издай SSL за Hostname" #: manageSSL/templates/manageSSL/sslForHostName.html:14 msgid "Let’s Encrypt SSL for hostname to access CyberPanel on verified SSL." @@ -1595,7 +1790,7 @@ msgstr "" #: packages/templates/packages/createPackage.html:3 msgid "Create Package - CyberPanel" -msgstr "" +msgstr "Създай Пакет - CyberPanel" #: packages/templates/packages/createPackage.html:14 #: packages/templates/packages/deletePackage.html:13 @@ -1609,101 +1804,96 @@ msgstr "" #: packages/templates/packages/createPackage.html:19 msgid "Package Details" -msgstr "" +msgstr "Детайли за Пакет" #: packages/templates/packages/createPackage.html:26 msgid "Package Name" -msgstr "" +msgstr "Име на Пакет" #: packages/templates/packages/createPackage.html:35 #: packages/templates/packages/modifyPackage.html:39 msgid "Disk Space" -msgstr "" +msgstr "Дисково Място" #: packages/templates/packages/createPackage.html:39 #: packages/templates/packages/createPackage.html:47 #: packages/templates/packages/modifyPackage.html:43 #: packages/templates/packages/modifyPackage.html:51 msgid "MB (0 = Unlimited)" -msgstr "" +msgstr "MB (0 = Без лимит)" #: packages/templates/packages/createPackage.html:43 #: packages/templates/packages/modifyPackage.html:47 msgid "Bandwidth" -msgstr "" +msgstr "Трафик" #: packages/templates/packages/createPackage.html:52 #: packages/templates/packages/modifyPackage.html:56 msgid "FTP Accounts" -msgstr "" +msgstr "FTP Акаунти" #: packages/templates/packages/createPackage.html:87 msgid "Cannot create package. Error message:" -msgstr "" - -#: packages/templates/packages/createPackage.html:91 -#: packages/templates/packages/deletePackage.html:63 -#: packages/templates/packages/modifyPackage.html:102 -msgid "Package" -msgstr "" +msgstr "Пакета не е създаден, защото:" #: packages/templates/packages/createPackage.html:91 msgid "Successfully Created" -msgstr "" +msgstr "Успешно е създаден" #: packages/templates/packages/deletePackage.html:3 msgid "Delete Package - CyberPanel" -msgstr "" +msgstr "Изтрий пакет - CyberPanel" #: packages/templates/packages/deletePackage.html:27 #: packages/templates/packages/modifyPackage.html:24 #: websiteFunctions/templates/websiteFunctions/createWebsite.html:29 #: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:45 msgid "Select Package" -msgstr "" +msgstr "Избери Пакет" #: packages/templates/packages/deletePackage.html:59 msgid "Cannot delete package. Error message:" -msgstr "" +msgstr "Пакета не може да бъде премахнат, защото:" #: packages/templates/packages/deletePackage.html:63 #: userManagment/templates/userManagment/deleteUser.html:65 msgid " Successfully Deleted" -msgstr "" +msgstr "Успешно е премахнато" #: packages/templates/packages/index.html:3 msgid "Packages - CyberPanel" -msgstr "" +msgstr "Пакети - CyberPanel" #: packages/templates/packages/modifyPackage.html:3 msgid "Modify Package - CyberPanel" -msgstr "" +msgstr "Промени Пакет - CyberPanel" #: packages/templates/packages/modifyPackage.html:94 msgid "Cannot fetch package details. Error message:" -msgstr "" +msgstr "Детайлите за пакета не са извлечени, защото:" #: packages/templates/packages/modifyPackage.html:98 msgid "Package Details Successfully Fetched" -msgstr "" +msgstr "Детайлите за пакета са успешно извлечени" #: packages/templates/packages/modifyPackage.html:102 msgid "Successfully Modified" -msgstr "" +msgstr "Успешно Променено" #: serverLogs/templates/serverLogs/accessLogs.html:3 msgid "Access Logs - CyberPanel" -msgstr "" +msgstr "Access Логове - CyberPanel" #: serverLogs/templates/serverLogs/accessLogs.html:17 +#: serverLogs/templates/serverLogs/index.html:25 #: serverLogs/templates/serverLogs/index.html:27 #: websiteFunctions/templates/websiteFunctions/website.html:121 msgid "Access Logs" -msgstr "" +msgstr "Access Логове" #: serverLogs/templates/serverLogs/accessLogs.html:18 msgid "Access Logs for main web server." -msgstr "" +msgstr "Access логове за главния web сървър" #: serverLogs/templates/serverLogs/accessLogs.html:26 #: serverLogs/templates/serverLogs/emailLogs.html:23 @@ -1711,7 +1901,7 @@ msgstr "" #: serverLogs/templates/serverLogs/ftplogs.html:23 #: serverStatus/templates/serverStatus/cybercpmainlogfile.html:24 msgid "Last 50 Lines" -msgstr "" +msgstr "Последните 50 реда" #: serverLogs/templates/serverLogs/accessLogs.html:42 #: serverLogs/templates/serverLogs/emailLogs.html:39 @@ -1719,7 +1909,7 @@ msgstr "" #: serverLogs/templates/serverLogs/ftplogs.html:39 #: serverStatus/templates/serverStatus/cybercpmainlogfile.html:40 msgid "Refresh" -msgstr "" +msgstr "Презареди" #: serverLogs/templates/serverLogs/accessLogs.html:49 #: serverLogs/templates/serverLogs/emailLogs.html:46 @@ -1727,7 +1917,7 @@ msgstr "" #: serverLogs/templates/serverLogs/ftplogs.html:46 #: serverStatus/templates/serverStatus/cybercpmainlogfile.html:47 msgid "Last 50 Lines Fetched" -msgstr "" +msgstr "Последните 50 реда са извлечени" #: serverLogs/templates/serverLogs/accessLogs.html:54 #: serverLogs/templates/serverLogs/emailLogs.html:51 @@ -1740,36 +1930,31 @@ msgstr "" #: serverLogs/templates/serverLogs/emailLogs.html:3 #: serverLogs/templates/serverLogs/errorLogs.html:3 msgid "Error Logs - CyberPanel" -msgstr "" - -#: serverLogs/templates/serverLogs/emailLogs.html:14 -#: serverLogs/templates/serverLogs/index.html:51 -msgid "Email Logs" -msgstr "" +msgstr "Error логове - CyberPanel" #: serverLogs/templates/serverLogs/emailLogs.html:15 msgid "Email Logs for main web server." -msgstr "" +msgstr "Email логове за главния web сървър" #: serverLogs/templates/serverLogs/errorLogs.html:15 msgid "Error Logs for main web server." -msgstr "" +msgstr "Error логове за главния web сървър" #: serverLogs/templates/serverLogs/ftplogs.html:3 msgid "FTP Logs - CyberPanel" -msgstr "" +msgstr "FTP Логове - CyberPanel" #: serverLogs/templates/serverLogs/ftplogs.html:15 msgid "FTP Logs for main web server." -msgstr "" +msgstr "FTP логове за главния web сървър" #: serverLogs/templates/serverLogs/index.html:3 msgid "Server Logs - CyberPanel" -msgstr "" +msgstr "Сървърни Логове - Cyberpanel" #: serverLogs/templates/serverLogs/index.html:13 msgid "Server Logs" -msgstr "" +msgstr "Сървърни Логове" #: serverLogs/templates/serverLogs/index.html:14 msgid "" @@ -1779,7 +1964,7 @@ msgstr "" #: serverStatus/templates/serverStatus/cybercpmainlogfile.html:3 msgid "CyberPanel Main Log File - CyberPanel" -msgstr "" +msgstr "Главен Лог на CyberPanel - CyberPanel" #: serverStatus/templates/serverStatus/cybercpmainlogfile.html:16 msgid "" @@ -1789,19 +1974,19 @@ msgstr "" #: serverStatus/templates/serverStatus/index.html:3 msgid "Server Status - CyberPanel" -msgstr "" +msgstr "Сървър Статус - CyberPanel" #: serverStatus/templates/serverStatus/index.html:14 msgid "View LiteSpeed status and log files." -msgstr "" +msgstr "Виж LiteSpeed статус и логове." #: serverStatus/templates/serverStatus/litespeedStatus.html:3 msgid "LiteSpeed Status - CyberPanel" -msgstr "" +msgstr "LiteSpeed Статус - CyberPanel" #: serverStatus/templates/serverStatus/litespeedStatus.html:16 msgid "LiteSpeed Status:" -msgstr "" +msgstr "LiteSpeed Статус" #: serverStatus/templates/serverStatus/litespeedStatus.html:17 msgid "" @@ -1810,23 +1995,23 @@ msgstr "" #: serverStatus/templates/serverStatus/litespeedStatus.html:32 msgid "LiteSpeed Processes" -msgstr "" +msgstr "LiteSpeed Processes" #: serverStatus/templates/serverStatus/litespeedStatus.html:39 msgid "Process ID" -msgstr "" +msgstr "Process ID" #: serverStatus/templates/serverStatus/litespeedStatus.html:51 msgid "Main Process" -msgstr "" +msgstr "Main Процес" #: serverStatus/templates/serverStatus/litespeedStatus.html:54 msgid "lscgid Process" -msgstr "" +msgstr "lscgid Процес" #: serverStatus/templates/serverStatus/litespeedStatus.html:57 msgid "Worker Process" -msgstr "" +msgstr "Worker Process" #: serverStatus/templates/serverStatus/litespeedStatus.html:67 msgid "" @@ -1836,15 +2021,15 @@ msgstr "" #: serverStatus/templates/serverStatus/litespeedStatus.html:72 msgid "Reboot Litespeed" -msgstr "" +msgstr "Рестартирай LiteSpeed" #: serverStatus/templates/serverStatus/litespeedStatus.html:77 msgid "Stop LiteSpeed" -msgstr "" +msgstr "Спри LiteSpeed" #: serverStatus/templates/serverStatus/litespeedStatus.html:90 msgid "Error Occurred. See CyberPanel main log file." -msgstr "" +msgstr "Възникна проблем. Прегледайте главния лог на CyberPanel" #: serverStatus/templates/serverStatus/litespeedStatus.html:95 msgid "Could not connect to server." @@ -1862,7 +2047,7 @@ msgstr "" #: tuning/templates/tuning/liteSpeedTuning.html:3 msgid "LiteSpeed Tuning - CyberPanel" -msgstr "" +msgstr "LiteSpeed Настройки - CyberPanel" #: tuning/templates/tuning/liteSpeedTuning.html:13 msgid "" @@ -1872,52 +2057,52 @@ msgstr "" #: tuning/templates/tuning/liteSpeedTuning.html:18 msgid "Tuning Details" -msgstr "" +msgstr "Детайли за Настройки" #: tuning/templates/tuning/liteSpeedTuning.html:28 #: tuning/templates/tuning/phpTuning.html:52 msgid "Max Connections" -msgstr "" +msgstr "Max Connections" #: tuning/templates/tuning/liteSpeedTuning.html:36 msgid "Max SSL Connections" -msgstr "" +msgstr "Max SSL Connections" #: tuning/templates/tuning/liteSpeedTuning.html:44 msgid "Connection Timeout" -msgstr "" +msgstr "Connection Timeout" #: tuning/templates/tuning/liteSpeedTuning.html:52 msgid "Keep Alive Timeout" -msgstr "" +msgstr "Keep Alive Timeout" #: tuning/templates/tuning/liteSpeedTuning.html:60 msgid "Cache Size in memory" -msgstr "" +msgstr "Cache Size in memory" #: tuning/templates/tuning/liteSpeedTuning.html:67 msgid "Enable GZIP Compression" -msgstr "" +msgstr "Включи GZIP Компресия" #: tuning/templates/tuning/liteSpeedTuning.html:70 #: tuning/templates/tuning/phpTuning.html:93 msgid "Enable" -msgstr "" +msgstr "Позволи" #: tuning/templates/tuning/liteSpeedTuning.html:71 #: tuning/templates/tuning/phpTuning.html:94 msgid "Disable" -msgstr "" +msgstr "Забрани" #: tuning/templates/tuning/liteSpeedTuning.html:74 #: tuning/templates/tuning/phpTuning.html:97 #: userManagment/templates/userManagment/modifyUser.html:78 msgid "Currently:" -msgstr "" +msgstr "В момента" #: tuning/templates/tuning/liteSpeedTuning.html:82 msgid "Tune Web Server" -msgstr "" +msgstr "Настрой Web Сървър" #: tuning/templates/tuning/liteSpeedTuning.html:93 msgid "" @@ -1935,7 +2120,7 @@ msgstr "" #: tuning/templates/tuning/phpTuning.html:3 msgid "PHP Tuning - CyberPanel" -msgstr "" +msgstr "PHP Настройки - CyberPanel" #: tuning/templates/tuning/phpTuning.html:14 msgid "Set how each version of PHP behaves in your server here." @@ -1943,23 +2128,23 @@ msgstr "" #: tuning/templates/tuning/phpTuning.html:45 msgid "Initial Request Timeout (secs)" -msgstr "" +msgstr "Initial Request Timeout (secs)" #: tuning/templates/tuning/phpTuning.html:60 msgid "Memory Soft Limit" -msgstr "" +msgstr "Memory Soft Limit" #: tuning/templates/tuning/phpTuning.html:67 msgid "Memory Hard Limit" -msgstr "" +msgstr "Memory Hard Limit" #: tuning/templates/tuning/phpTuning.html:75 msgid "Process Soft Limit" -msgstr "" +msgstr "Process Soft Limit" #: tuning/templates/tuning/phpTuning.html:82 msgid "Process Hard Limit" -msgstr "" +msgstr "Process Hard Limit" #: tuning/templates/tuning/phpTuning.html:90 msgid "Persistent Connection" @@ -1967,100 +2152,100 @@ msgstr "" #: tuning/templates/tuning/phpTuning.html:105 msgid "Tune PHP" -msgstr "" +msgstr "Настрой PHP" #: tuning/templates/tuning/phpTuning.html:118 msgid "Cannot tune. Error message:" -msgstr "" +msgstr "Настройките не са въведени, защото:" #: tuning/templates/tuning/phpTuning.html:123 msgid "Details Successfully fetched." -msgstr "" +msgstr "Детайлите са успешно извлечени." #: tuning/templates/tuning/phpTuning.html:127 msgid "PHP version " -msgstr "" +msgstr "PHP Версия" #: tuning/templates/tuning/phpTuning.html:127 msgid "Successfully tuned." -msgstr "" +msgstr "Успешно настроен" #: userManagment/templates/userManagment/createUser.html:3 msgid "Create New User - CyberPanel" -msgstr "" +msgstr "Създай Потребител - CyberPanel" #: userManagment/templates/userManagment/createUser.html:13 msgid "Create root, reseller or normal users on this page." -msgstr "" +msgstr "Създай root, reseller или нормален потребител от тази страница." #: userManagment/templates/userManagment/createUser.html:19 msgid "User Details" -msgstr "" +msgstr "Детайли" #: userManagment/templates/userManagment/createUser.html:28 #: userManagment/templates/userManagment/modifyUser.html:39 #: userManagment/templates/userManagment/userProfile.html:25 msgid "First Name" -msgstr "" +msgstr "Име" #: userManagment/templates/userManagment/createUser.html:32 msgid "First Name should contain only alphabetic characters." -msgstr "" +msgstr "Името е необходимо да съдържа само букви" #: userManagment/templates/userManagment/createUser.html:37 #: userManagment/templates/userManagment/modifyUser.html:46 #: userManagment/templates/userManagment/userProfile.html:33 msgid "Last Name" -msgstr "" +msgstr "Фанилия" #: userManagment/templates/userManagment/createUser.html:41 msgid "Last Name should contain only alphabetic characters." -msgstr "" +msgstr "Фамилията е необходимо да съдържа само букви" #: userManagment/templates/userManagment/createUser.html:51 #: websiteFunctions/templates/websiteFunctions/createWebsite.html:64 msgid "Invalid Email" -msgstr "" +msgstr "Невалиден Email" #: userManagment/templates/userManagment/createUser.html:64 #: userManagment/templates/userManagment/createUser.html:76 #: userManagment/templates/userManagment/modifyUser.html:69 msgid "Account Type" -msgstr "" +msgstr "Вид на акаунт" #: userManagment/templates/userManagment/createUser.html:67 #: userManagment/templates/userManagment/modifyUser.html:73 msgid "Reseller" -msgstr "" +msgstr "Resseler" #: userManagment/templates/userManagment/createUser.html:68 #: userManagment/templates/userManagment/createUser.html:79 #: userManagment/templates/userManagment/modifyUser.html:74 msgid "Normal User" -msgstr "" +msgstr "Нормален Потребител" #: userManagment/templates/userManagment/createUser.html:92 #: userManagment/templates/userManagment/modifyUser.html:89 #: userManagment/templates/userManagment/userProfile.html:67 #: userManagment/templates/userManagment/userProfile.html:74 msgid "User Accounts Limit" -msgstr "" +msgstr "Лимити за Потребителски акаунти" #: userManagment/templates/userManagment/createUser.html:96 #: userManagment/templates/userManagment/createUser.html:107 msgid "Only Numbers" -msgstr "" +msgstr "Само Числа" #: userManagment/templates/userManagment/createUser.html:103 #: userManagment/templates/userManagment/modifyUser.html:99 #: userManagment/templates/userManagment/userProfile.html:82 msgid "Websites Limit" -msgstr "" +msgstr "Лимити за страници" #: userManagment/templates/userManagment/createUser.html:113 #: userManagment/templates/userManagment/userProfile.html:42 msgid "Username" -msgstr "" +msgstr "Потребителско Име" #: userManagment/templates/userManagment/createUser.html:117 msgid "Username should be lowercase alphanumeric." @@ -2071,14 +2256,15 @@ msgid "Must contain one number and one special character." msgstr "" #: userManagment/templates/userManagment/createUser.html:143 +#: userManagment/templates/userManagment/index.html:40 #: userManagment/templates/userManagment/index.html:42 msgid "Create User" -msgstr "Нов Потребител" +msgstr "Създай Потребител" #: userManagment/templates/userManagment/createUser.html:154 #: userManagment/templates/userManagment/modifyUser.html:131 msgid "Account with username:" -msgstr "" +msgstr "Акаунт с Потребителско име:" #: userManagment/templates/userManagment/createUser.html:158 msgid "Cannot create user. Error message:" @@ -2100,7 +2286,7 @@ msgstr "" #: userManagment/templates/userManagment/deleteUser.html:29 msgid "Select User" -msgstr "" +msgstr "Избери Потребител" #: userManagment/templates/userManagment/deleteUser.html:61 msgid "Cannot delete user. Error message:" @@ -2108,23 +2294,19 @@ msgstr "" #: userManagment/templates/userManagment/deleteUser.html:65 msgid "User " -msgstr "" +msgstr "Потребител" #: userManagment/templates/userManagment/index.html:3 msgid "User Functions - CyberPanel" msgstr "" -#: userManagment/templates/userManagment/index.html:13 -msgid "User Functions" -msgstr "" - #: userManagment/templates/userManagment/index.html:14 msgid "Create, edit and delete users on this page." msgstr "" #: userManagment/templates/userManagment/modifyUser.html:3 msgid "Modify User - CyberPanel" -msgstr "" +msgstr "Промени Потребител - CyberPanel" #: userManagment/templates/userManagment/modifyUser.html:13 msgid "Modify existing user settings on this page." @@ -2132,15 +2314,15 @@ msgstr "" #: userManagment/templates/userManagment/modifyUser.html:26 msgid "Select Account" -msgstr "" +msgstr "Избери Акаунт" #: userManagment/templates/userManagment/modifyUser.html:72 msgid "Admin" -msgstr "" +msgstr "Admin" #: userManagment/templates/userManagment/modifyUser.html:131 msgid " is successfully modified." -msgstr "" +msgstr "е успешно променен." #: userManagment/templates/userManagment/modifyUser.html:135 msgid "Cannot modify user. Error message:" @@ -2148,16 +2330,16 @@ msgstr "" #: userManagment/templates/userManagment/modifyUser.html:148 msgid "Details fetched." -msgstr "" +msgstr "Детайлите са изтеглени." #: userManagment/templates/userManagment/userProfile.html:3 msgid "Account Details - CyberPanel" -msgstr "" +msgstr "Детайли за Акаунт - CyberPanel" #: userManagment/templates/userManagment/userProfile.html:12 #: userManagment/templates/userManagment/userProfile.html:18 msgid "Account Details" -msgstr "" +msgstr "Детайли за Акаунт" #: userManagment/templates/userManagment/userProfile.html:13 msgid "List the account details for the currently logged in user." @@ -2165,17 +2347,17 @@ msgstr "" #: userManagment/templates/userManagment/userProfile.html:58 msgid "Account Level" -msgstr "" +msgstr "Акаунт Левел" #: userManagment/templates/userManagment/userProfile.html:69 #: userManagment/templates/userManagment/userProfile.html:76 #: userManagment/templates/userManagment/userProfile.html:84 msgid "( 0 = Unlimited )" -msgstr "" +msgstr "( 0 = Без Лимит )" #: websiteFunctions/templates/websiteFunctions/createWebsite.html:3 msgid "Create New Website - CyberPanel" -msgstr "" +msgstr "Добави нова страница - CyberPanel" #: websiteFunctions/templates/websiteFunctions/createWebsite.html:13 #: websiteFunctions/templates/websiteFunctions/index.html:14 @@ -2187,20 +2369,21 @@ msgstr "" #: websiteFunctions/templates/websiteFunctions/createWebsite.html:20 msgid "Website Details" -msgstr "" +msgstr "Детайли за Страницата" #: websiteFunctions/templates/websiteFunctions/createWebsite.html:40 #: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:56 msgid "Select Owner" -msgstr "" +msgstr "Избери Собственик" #: websiteFunctions/templates/websiteFunctions/createWebsite.html:56 msgid "Invalid Domain (Note: You don't need to add 'http' or 'https')" msgstr "" +"Невалиден домейн (Забележка: Не е необходимо да поставяте 'http' или 'https')" #: websiteFunctions/templates/websiteFunctions/createWebsite.html:84 msgid "Additional Features" -msgstr "" +msgstr "Допълнителни функции" #: websiteFunctions/templates/websiteFunctions/createWebsite.html:91 msgid "" @@ -2210,19 +2393,19 @@ msgstr "" #: websiteFunctions/templates/websiteFunctions/createWebsite.html:113 msgid "Cannot create website. Error message:" -msgstr "" +msgstr "Страницата не е създадена, защото:" #: websiteFunctions/templates/websiteFunctions/createWebsite.html:117 msgid "Website with domain" -msgstr "" +msgstr "Страница с домейн" #: websiteFunctions/templates/websiteFunctions/createWebsite.html:117 msgid " is Successfully Created" -msgstr "" +msgstr "е Успешно Създаден" #: websiteFunctions/templates/websiteFunctions/deleteWebsite.html:3 msgid "Delete Website - CyberPanel" -msgstr "" +msgstr "Премахни страница - CyberPanel" #: websiteFunctions/templates/websiteFunctions/deleteWebsite.html:13 msgid "" @@ -2234,27 +2417,20 @@ msgstr "" msgid "Cannot delete website, Error message: " msgstr "" -#: websiteFunctions/templates/websiteFunctions/deleteWebsite.html:65 -msgid "Website" -msgstr "" - #: websiteFunctions/templates/websiteFunctions/deleteWebsite.html:65 msgid "Successfully Deleted." -msgstr "" +msgstr "Успешно е Изтрита." #: websiteFunctions/templates/websiteFunctions/index.html:3 msgid "Website Functions - CyberPanel" msgstr "" -#: websiteFunctions/templates/websiteFunctions/index.html:13 -msgid "Website Functions" -msgstr "" - +#: websiteFunctions/templates/websiteFunctions/index.html:70 #: websiteFunctions/templates/websiteFunctions/index.html:72 #: websiteFunctions/templates/websiteFunctions/suspendWebsite.html:13 #: websiteFunctions/templates/websiteFunctions/suspendWebsite.html:20 msgid "Suspend/Unsuspend Website" -msgstr "" +msgstr "Пусни/Спри Страница" #: websiteFunctions/templates/websiteFunctions/listWebsites.html:3 msgid "Websites Hosted - CyberPanel" @@ -2266,84 +2442,92 @@ msgstr "" #: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:3 msgid "Modify Website - CyberPanel" -msgstr "" +msgstr "Редактирай Страница - CyberPanel" #: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:51 msgid "Current Package:" -msgstr "" +msgstr "Текущ Пакет" #: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:62 msgid "Current Owner:" -msgstr "" +msgstr "Текущ собственик:" #: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:104 msgid "Cannot fetch website details. Error message:" -msgstr "" +msgstr "Информацията за страницата не са обновени, защото:" #: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:108 msgid "Cannot modify website. Error message:" -msgstr "" +msgstr "Страницата не може да бъде променена, защото:" #: websiteFunctions/templates/websiteFunctions/modifyWebsite.html:112 msgid "Website Details Successfully fetched" -msgstr "" +msgstr "Детайлите за страницата са изтеглени" #: websiteFunctions/templates/websiteFunctions/suspendWebsite.html:3 msgid "Suspend/Unsuspend Website - CyberPanel" -msgstr "" +msgstr "Спри/Пусни Страница - CyberPanel" #: websiteFunctions/templates/websiteFunctions/suspendWebsite.html:14 msgid "This page can be used to suspend/unsuspend website." -msgstr "" +msgstr "От тази страница може да пускате или спирате страници." #: websiteFunctions/templates/websiteFunctions/suspendWebsite.html:44 msgid "Suspend" -msgstr "" +msgstr "Спри" #: websiteFunctions/templates/websiteFunctions/suspendWebsite.html:45 msgid "Un-Suspend" -msgstr "" +msgstr "Пусни" #: websiteFunctions/templates/websiteFunctions/suspendWebsite.html:65 msgid "Cannot suspend website, Error message: " -msgstr "" +msgstr "Страницата не е спряна, защото:" #: websiteFunctions/templates/websiteFunctions/suspendWebsite.html:69 msgid "Cannot unsuspend website. Error message:" -msgstr "" +msgstr "Страницата не е пусната, защото:" #: websiteFunctions/templates/websiteFunctions/suspendWebsite.html:73 msgid "Website " -msgstr "" +msgstr "Страница" #: websiteFunctions/templates/websiteFunctions/suspendWebsite.html:73 msgid "Successfully " -msgstr "" +msgstr "Успешно" #: websiteFunctions/templates/websiteFunctions/website.html:15 msgid "All functions related to a particular site." -msgstr "" +msgstr "Всички функции, които са свързани с определена страница." #: websiteFunctions/templates/websiteFunctions/website.html:23 msgid "Resource Usage" -msgstr "" +msgstr "Използвани ресурси" #: websiteFunctions/templates/websiteFunctions/website.html:32 msgid "Resource" -msgstr "" +msgstr "Ресурси" #: websiteFunctions/templates/websiteFunctions/website.html:34 msgid "Allowed" -msgstr "" +msgstr "Позволено" #: websiteFunctions/templates/websiteFunctions/website.html:56 #: websiteFunctions/templates/websiteFunctions/website.html:83 msgid "Bandwidth Usage" -msgstr "" +msgstr "Използван Трафик" + +#: websiteFunctions/templates/websiteFunctions/website.html:119 +msgid "Load Access Logs" +msgstr "Зареди Access Логове" + +#: websiteFunctions/templates/websiteFunctions/website.html:131 +msgid "Load Error Logs" +msgstr "Зареди Error Логове" #: websiteFunctions/templates/websiteFunctions/website.html:147 msgid "Logs Fetched" -msgstr "" +msgstr "Логовете са изтеглени" #: websiteFunctions/templates/websiteFunctions/website.html:152 msgid "" @@ -2352,90 +2536,101 @@ msgstr "" #: websiteFunctions/templates/websiteFunctions/website.html:173 msgid "Next" -msgstr "" +msgstr "Следваща" #: websiteFunctions/templates/websiteFunctions/website.html:174 msgid "Previous" -msgstr "" +msgstr "Минала" #: websiteFunctions/templates/websiteFunctions/website.html:227 msgid "Configurations" -msgstr "" +msgstr "Конфигурация" + +#: websiteFunctions/templates/websiteFunctions/website.html:233 +msgid "Edit Virtual Host Main Configurations" +msgstr "Редактирай Virtual Host Main Configurations" #: websiteFunctions/templates/websiteFunctions/website.html:235 msgid "Edit vHost Main Configurations" -msgstr "" +msgstr "Редактирай vHost Main Configurations" +#: websiteFunctions/templates/websiteFunctions/website.html:245 #: websiteFunctions/templates/websiteFunctions/website.html:247 msgid "Add Rewrite Rules (.htaccess)" -msgstr "" +msgstr "Добави Rewrite Rules (.htaccess)" + +#: websiteFunctions/templates/websiteFunctions/website.html:257 +msgid "Add Your Own SSL" +msgstr "Добави свой SSL" #: websiteFunctions/templates/websiteFunctions/website.html:259 msgid "Add SSL" -msgstr "" +msgstr "Добави SSL" #: websiteFunctions/templates/websiteFunctions/website.html:274 msgid "SSL Saved" -msgstr "" +msgstr "SSL Запазен" #: websiteFunctions/templates/websiteFunctions/website.html:279 msgid "Could not save SSL. Error message:" -msgstr "" +msgstr "SSL не е запазен, защото:" #: websiteFunctions/templates/websiteFunctions/website.html:329 msgid "Current configuration in the file fetched." -msgstr "" +msgstr "Текущата конфигурация във файла е изтеглена" #: websiteFunctions/templates/websiteFunctions/website.html:334 #: websiteFunctions/templates/websiteFunctions/website.html:347 msgid "Could not fetch current configuration. Error message:" -msgstr "" +msgstr "Текущата конфигурация не е изтеглена, защото:" #: websiteFunctions/templates/websiteFunctions/website.html:343 #: websiteFunctions/templates/websiteFunctions/website.html:398 msgid "Configuration saved. Restart LiteSpeed put them in effect." msgstr "" +"Конфигурацията е запазена. Рестартирайте LiteSpeed, за да влезнат в сила " +"промените." #: websiteFunctions/templates/websiteFunctions/website.html:384 msgid "Current rewrite rules in the file fetched." -msgstr "" +msgstr "Наличните rewrite rules са изтеглени." #: websiteFunctions/templates/websiteFunctions/website.html:389 msgid "Could not fetch current rewrite rules. Error message:" -msgstr "" +msgstr "Наличните rewrite rules не са изтеглени, защото:" #: websiteFunctions/templates/websiteFunctions/website.html:402 msgid "Could not save rewrite rules. Error message:" -msgstr "" +msgstr "Новите rewrite rules не са запаметени, защото:" #: websiteFunctions/templates/websiteFunctions/website.html:418 msgid "Save Rewrite Rules" -msgstr "" +msgstr "Запази Rewrite Rules" #: websiteFunctions/templates/websiteFunctions/website.html:441 msgid "Files" -msgstr "" +msgstr "Файлове" #: websiteFunctions/templates/websiteFunctions/website.html:450 msgid "File Manager" -msgstr "" +msgstr "Файл Мениджър" #: websiteFunctions/templates/websiteFunctions/website.html:490 msgid "Application Installer" -msgstr "" +msgstr "Инсталатор на Приложения" #: websiteFunctions/templates/websiteFunctions/website.html:498 msgid "Wordpress with LSCache" -msgstr "" +msgstr "Wordpress с LSCache" #: websiteFunctions/templates/websiteFunctions/website.html:510 msgid "Path" -msgstr "" +msgstr "Път" #: websiteFunctions/templates/websiteFunctions/website.html:532 msgid "Installation failed. Error message:" -msgstr "" +msgstr "Инсталацията Не завърши, защото:" #: websiteFunctions/templates/websiteFunctions/website.html:536 msgid "Installation successful. To complete the setup visit:" -msgstr "" +msgstr "Инсталацията завърши успешно. " diff --git a/manageSSL/views.py b/manageSSL/views.py index 02c39dd7c..e084bc39f 100644 --- a/manageSSL/views.py +++ b/manageSSL/views.py @@ -127,6 +127,9 @@ def issueSSL(request): website.ssl = 1 website.save() + sslUtilities.installSSLForDomain(virtualHost) + installUtilities.reStartLiteSpeed() + data_ret = {"SSL": 1, 'error_message': "None"} json_data = json.dumps(data_ret) diff --git a/middleware.py b/middleware.py deleted file mode 100644 index 09480b974..000000000 --- a/middleware.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.utils.translation import LANGUAGE_SESSION_KEY - -class SetLanguage(object): - def setUserLanguage(self,request,exception): - request.session[LANGUAGE_SESSION_KEY] = "pt-pt" - return "Hello" \ No newline at end of file diff --git a/plogical/backupUtilities.py b/plogical/backupUtilities.py index 266b5ac5a..afb0b82cb 100644 --- a/plogical/backupUtilities.py +++ b/plogical/backupUtilities.py @@ -76,18 +76,24 @@ class backupUtilities: p.start() pid = open(backupPath + 'pid', "w") pid.write(str(p.pid)) - pid.close() except BaseException,msg: logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [initiateBackup]") @staticmethod - def startRestore(backupName, backupNames): + def startRestore(backupName, dir): try: - backupFileName = backupName.strip(".tar.gz") - completPath = "/home/backup/" + backupFileName - originalFile = "/home/backup/" + backupName + if dir == None: + backupFileName = backupName.strip(".tar.gz") + completPath = "/home/backup/" + backupFileName ## without extension + originalFile = "/home/backup/" + backupName ## with extension + else: + backupFileName = backupName.strip(".tar.gz") + completPath = "/home/backup/transfer-"+str(dir)+"/"+backupFileName ## without extension + originalFile = "/home/backup/transfer-"+str(dir)+"/"+backupName ## with extension + + pathToCompressedHome = completPath + "/public_html.tar.gz" @@ -115,7 +121,7 @@ class backupUtilities: ## creating website and its dabases try: - finalData = json.dumps({'backupFile': backupName}) + finalData = json.dumps({'backupFile': backupName,"dir":dir}) r = requests.post("http://localhost:5003/websites/CreateWebsiteFromBackup", data=finalData) data = json.loads(r.text) @@ -183,9 +189,9 @@ class backupUtilities: logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [startRestore]") @staticmethod - def initiateRestore(backupName): + def initiateRestore(backupName,dir): try: - p = Process(target=backupUtilities.startRestore, args=(backupName, backupName,)) + p = Process(target=backupUtilities.startRestore, args=(backupName, dir,)) p.start() except BaseException, msg: logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [initiateRestore]") @@ -379,17 +385,16 @@ class backupUtilities: verifyHostKey.sendline("yes") except pexpect.TIMEOUT, msg: - logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [verifyHostKey]") + logging.CyberCPLogFileWriter.writeToFile("Timeout [verifyHostKey]") return 0 except pexpect.EOF, msg: - logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [verifyHostKey]") + logging.CyberCPLogFileWriter.writeToFile("EOF [verifyHostKey]") return 0 except BaseException, msg: logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [verifyHostKey]") return 0 - @staticmethod def createBackupDir(IPAddress,IPAddressA): diff --git a/plogical/remoteBackup.py b/plogical/remoteBackup.py index d15ea9f65..0302728f9 100644 --- a/plogical/remoteBackup.py +++ b/plogical/remoteBackup.py @@ -15,6 +15,8 @@ from websiteFunctions.models import Websites from plogical.virtualHostUtilities import virtualHostUtilities from plogical.installUtilities import installUtilities from plogical.mysqlUtilities import mysqlUtilities +from multiprocessing import Process +from shutil import move,rmtree class remoteBackup: @@ -37,7 +39,7 @@ class remoteBackup: return [0, msg] @staticmethod - def startRestore(backupName, backupDir, admin, backupLogPath): + def startRestoreTemp(backupName, backupDir, admin, backupLogPath): try: adminEmail = admin.email @@ -189,13 +191,95 @@ class remoteBackup: logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [startRestore]") @staticmethod - def initiateRestore(backupDir, admin, backupLogPath): + def startRestore(backupDir,backupLogPath,dir): try: ext = ".tar.gz" + for backup in os.listdir(backupDir): + + writeToFile = open(backupLogPath, "a") + + writeToFile.writelines("\n") + writeToFile.writelines("\n") + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " Starting restore for: "+backup+".\n") + + writeToFile.close() + if backup.endswith(ext): - remoteBackup.startRestore(backup, backupDir, admin, backupLogPath) - installUtilities.reStartLiteSpeed() + finalData = json.dumps({'backupFile': backup,"dir":dir}) + r = requests.post("http://localhost:5003/backup/submitRestore", data=finalData) + data = json.loads(r.text) + + logging.CyberCPLogFileWriter.writeToFile(r.text) + + if data['restoreStatus'] == 1: + + while (1): + finalData = json.dumps({'backupFile': backup, "dir": dir}) + r = requests.post("http://localhost:5003/backup/restoreStatus", data=finalData) + data = json.loads(r.text) + + logging.CyberCPLogFileWriter.writeToFile(r.text) + + if data['status'] == "Done": + writeToFile = open(backupLogPath, "a") + writeToFile.writelines("\n") + writeToFile.writelines("\n") + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " Restore Completed.\n") + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " #########################################\n") + writeToFile.close() + break + elif data['status'] == "Website already exists": + writeToFile = open(backupLogPath, "a") + writeToFile.writelines("\n") + writeToFile.writelines("\n") + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " Website associated with this backup already exists.\n") + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " #########################################\n") + writeToFile.close() + logging.CyberCPLogFileWriter.writeToFile( + "Website associated with this backup already exists") + break + elif data['status'] == 0: + time.sleep(2) + + writeToFile = open(backupLogPath, "a") + writeToFile.writelines("\n") + writeToFile.writelines("\n") + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " Waiting for restore to complete.\n") + writeToFile.close() + + pass + elif data['status'] == "Not able to create Account and databases, aborting.": + writeToFile = open(backupLogPath, "a") + writeToFile.writelines("\n") + writeToFile.writelines("\n") + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " Not able to create Account and databases, aborting.\n") + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " #########################################\n") + writeToFile.close() + logging.CyberCPLogFileWriter.writeToFile( + "Not able to create Account and databases, aborting.") + break + else: + time.sleep(3) + + writeToFile = open(backupLogPath, "a") + writeToFile.writelines("\n") + writeToFile.writelines("\n") + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " Waiting for restore to complete.\n") + writeToFile.close() + + pass + else: + logging.CyberCPLogFileWriter.writeToFile("Could not start restore process for: "+backup) writeToFile = open(backupLogPath, "a") @@ -210,8 +294,12 @@ class remoteBackup: logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [initiateRestore]") @staticmethod - def remoteRestore(backupDir, admin): + def remoteRestore(backupDir, dir): try: + + ## dir is transfer-### + # backupDir is /home/backup/transfer-### + backupLogPath = backupDir + "/backup_log" writeToFile = open(backupLogPath, "a+") @@ -224,6 +312,7 @@ class remoteBackup: writeToFile.writelines("############################\n") writeToFile.writelines("\n") writeToFile.writelines("\n") + writeToFile.close() if os.path.exists(backupDir): pass @@ -231,12 +320,17 @@ class remoteBackup: return [0, 'No such directory found'] - thread.start_new_thread(remoteBackup.initiateRestore, (backupDir, admin, backupLogPath)) + p = Process(target=remoteBackup.startRestore, args=(backupDir, backupLogPath,dir,)) + p.start() return [1, 'Started'] + pid = open(destination + '/pid', "w") + pid.write(str(p.pid)) + pid.close() + except BaseException, msg: - logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [getKey]") + logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [remoteRestore]") return [0, msg] @staticmethod @@ -306,27 +400,98 @@ class remoteBackup: @staticmethod - def sendBackup(backupPath, IPAddress, writeToFile, dir): + def sendBackup(completedPathToSend, IPAddress, folderNumber,writeToFile): try: - command = 'rsync -avz -e "ssh -i /root/.ssh/cyberpanel" ' + backupPath + ' root@' + IPAddress + ':' + dir + "/" + ## complete path is a path to the file need to send + + command = 'rsync -avz -e "ssh -i /root/.ssh/cyberpanel" ' + completedPathToSend + ' root@' + IPAddress + ':/home/backup/transfer-'+folderNumber subprocess.call(shlex.split(command), stdout=writeToFile) except BaseException, msg: logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [startBackup]") @staticmethod - def backupProcess(ipAddress, dir, backupLogPath): + def backupProcess(ipAddress, dir, backupLogPath,folderNumber): try: + ## dir is without forward slash - writeToFile = open(backupLogPath, "a") for virtualHost in os.listdir("/home"): - remoteBackup.createBackup(virtualHost, ipAddress, writeToFile, dir) + + try: + + if virtualHost == "vmail" or virtualHost == "backup": + pass + + writeToFile = open(backupLogPath, "a") + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " Currently generating local backups for: " + virtualHost + "\n") + writeToFile.close() + finalData = json.dumps({'websiteToBeBacked': virtualHost}) + r = requests.post("http://localhost:5003/backup/submitBackupCreation", data=finalData) + + data = json.loads(r.text) + + fileName = data['tempStorage']+".tar.gz" + + completePathToBackupFile = fileName + + + while (1): + r = requests.post("http://localhost:5003/backup/backupStatus", data= finalData) + time.sleep(2) + data = json.loads(r.text) + + writeToFile = open(backupLogPath, "a") + + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " Waiting for backup to complete.. " + "\n") + + writeToFile.close() + + + if data['status'] == 0: + + writeToFile = open(backupLogPath, "a") + + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " Local Backup Completed for: " +virtualHost + "\n") + + + ## move the generated backup file to specified destination + + if os.path.exists(completePathToBackupFile): + move(completePathToBackupFile,dir) + + completedPathToSend = dir +"/" + completePathToBackupFile.split("/")[-1] + + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " Sending " + completedPathToSend +" to "+ipAddress +".\n") + + + remoteBackup.sendBackup(completedPathToSend,ipAddress,str(folderNumber),writeToFile) + + writeToFile.writelines("[" + time.strftime( + "%I-%M-%S-%a-%b-%Y") + "]" + " #############################################" + "\n") + + writeToFile.close() + break + except: + pass + + writeToFile = open(backupLogPath, "a") writeToFile.writelines("[" + time.strftime( - "%I-%M-%S-%a-%b-%Y") + "]" + " Remote Backup Complete" + "\n") - writeToFile.writelines("completed[success]\n") + "%I-%M-%S-%a-%b-%Y") + "]" + " Backups are successfully generated and received on: " + ipAddress + "\n") + writeToFile.close() + + ## removing local directory where backups were generated + time.sleep(5) + rmtree(dir) + + + except BaseException, msg: logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [backupProcess]") @@ -350,6 +515,8 @@ class remoteBackup: writeToFile.writelines("\n") writeToFile.writelines("\n") + writeToFile.close() + ## fix yes/no backupUtil.backupUtilities.verifyHostKey(ipAddress) @@ -368,7 +535,12 @@ class remoteBackup: return [0, "Host is down"] - thread.start_new_thread(remoteBackup.backupProcess, (ipAddress, destination, backupLogPath)) + p = Process(target=remoteBackup.backupProcess, args=(ipAddress, destination, backupLogPath,dir,)) + p.start() + + pid = open(destination + '/pid', "w") + pid.write(str(p.pid)) + pid.close() return [1, None] diff --git a/plogical/sslUtilities.py b/plogical/sslUtilities.py index b0916e9f0..960a4ba22 100644 --- a/plogical/sslUtilities.py +++ b/plogical/sslUtilities.py @@ -55,6 +55,7 @@ class sslUtilities: data = open("/usr/local/lsws/conf/httpd_config.conf").readlines() writeDataToFile = open("/usr/local/lsws/conf/httpd_config.conf", 'w') sslCheck = 0 + for items in data: if (items.find("listener SSL")>-1): sslCheck = 1 diff --git a/websiteFunctions/views.py b/websiteFunctions/views.py index 317d69e35..06084c45b 100644 --- a/websiteFunctions/views.py +++ b/websiteFunctions/views.py @@ -1268,6 +1268,14 @@ def CreateWebsiteFromBackup(request): data = json.loads(request.body) backupFile = data['backupFile'].strip(".tar.gz") + originalFile = "/home/backup/" + data['backupFile'] + + if not os.path.exists(originalFile): + dir = data['dir'] + path = "/home/backup/transfer-"+str(dir)+"/"+backupFile + else: + path = "/home/backup/" + backupFile + admin = Administrator.objects.get(pk=1) websiteOwner = admin.userName @@ -1276,7 +1284,6 @@ def CreateWebsiteFromBackup(request): ## open meta file to read data - path = "/home/backup/" + backupFile data = open(path + "/meta", 'r').readlines() domain = data[0].strip('\n')