andre преди 4 години
родител
ревизия
d18d279de0
променени са 134 файла, в които са добавени 1814 реда и са изтрити 2457 реда
  1. 128 1
      app/Config/Packages/Provisioning.php
  2. 2 2
      app/Config/configuration.yml
  3. 1 0
      app/Config/cron.yml
  4. 20 0
      app/Enum/CustomField.php
  5. 5 0
      app/Helpers/ProxmoxAddonNotInstalledException.php
  6. 30 5
      app/Hooks/AdminAreaFooterOutput.php
  7. 39 10
      app/Hooks/ClientAreaPrimarySidebar.php
  8. 1 3
      app/Http/Actions/ChangePassword.php
  9. 60 16
      app/Http/Actions/ChangeUserRole.php
  10. 1 1
      app/Http/Actions/MetaData.php
  11. 4 2
      app/Http/Actions/ResetBandwidth.php
  12. 58 11
      app/Http/Actions/TestConnection.php
  13. 3 1
      app/Http/Admin/LoggerManager.php
  14. 88 1
      app/Http/Client/BackupJob.php
  15. 19 0
      app/Http/Client/Console.php
  16. 24 0
      app/Http/Client/Disk.php
  17. 4 2
      app/Http/Client/FirewallOption.php
  18. 14 1
      app/Http/Client/TaskHistory.php
  19. 83 7
      app/UI/Admin/Product/Forms/VirtualizationChangeForm.php
  20. 30 0
      app/UI/Admin/Product/Sections/AdminNotificationSection.php
  21. 6 0
      app/UI/Admin/Product/Sections/BackupSection.php
  22. 9 0
      app/UI/Admin/Product/Sections/FirewallSection.php
  23. 15 1
      app/UI/Admin/Product/Sections/Lxc/ClientAreaSection.php
  24. 5 0
      app/UI/Admin/Product/Sections/Lxc/ConfigurableOptionUnitsSection.php
  25. 5 0
      app/UI/Admin/Product/Sections/Lxc/MountPointSection.php
  26. 15 0
      app/UI/Admin/Product/Sections/Qemu/AdditonalDisk.php
  27. 6 0
      app/UI/Admin/Product/Sections/Qemu/CloudInitSection.php
  28. 1 0
      app/UI/Admin/Product/Sections/Qemu/ConfigurableOptionUnitsSection.php
  29. 4 0
      app/UI/Admin/Product/Sections/Qemu/ContainerSection.php
  30. BIN
      app/UI/Admin/Product/Sections/Qemu/DiskSection.php
  31. BIN
      app/UI/Admin/Templates/assets/img/buttons/backupJob.png
  32. BIN
      app/UI/Admin/Templates/assets/img/buttons/deleteButton.png
  33. BIN
      app/UI/Admin/Templates/assets/img/buttons/disk.png
  34. BIN
      app/UI/Admin/Templates/assets/img/buttons/network.png
  35. BIN
      app/UI/Admin/Templates/assets/img/buttons/rebootButton.png
  36. BIN
      app/UI/Admin/Templates/assets/img/buttons/reinstall.png
  37. BIN
      app/UI/Admin/Templates/assets/img/buttons/shutdownButton.png
  38. BIN
      app/UI/Admin/Templates/assets/img/buttons/snapshot.png
  39. BIN
      app/UI/Admin/Templates/assets/img/buttons/spice.png
  40. BIN
      app/UI/Admin/Templates/assets/img/buttons/stopButton.png
  41. BIN
      app/UI/Admin/Templates/assets/img/buttons/taskHistory.png
  42. 5 0
      app/UI/Admin/Templates/assets/img/buttons/vnc.png
  43. 13 19
      app/UI/Admin/User/Pages/UserDataTable.php
  44. 4 2
      app/UI/Backup/Forms/DeleteForm.php
  45. 1 1
      app/UI/Backup/Modals/DeleteMassModal.php
  46. 35 4
      app/UI/Backup/Providers/BackupProvider.php
  47. 1 1
      app/UI/BackupJob/Buttons/CreateButton.php
  48. 2 8
      app/UI/BackupJob/Buttons/UpdateButton.php
  49. 1 7
      app/UI/BackupJob/Forms/DeleteForm.php
  50. 20 1
      app/UI/BackupJob/Modals/CreateModal.php
  51. 8 0
      app/UI/Client/Templates/assets/css/integration.css
  52. BIN
      app/UI/Client/Templates/assets/img/buttons/backup.png
  53. BIN
      app/UI/Client/Templates/assets/img/buttons/backupJob.png
  54. BIN
      app/UI/Client/Templates/assets/img/buttons/deleteButton.png
  55. BIN
      app/UI/Client/Templates/assets/img/buttons/disk.png
  56. BIN
      app/UI/Client/Templates/assets/img/buttons/network.png
  57. BIN
      app/UI/Client/Templates/assets/img/buttons/rebootButton.png
  58. BIN
      app/UI/Client/Templates/assets/img/buttons/reinstall.png
  59. BIN
      app/UI/Client/Templates/assets/img/buttons/shutdownButton.png
  60. BIN
      app/UI/Client/Templates/assets/img/buttons/snapshot.png
  61. BIN
      app/UI/Client/Templates/assets/img/buttons/spice.png
  62. BIN
      app/UI/Client/Templates/assets/img/buttons/stopButton.png
  63. BIN
      app/UI/Client/Templates/assets/img/buttons/taskHistory.png
  64. BIN
      app/UI/Client/Templates/assets/img/buttons/vnc.png
  65. BIN
      app/UI/Client/Templates/assets/img/rebootButton.png
  66. BIN
      app/UI/Client/Templates/assets/img/shutdownButton.png
  67. BIN
      app/UI/Client/Templates/assets/img/startButton.png
  68. BIN
      app/UI/Client/Templates/assets/img/stopButton.png
  69. 9 3
      app/UI/Client/Templates/assets/js/backup/index.js
  70. 23 1
      app/UI/Client/Templates/assets/js/backupJob/index.js
  71. 1 1
      app/UI/Client/Templates/assets/js/graph/index.js
  72. 62 0
      app/UI/Disk/Forms/DeleteForm.php
  73. 47 0
      app/UI/Firewall/Buttons/DownloadButton.php
  74. 22 0
      app/UI/Firewall/Buttons/EnableSwitchButton.php
  75. 65 0
      app/UI/Firewall/Buttons/UpRuleButton.php
  76. 60 0
      app/UI/Firewall/Buttons/UpdateRuleButton.php
  77. 20 0
      app/UI/Firewall/Forms/RuleForm.php
  78. 13 1
      app/UI/Firewall/Modals/UpdateGroupModal.php
  79. 24 0
      app/UI/Firewall/Providers/FirewallProvider.php
  80. 20 16
      app/UI/FirewallOption/Buttons/UpdateButton.php
  81. 1 1
      app/UI/FirewallOption/Modals/CreateModal.php
  82. 4 0
      app/UI/FirewallOption/Providers/FirewallOptionProvider.php
  83. 0 1
      app/UI/Home/Buttons/RedirectButton.php
  84. 4 0
      app/UI/Home/Buttons/ShutdownButton.php
  85. 4 0
      app/UI/Home/Buttons/StartButton.php
  86. 4 0
      app/UI/Home/Buttons/StopButton.php
  87. 7 0
      app/UI/Home/Forms/MigrateForm.php
  88. 11 8
      app/UI/Home/Forms/RebootForm.php
  89. 3 0
      app/UI/Home/Pages/ServiceManagement.php
  90. 1 1
      app/UI/Home/Providers/StatusProvider.php
  91. 2 2
      app/UI/Home/Templates/pages/serviceActions.tpl
  92. 3 2
      app/UI/Home/Templates/pages/vpsBuild.tpl
  93. 2 1
      app/UI/MountPoint/Buttons/BackupSwitchButton.php
  94. 25 1
      app/UI/Reinstall/Pages/TemplateDataTable.php
  95. 32 0
      app/UI/Resources/Pages/ResourcesContainer.php
  96. 39 0
      app/UI/Resources/Providers/BackupResourceProvider.php
  97. 5 0
      app/UI/Resources/Templates/pages/resourcesContainer.tpl
  98. 58 0
      app/UI/Resources/Templates/pages/resourcesContainer_components.js
  99. 37 0
      app/UI/Resources/Templates/pages/resourcesContainer_components.tpl
  100. 1 1
      app/UI/ServiceInformation/Buttons/SshPrivateKeyDownloadButton.php
  101. 7 5
      app/UI/ServiceInformation/Forms/SshPublicKeyDownloadForm.php
  102. 35 21
      app/UI/ServiceInformation/Modals/SshPublicKeyDownloadModal.php
  103. 19 6
      app/UI/ServiceInformation/Providers/UpdateProvider.php
  104. 14 6
      app/UI/ServiceInformation/Templates/pages/serviceInformation.tpl
  105. 4 4
      app/UI/Snapshot/Buttons/CreateButton.php
  106. 7 4
      app/UI/Snapshot/Forms/CreateJobForm.php
  107. 11 15
      app/UI/Snapshot/Forms/DeleteForm.php
  108. 18 9
      app/UI/Snapshot/Forms/RollbackForm.php
  109. 20 10
      app/UI/Snapshot/Providers/SnapshotProvider.php
  110. 1 1
      app/UI/TaskHistory/Buttons/InfoButton.php
  111. 15 1
      core/App/Controllers/Instances/Addon/Deactivate.php
  112. 2 2
      core/Http/AbstractController.php
  113. 2 1
      core/Http/UI/FormResponse.php
  114. 28 14
      core/UI/Builder/Context.php
  115. 11 5
      core/UI/Container.php
  116. 58 25
      core/UI/Traits/HideByDefaultIfNoData.php
  117. 1 1
      core/UI/Traits/Icon.php
  118. 14 0
      core/UI/Widget/Forms/DataProviders/BaseModelDataProvider.php
  119. 2 1
      core/UI/Widget/Forms/Fields/Hidden.php
  120. 78 16
      core/UI/Widget/Forms/Fields/InputGroupElements/InputAddon.php
  121. 0 1757
      langs/german.php
  122. 0 33
      langs/match.php
  123. 2 2
      logo.png
  124. 15 0
      packages/Provisioning/Config/PackageConfiguration.php
  125. 4 1
      storage/.htaccess
  126. 2 1
      templates/admin/assets/fonts/icons/Material-Design-Iconic-Font.eot
  127. 1 11
      templates/admin/assets/js/defaultComponents/__vhook_integration.js
  128. 2 1
      templates/client/default/assets/css/mg_styles.css
  129. 9 3
      templates/client/default/assets/js/defaultComponents/__vhook_integration.js
  130. 3 0
      templates/client/default/assets/js/defaultComponents/ajaxFieldForDataTable.js
  131. 11 351
      templates/client/default/assets/js/defaultComponents/dataTableSelectFilter.js
  132. 36 0
      templates/client/default/controlers/pageNotFound.tpl
  133. 1 1
      templates/client/default/ui/core/default/widget/forms/fields/hidden.tpl
  134. 2 2
      vendor/symfony/http-foundation/Tests/ResponseTest.php

+ 128 - 1
app/Config/Packages/Provisioning.php

@@ -6,8 +6,12 @@ namespace ModulesGarden\Servers\ProxmoxVps\App\Config\Packages;
 use MGProvision\Proxmox\v2\ProxmoxApiException;
 use MGProvision\Proxmox\v2\repository\ClusterResourcesRepository;
 use MGProvision\Proxmox\v2\repository\FileRepository;
+use MGProvision\Proxmox\v2\repository\NodeRepository;
 use MGProvision\Proxmox\v2\repository\StorageRepository;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Helper\VmidHelper;
 use ModulesGarden\ProxmoxAddon\App\Models\CloudInitScript;
+use ModulesGarden\ProxmoxAddon\App\Models\IpAddress;
 use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
 use ModulesGarden\Servers\ProxmoxVps\App\Libs\AwsIntegration\ClientWrapper;
@@ -26,6 +30,7 @@ class WhmcsService extends AppPackageConfiguration
     use WhmcsParams;
     use ProductService;
     use ApiService;
+    use VmidHelper;
 
     const APP_CONFIGURATION =
         [
@@ -110,6 +115,10 @@ class WhmcsService extends AppPackageConfiguration
             {
                 if ($this->configuration()->isLxc())
                 { //lxc
+                    $subOptions[]               = [
+                        Enum::OPTION_SUB_NAME  => '0|None',
+                        Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
+                    ];
                     //node
                     $node = $this->getDefaultNode();
                     //storages
@@ -476,6 +485,10 @@ class WhmcsService extends AppPackageConfiguration
             Enum::OPTION_NAME => 'VM Template|VM Template',
             Enum::OPTION_TYPE => Enum::OPTION_TYPE_DROPDOWN,
         ];
+        $configOptions[] = [
+            Enum::OPTION_NAME => ConfigurableOption::ARCHIVE.'|Archive',
+            Enum::OPTION_TYPE => Enum::OPTION_TYPE_DROPDOWN,
+        ];
         $configOptions[] = [
             Enum::OPTION_NAME => 'Network Rate|Network Rate',
             Enum::OPTION_TYPE => Enum::OPTION_TYPE_DROPDOWN,
@@ -503,10 +516,19 @@ class WhmcsService extends AppPackageConfiguration
                 Enum::OPTION_TYPE => Enum::OPTION_TYPE_DROPDOWN,
             ];
         }
+        $configOptions[] = [
+            Enum::OPTION_NAME => 'tag|Tag',
+            Enum::OPTION_TYPE => Enum::OPTION_TYPE_DROPDOWN,
+            Enum::HIDDEN => 1
+        ];
+        $configOptions[] = [
+            Enum::OPTION_NAME => ConfigurableOption::STORAGE.'|Storage Disk Space',
+            Enum::OPTION_TYPE => Enum::OPTION_TYPE_DROPDOWN,
+        ];
         return $configOptions;
     }
 
-    public function cloudInitScriptGetSubOptions()
+    public function ciscriptGetSubOptions()
     {
         $subOptions = [];
         //kvm
@@ -525,4 +547,109 @@ class WhmcsService extends AppPackageConfiguration
         }
         return $subOptions;
     }
+
+    public function tagGetSubOptions()
+    {
+        $subOptions = [];
+        $subOptions[]               = [
+            Enum::OPTION_SUB_NAME  => '0|Disabled',
+            Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
+        ];
+        foreach (IpAddress::select("tag")->whereNotNull("tag")->where("tag", ">", 0)->groupBy("tag")->pluck("tag")->all() as $tag) {
+            $subOptions[]               = [
+                Enum::OPTION_SUB_NAME  => sprintf("%s|%s",$tag,$tag),
+                Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
+            ];
+        }
+        return $subOptions;
+    }
+
+    public function archiveGetSubOptions()
+    {
+        $subOptions = [];
+        try
+        {
+            //node
+            $node = $this->getDefaultNode();
+            //storages
+            $storageRepository = new StorageRepository();
+            $storageRepository->findByNodes([$node->getNode()])
+                ->findEnabed();
+            //nodes
+            $nodeRepository = new NodeRepository();
+            $nodeRepository->setApi($this->api());
+            $nodeRepository->findOnline(true);
+            //archive
+            $fileRepository = new FileRepository();
+            $fileRepository->setApi($this->api());
+            //each node
+            $fileRepository->findByNodes($nodeRepository->fetchArray());
+            //each storage
+            $fileRepository->findByStorages($storageRepository->fetchAsArray());
+            $subOptions[]               = [
+                Enum::OPTION_SUB_NAME  => '0|None',
+                Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
+            ];
+            //kvm
+            if ($this->configuration()->isLxc())
+            {
+                $fileRepository->findBackupLxcTemplates();
+            }else{
+                $fileRepository->findBackupQemuTemplates();
+            }
+            foreach ($fileRepository->fetch() as $file)
+            {
+                if($this->vmidExistInWhmcs($file->getVmid())){
+                    continue;
+                }
+                $subOptions[] = [
+                    Enum::OPTION_SUB_NAME  => sprintf("%s:%s|%s",$file->getNode(),$file->getVolid(),$file->formatVolid()),
+                    Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
+                ];
+            }
+            return $subOptions;
+        }
+        catch (ProxmoxApiException $ex)
+        {
+            return $subOptions;
+        }
+
+    }
+
+    public function storageGetSubOptions()
+    {
+        $subOptions = [];
+        try
+        {
+            $subOptions[]               = [
+                Enum::OPTION_SUB_NAME  => '0|None',
+                Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
+            ];
+            $unit = strtoupper($this->configuration()->getDiskUnit());
+            //node
+            $node = $this->getDefaultNode();
+            //storages
+            $storageRepository = new StorageRepository();
+            $storageRepository->findByNodes([$node->getNode()])
+                ->findEnabed();
+            $sizes =[100,200];
+            foreach ($storageRepository->fetch() as $storage)
+            {
+                foreach ($sizes as $size){
+                    $subOptions[] = [
+                        Enum::OPTION_SUB_NAME  => sprintf("%s:%s|%s %s %s",$storage->getStorage(), $size,$storage->getStorage(),$size, $unit),
+                        Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
+                    ];
+                }
+            }
+            return $subOptions;
+        }
+        catch (ProxmoxApiException $ex)
+        {
+            return $subOptions;
+        }
+
+    }
+
+
 }

+ 2 - 2
app/Config/configuration.yml

@@ -1,7 +1,7 @@
 version: '2.7.0'
 systemName: 'proxmoxVPS'
-name: 'Proxmox VPS'
-description: 'Proxmox VPS For WHMCS.<br>For more info visit our <a href="http://www.docs.modulesgarden.com/CHANGE_ME" style="color: #4169E1;" target="_blank">Wiki</a>.'
+name: 'Proxmox VE VPS'
+description: 'Proxmox VE VPS For WHMCS.<br>For more info visit our <a href="http://www.docs.modulesgarden.com/CHANGE_ME" style="color: #4169E1;" target="_blank">Wiki</a>.'
 clientareaName: 'MG Demo'
 author: '<a href="http://www.modulesgarden.com" targer="_blank">ModulesGarden</a>'
 moduleIcon: 'ip_manager'

+ 1 - 0
app/Config/cron.yml

@@ -28,4 +28,5 @@ final  class ConfigurableOption extends Enum
     const BANDWIDTH = 'Bandwidth';
     const SNAPSHOT_JOBS = 'snapshotJobs';
     const CICUSTOM = 'cicustom';
+    const ARCHIVE          = "archive";
 }

+ 20 - 0
app/Enum/CustomField.php

@@ -0,0 +1,20 @@
+<?php
+
+
+namespace ModulesGarden\Servers\ProxmoxVps\App\Helpers;
+
+
+trait LicenseValidator
+{
+
+    public function isLicensePayingFullAnnuallyPrice($force = false){
+        if(!function_exists('proxmoxVPS_GetLicenseData')){
+            return true;
+        }
+        $licenseData = proxmoxVPS_GetLicenseData($force);
+        if(is_array($licenseData) && isset($licenseData['isPayingFullAnnuallyPrice']) && $licenseData['isPayingFullAnnuallyPrice'] !=1){
+            return false;
+        }
+        return true;
+    }
+}

+ 5 - 0
app/Helpers/ProxmoxAddonNotInstalledException.php

@@ -61,5 +61,10 @@ class UrlServiceHelper
         return $this->urlService->getUrl();
     }
 
+    public function getDownloadFirewallRulesUrl()
+    {
+        return $this->urlService->getUrl('firewall', 'download');
+    }
+
 
 }

+ 30 - 5
app/Hooks/AdminAreaFooterOutput.php

@@ -19,7 +19,7 @@
 
 use Illuminate\Database\Capsule\Manager as DB;
 use ModulesGarden\ProxmoxAddon\App\Repositories\Vps\ProductConfigurationRepository;
-use ModulesGarden\Servers\ProxmoxVps\App\Enum\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
 
 $hookManager->register(
     function ($vars)
@@ -81,7 +81,11 @@ $hookManager->register(
                     $configoptions = getCartConfigOptions($hosting->productId, $request->get('configoption'), $hosting->billingcycle);
                     $params        = \ModuleBuildParams($hosting->id);
                     $product       = new ProductConfigurationRepository($hosting->productId);
-                    if ($params['configoptions'][ConfigurableOption::DISK_SIZE])
+                    if($params['configoptions'][ConfigurableOption::STORAGE]){
+                        list($storage,$disk) = explode(":", $params['configoptions'][ConfigurableOption::STORAGE],2);
+                        \ModulesGarden\ProxmoxAddon\App\Services\Utility::unitFormat($disk, $product->getDiskUnit(), 'bytes');
+                    }
+                    elseif ($params['configoptions'][ConfigurableOption::DISK_SIZE])
                     {
                         $disk = $params['configoptions'][ConfigurableOption::DISK_SIZE];
                         \ModulesGarden\ProxmoxAddon\App\Services\Utility::unitFormat($disk, $product->getDiskUnit(), 'bytes');
@@ -137,7 +141,11 @@ $hookManager->register(
                             }
                         }
                     }
-                    if ($params['configoptions'][ConfigurableOption::DISK_SIZE])
+                    if($params['configoptions'][ConfigurableOption::STORAGE]){
+                        list($storage,$newDisk) = explode(":", $params['configoptions'][ConfigurableOption::STORAGE],2);
+                        \ModulesGarden\ProxmoxAddon\App\Services\Utility::unitFormat($newDisk, $product->getDiskUnit(), 'bytes');
+                    }
+                    elseif ($params['configoptions'][ConfigurableOption::DISK_SIZE])
                     {
                         $newDisk = $params['configoptions'][ConfigurableOption::DISK_SIZE];
                         \ModulesGarden\ProxmoxAddon\App\Services\Utility::unitFormat($newDisk, $product->getDiskUnit(), 'bytes');
@@ -254,7 +262,11 @@ $hookManager->register(
                     }
                 }
                 //disk
-                if ($params['configoptions'][ConfigurableOption::DISK_SIZE])
+                if($params['configoptions'][ConfigurableOption::STORAGE]){
+                    list($storage,$newDisk) = explode(":", $params['configoptions'][ConfigurableOption::STORAGE],2);
+                    \ModulesGarden\ProxmoxAddon\App\Services\Utility::unitFormat($newDisk, $product->getDiskUnit(), 'bytes');
+                }
+                elseif ($params['configoptions'][ConfigurableOption::DISK_SIZE])
                 {
                     $newDisk = $params['configoptions'][ConfigurableOption::DISK_SIZE];
                     \ModulesGarden\ProxmoxAddon\App\Services\Utility::unitFormat($newDisk, $product->getDiskUnit(), 'bytes');
@@ -344,7 +356,20 @@ $hookManager->register(
                              if($("#main-content .col-md-12").size()){
                                   $("#main-content .col-md-12").hide();
                              }
-                           
+                             //twenty one
+                             if($(".card .card-body .alert-info").size()){
+                                 $(".card .card-body .alert-info").hide();
+                             }
+                             if($(".card .card-body .table.table-striped").size()){
+                                 $(".card .card-body .table.table-striped").hide();
+                             }
+                             if($(".card .card-body .row").size()){
+                                 $(".card .card-body .row").hide();
+                             }
+                             if($(".card .card-body .form-group").size()){
+                                 $(".card .card-body .form-group").hide();
+                             }
+                             
                         });
                     </script>';
             }

+ 39 - 10
app/Hooks/ClientAreaPrimarySidebar.php

@@ -24,12 +24,14 @@ use ModulesGarden\ProxmoxAddon\App\Events\Vps\LxcUpdateEvent;
 use ModulesGarden\ProxmoxAddon\App\Events\Vps\QemuUpdateEvent;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\Agent\ConfigureNetworkJob;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\LoadBalancer as LoadBalancer;
+use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\MoveDiskJob;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\RebootVmJob;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\Reinstall\BackupVmJob;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\Reinstall\CreateVmJob;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\Reinstall\DeleteVmJob;
 use ModulesGarden\ProxmoxAddon\App\Libs\Format;
 use ModulesGarden\ProxmoxAddon\App\Models\Job;
+use ModulesGarden\ProxmoxAddon\App\Models\ServerGroupItem;
 use ModulesGarden\ProxmoxAddon\App\Models\Whmcs\ToDoList;
 use ModulesGarden\ProxmoxAddon\App\Models\Whmcs\Upgrade;
 use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
@@ -48,7 +50,7 @@ use ModulesGarden\Servers\ProxmoxVps\Core\UI\Traits\WhmcsParams;
 use function ModulesGarden\ProxmoxAddon\Core\Helper\fire;
 use function ModulesGarden\ProxmoxAddon\Core\Helper\queue;
 use function ModulesGarden\ProxmoxAddon\Core\Helper\sl;
-use ModulesGarden\Servers\ProxmoxVps\App\Enum\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
 
 
 class ChangePackage extends AddonController
@@ -98,9 +100,9 @@ class ChangePackage extends AddonController
             if (!Utility::isIpManagerProxmoxVPSIntegration())
             {
                 list($requestIPv4, $requestIPv6) = $this->networkService->getIpAddressesRequest();
-
-                $this->networkService->hasIp($requestIPv4, $requestIPv6, $this->vm()->getNode())
-                    ->addIp($requestIPv4, $requestIPv6, $this->vm()->getNode());
+                $bridge = $this->configuration()->getBridge();
+                $this->networkService->hasIp($requestIPv4, $requestIPv6, $this->vm()->getNode(),$bridge)
+                    ->addIp($requestIPv4, $requestIPv6, $this->vm()->getNode(),$bridge);
             }
             //Unassing ip addresses and  delete network
             if(!Utility::isIpManagerProxmoxVPSIntegration())
@@ -116,7 +118,11 @@ class ChangePackage extends AddonController
                 //Disk
                 $disk = $this->configuration()->getDiskSize();
                 Utility::unitFormat($disk, "gb", 'bytes');
-                if ($this->getWhmcsConfigOption(ConfigurableOption::DISK_SIZE))
+                if($this->getWhmcsConfigOption(ConfigurableOption::STORAGE)){
+                    list($storage,$disk) = explode(":", $this->getWhmcsConfigOption(ConfigurableOption::STORAGE),2);
+                    Utility::unitFormat($disk, $this->configuration()->getDiskUnit(), 'bytes');
+                }
+                elseif ($this->getWhmcsConfigOption(ConfigurableOption::DISK_SIZE))
                 {
                     $disk = $this->getWhmcsConfigOption(ConfigurableOption::DISK_SIZE);
                     Utility::unitFormat($disk, $this->configuration()->getDiskUnit(), 'bytes');
@@ -162,6 +168,15 @@ class ChangePackage extends AddonController
                             ->findByDisk($disk);
                         if ($loadBalancerNodes->isEmpty())
                         {
+                            if($this->configuration()->getServerGroup()){
+                                $nodes = ServerGroupItem::ofGroupIdsAndServerId($this->configuration()->getServerGroup(), $this->getWhmcsParamByKey('serverid'))
+                                    ->pluck("node")
+                                    ->toArray();
+                                if(empty($nodes)){
+                                    throw new \InvalidArgumentException("LoadBalancer: Cannot find group for server #". $this->getWhmcsParamByKey('serverid'));
+                                }
+                                $loadBalancer->findByNodes($nodes);
+                            }
                             $loadBalancerNodes = $loadBalancer->findByVmCreate();
                             $nodesForUser      = $loadBalancer->findNotUser($this->getWhmcsParamByKey('userid'));
                             if (!$nodesForUser->isEmpty())
@@ -196,16 +211,25 @@ class ChangePackage extends AddonController
             }
             //hosting limit
             $this->saveUsageLimit();
+            //move disk
+            if($this->getWhmcsConfigOption(ConfigurableOption::STORAGE)){
+                list($storage,$diskSize) = explode(":", $this->getWhmcsConfigOption(ConfigurableOption::STORAGE),2);
+                $hdd = $this->vm()->getMasterHardDisk();
+                if($hdd->getStorage() != $storage && !Job::waiting()->ofJob(MoveDiskJob::class)->ofHostingId($this->getWhmcsParamByKey("serviceid"))->count()){
+                    $parent = queue(MoveDiskJob::class, ['hostingId' => $this->getWhmcsParamByKey('serviceid')], null, "hosting", $this->getWhmcsParamByKey("serviceid"));
+                }
+            }
+            if($this->configuration()->isAgentConfigureNetwork()){
+                $parent = queue(ConfigureNetworkJob::class, ['hostingId' => $this->getWhmcsParamByKey('serviceid')], $parent->id, "hosting", $this->getWhmcsParamByKey("serviceid"));
+            }
             //reboot
             if ($this->configuration()->isRebootVmAfterChangePackage() &&
                 $this->vm()->isRunning() &&
                 !Job::waiting()->ofJob(RebootVmJob::class)->ofHostingId($this->getWhmcsParamByKey("serviceid"))->count())
             {
-                $parentId = queue(RebootVmJob::class, ['hostingId' => $this->getWhmcsParamByKey('serviceid')], null, "hosting", $this->getWhmcsParamByKey("serviceid"));
-            }
-            if($this->configuration()->isAgentConfigureNetwork()){
-                $parentId = queue(ConfigureNetworkJob::class, ['hostingId' => $this->getWhmcsParamByKey('serviceid')], $parentId, "hosting", $this->getWhmcsParamByKey("serviceid"));
+                $parent = queue(RebootVmJob::class, ['hostingId' => $this->getWhmcsParamByKey('serviceid')], $parent->id, "hosting", $this->getWhmcsParamByKey("serviceid"));
             }
+
             //IP Filter
             if ($this->configuration()->isIpsetIpFilter())
             {
@@ -313,7 +337,12 @@ class ChangePackage extends AddonController
 
     protected function diskSizeValidation(){
         $diskSize = $this->configuration()->getDiskSize();
-        if ($this->getWhmcsConfigOption(ConfigurableOption::DISK_SIZE))
+
+        if($this->getWhmcsConfigOption(ConfigurableOption::STORAGE)){
+            list($storage,$diskSize) = explode(":", $this->getWhmcsConfigOption(ConfigurableOption::STORAGE),2);
+            Utility::unitFormat($diskSize, $this->configuration()->getDiskUnit(), 'bytes');
+        }
+        elseif ($this->getWhmcsConfigOption(ConfigurableOption::DISK_SIZE))
         {
             $diskSize = $this->getWhmcsConfigOption(ConfigurableOption::DISK_SIZE);
             Utility::unitFormat($diskSize, $this->configuration()->getDiskUnit(), 'bytes');

+ 1 - 3
app/Http/Actions/ChangePassword.php

@@ -59,9 +59,7 @@ class ChangePassword extends AddonController
                 $container['cipassword'] = $params['password'];
                 $this->vm()->updateConfig($container);
                 //restart
-                if ($this->configuration()->isRebootVmAfterChangePackage() &&
-                    $this->vm()->isRunning() &&
-                    !Job::waiting()->ofJob(RebootVmJob::class)->ofHostingId($this->getWhmcsParamByKey("serviceid"))->count())
+                if (!Job::waiting()->ofJob(RebootVmJob::class)->ofHostingId($this->getWhmcsParamByKey("serviceid"))->count())
                 {
                     queue(RebootVmJob::class, [], null, "hosting", $this->getWhmcsParamByKey("serviceid"));
                 }

+ 60 - 16
app/Http/Actions/ChangeUserRole.php

@@ -38,7 +38,7 @@ use ModulesGarden\Servers\ProxmoxVps\App\Helpers\ProxmoxAddonValidator;
 use ModulesGarden\Servers\ProxmoxVps\Core\App\Controllers\Instances\AddonController;
 use ModulesGarden\Servers\ProxmoxVps\Core\Models\Whmcs\Server;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Traits\WhmcsParams;
-use ModulesGarden\Servers\ProxmoxVps\App\Enum\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
 
 class CreateAccount extends AddonController
 {
@@ -111,8 +111,9 @@ class CreateAccount extends AddonController
                     $networkService = new NetworkService();
                     list($requestIPv4, $requestIPv6) = $networkService->getIpAddressesRequest();
                     $node = $this->getNode()->getNode();
-                    $networkService->hasIp($requestIPv4, $requestIPv6, $node)
-                        ->addIp($requestIPv4, $requestIPv6, $node);
+                    $bridge = $this->configuration()->getBridge();
+                    $networkService->hasIp($requestIPv4, $requestIPv6, $node, $bridge)
+                        ->addIp($requestIPv4, $requestIPv6, $node, $bridge);
                     $this->customFieldUpdate(CustomField::NODE, $node);
 
                 }
@@ -126,35 +127,67 @@ class CreateAccount extends AddonController
                 $ciuser =  $this->templateVm->config()['ciuser'];
                 $this->hosting()->update(['username' => $ciuser ?: 'Administrator' ]);
             }
+            elseif($this->templateVm instanceof Kvm && $this->templateVm->config()['ciuser']){
+                $ciuser =  $this->templateVm->config()['ciuser'];
+                $this->hosting()->update(['username' => $ciuser  ]);
+            }
             elseif($this->configuration()->isQemu() && $this->configuration()->getCiuser()){
                 $this->hosting()->update(['username' =>$this->configuration()->getCiuser() ]);
             }
                         //hosting limit
             $this->saveUsageLimit();
+            //os
+            if($this->isWhmcsConfigOption(ConfigurableOptioN::OS_TEMPLATE) && $this->getWhmcsConfigOption(ConfigurableOption::OS_TEMPLATE) !="0"){
+                $osTemplate = $this->getWhmcsConfigOption(ConfigurableOption::OS_TEMPLATE);
+            }else if( $this->isWhmcsConfigOption(ConfigurableOption::ARCHIVE) && $this->getWhmcsConfigOption(ConfigurableOption::ARCHIVE) !="0" ){
+                $archive = $this->getWhmcsConfigOption(ConfigurableOption::ARCHIVE);
+            } else if($this->isWhmcsConfigOption(ConfigurableOption::ISO_IMAGE) && $this->isWhmcsConfigOption(ConfigurableOption::ISO_IMAGE)!="0"){
+                $osTemplate = null;
+            }
+            else if($this->configuration()->getOsTemplate() && $this->configuration()->getOsTemplate()!="0"){
+                $osTemplate = $this->configuration()->getOsTemplate();
+            } else if($this->configuration()->archive && $this->configuration()->archive!="0"){
+                $archive = $this->configuration()->archive;
+            }
+            if(isset($archive) && $archive){ //archive
+                list($backupNode, $volid) = explode(":", $archive, 2);
+            }
             //Create task
             if ($this->configuration()->isLxc())
             {
                 $taskName = addon\App\Jobs\Vps\CreateLxcJob::class;
+
             }
-            else
+            else if ($this->configuration()->isQemu())
             {
-                if ($this->configuration()->isQemu())
+                //default task
+                $taskName   = addon\App\Jobs\Vps\CreateQemuJob::class;
+                //clone
+                if (isset($osTemplate) && $osTemplate)
                 {
-                    $taskName   = addon\App\Jobs\Vps\CreateQemuJob::class;
-                    $osTemplate = $this->getWhmcsConfigOption(ConfigurableOption::OS_TEMPLATE, $this->configuration()->getOsTemplate());
-                    if (!empty($osTemplate) && $osTemplate != "0")
-                    {
-                        $taskName = addon\App\Jobs\Vps\CloneQemuJob::class;
-                    }
+                    $taskName = addon\App\Jobs\Vps\CloneQemuJob::class;
+                }elseif(isset($archive) && $archive){ //archive
+                    $taskName = addon\App\Jobs\Vps\RestoreArchiveJob::class;
                 }
             }
             $arguments = [
-                'hostingId' => $this->getWhmcsParamByKey('serviceid')
+                'hostingId' => $this->getWhmcsParamByKey('serviceid'),
             ];
+            //create snippet
             if($this->configuration()->isQemu() && $this->hasSnippet()){
                 $parent = addon\Core\Helper\queue(addon\App\Jobs\Vps\CreateSnippet::class, $arguments, null, "hosting", $this->getWhmcsParamByKey("serviceid"));
             }
-            addon\Core\Helper\queue($taskName, $arguments, $parent->id, "hosting", $this->getWhmcsParamByKey("serviceid"));
+            $parent = addon\Core\Helper\queue($taskName, $arguments, $parent->id, "hosting", $this->getWhmcsParamByKey("serviceid"));
+            //Migrate Vm only for RestoreArchiveJob
+            if($backupNode && $node && $backupNode != $node){
+                $attributes = [
+                    "targetNode" => $node,
+                    "online"     => 1,
+                    'with-local-disks' => 1,
+                    'restart' => 1
+                ];
+                addon\Core\Helper\queue(addon\App\Jobs\Vps\MigrateVmJob::class, $attributes, $parent->id, "hosting", $this->getWhmcsParamByKey("serviceid"));
+            }
             return "success";
         }
         catch (\Exception $ex)
@@ -198,7 +231,7 @@ class CreateAccount extends AddonController
         if ($this->configuration()->isLxc())
         {
             //OS Template
-            if (!$this->getWhmcsConfigOption(ConfigurableOption::OS_TEMPLATE, $this->configuration()->getOsTemplate()) )
+            if (!$this->getWhmcsConfigOption(ConfigurableOption::OS_TEMPLATE, $this->configuration()->getOsTemplate()) &&  !$this->getWhmcsConfigOption(ConfigurableOption::ARCHIVE, $this->configuration()->archive) )
             {
                 $this->errors[] = "'OS Template' - is empty";
             }
@@ -261,6 +294,9 @@ class CreateAccount extends AddonController
         }
         //Disk size
         $diskSize = $this->getWhmcsConfigOption(ConfigurableOption::DISK_SIZE);
+        if($this->getWhmcsConfigOption(ConfigurableOption::STORAGE)){
+            list($storage,$diskSize) = explode(":", $this->getWhmcsConfigOption(ConfigurableOption::STORAGE),2);
+        }
         if ($diskSize && $this->configuration()->getDiskUnit() == "mb" && $diskSize < 1024)
         {
             $this->errors[] = sprintf("Disk size of %sMB cannot be  created", $diskSize);
@@ -462,7 +498,11 @@ class CreateAccount extends AddonController
             }
         }
         //Disk
-        if ($this->getWhmcsConfigOption(ConfigurableOption::DISK_SIZE))
+        if($this->getWhmcsConfigOption(ConfigurableOption::STORAGE)){
+            list($storage,$diskBytes ) = explode(":", $this->getWhmcsConfigOption(ConfigurableOption::STORAGE),2);
+            Utility::unitFormat($diskBytes , $this->configuration()->getDiskUnit(), 'bytes');
+        }
+        elseif ($this->getWhmcsConfigOption(ConfigurableOption::DISK_SIZE))
         {
             $diskBytes = $this->getWhmcsConfigOption(ConfigurableOption::DISK_SIZE);
             Utility::unitFormat($diskBytes, $this->configuration()->getDiskUnit(), 'bytes');
@@ -539,7 +579,11 @@ class CreateAccount extends AddonController
         $this->templateVm->setApi($this->api());
         //Disk
         $diskSize = $this->configuration()->getDiskSize();
-        if ($this->getWhmcsConfigOption(ConfigurableOption::DISK_SIZE))
+        if($this->getWhmcsConfigOption(ConfigurableOption::STORAGE)){
+            list($storage,$diskSize) = explode(":", $this->getWhmcsConfigOption(ConfigurableOption::STORAGE),2);
+            Utility::unitFormat($diskSize, $this->configuration()->getDiskUnit(), 'bytes');
+        }
+        else if ($this->getWhmcsConfigOption(ConfigurableOption::DISK_SIZE))
         {
             $diskSize = $this->getWhmcsConfigOption(ConfigurableOption::DISK_SIZE);
             Utility::unitFormat($diskSize, $this->configuration()->getDiskUnit(), 'bytes');

+ 1 - 1
app/Http/Actions/MetaData.php

@@ -26,7 +26,7 @@ class MetaData extends AddonController
     public function execute($params = null)
     {
         return [
-            'DisplayName'    => 'Proxmox VPS',
+            'DisplayName'    => 'Proxmox VE VPS',
             'RequiresServer' => true,
             'DefaultNonSSLPort' => '8006', // Default Non-SSL Connection Port
             'DefaultSSLPort' => '8006', // Default SSL Connection Port

+ 4 - 2
app/Http/Actions/ResetBandwidth.php

@@ -148,8 +148,10 @@ class TerminateAccount extends AddonController
                 'status'     => 0
             ])->save();
             //snippets
-            if($this->hasSnippet() && $snippet = $this->getSnippetFile()){
-                $snippet->delete();
+            if($this->hasSnippet() && $snippets = $this->getSnippetFiles()){
+                foreach ($snippets as $snippet){
+                    $snippet->delete();
+                }
             }
             //Reset Custom Fields
             $this->customFieldUpdate("vmid", "");

+ 58 - 11
app/Http/Actions/TestConnection.php

@@ -3,9 +3,15 @@
 namespace ModulesGarden\Servers\ProxmoxVps\App\Http\Admin;
 
 use MGProvision\Proxmox\v2\models\Kvm;
+use MGProvision\Proxmox\v2\models\Lxc;
+use ModulesGarden\ProxmoxAddon\App\Factory\ProxyServiceFactory;
 use ModulesGarden\ProxmoxAddon\App\Models\ModuleSettings;
+use ModulesGarden\ProxmoxAddon\App\Repositories\ModuleSettingRepository;
+use ModulesGarden\ProxmoxAddon\App\Repositories\ServerConfigurationRepository;
 use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
+use ModulesGarden\Servers\ProxmoxVps\App\Helpers\LicenseValidator;
+use ModulesGarden\Servers\ProxmoxVps\App\Http\Client\BaseClientController;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Admin\IpSet\Pages\IpSetDataTable;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Admin\QemuGuestAgent\Pages\NetworkInterfacesDataTable;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Admin\User\Pages\UserDataTable;
@@ -19,12 +25,16 @@ use ModulesGarden\Servers\ProxmoxVps\App\UI\Reinstall\Pages\ReinstallTab;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Reinstall\Pages\TemplateDataTable;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\ServiceInformation\Pages\ServiceInformation;
 use ModulesGarden\Servers\ProxmoxVps\Core\Helper;
+use ModulesGarden\Servers\ProxmoxVps\Core\Http\AbstractClientController;
 use ModulesGarden\Servers\ProxmoxVps\Core\Http\AbstractController;
+use ModulesGarden\Servers\ProxmoxVps\Core\ModuleConstants;
 use ModulesGarden\Servers\ProxmoxVps\Core\Traits\OutputBuffer;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Traits\WhmcsParams;
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\UserService;
 use Symfony\Component\HttpFoundation\RedirectResponse;
 use MGProvision\Proxmox\v2\Api;
+use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\sl;
+
 /**
  * Example admin home page controler
  * @author Sławomir Miśkowicz <slawomir@modulesgarden.com>
@@ -36,16 +46,35 @@ class Home extends AbstractController
     use ApiService;
     use OutputBuffer;
     use UserService;
+    use BaseClientController;
+    use LicenseValidator;
+
+    /**
+     * @var ModuleSettingRepository
+     */
+    protected $moduleSetting;
+
     public function index()
     {
+
         $view = Helper\viewIntegrationAddon();
         $view->initCustomAssetFiles();
+        $this->moduleSetting = new ModuleSettingRepository();
         //serviceActions
-        $view->addElement(ServiceActions::class);
+        if($this->moduleSetting->isPermissionServiceActions() ){
+            $view->addElement(ServiceActions::class);
+        }
         // serviceInformationDataTable
-        $view->addElement(ServiceInformation::class);
-        $view->addElement(IpAddressDataTable::class);
-        $view->addElement(IpSetDataTable::class);
+        if($this->moduleSetting->isPermissionInformation()){
+            $view->addElement(ServiceInformation::class);
+        }
+        if($this->moduleSetting->isPermissionIpAddresses()){
+            $view->addElement(IpAddressDataTable::class);
+        }
+        if($this->moduleSetting->isPermissionIpSet()){
+            $view->addElement(IpSetDataTable::class);
+        }
+
         if ($this->vm() instanceof Kvm) {
 
             if ($this->vm()->config()['agent'] == 1) {
@@ -56,15 +85,23 @@ class Home extends AbstractController
 
                 }
             }
-            $view->addElement(ReinstallTab::class);
-        } else {
+            if($this->moduleSetting->isPermissionReinstall()){
+                $view->addElement(ReinstallTab::class);
+            }
+
+        } else if($this->moduleSetting->isPermissionReinstall() && $this->vm() instanceof Lxc){
             $view->addElement(TemplateDataTable::class);
         }
-        $view->addElement(CpuGraph::class)
-            ->addElement(MemoryGraph::class)
-            ->addElement(NetworkGraph::class)
-            ->addElement(DiskGraph::class)
-            ->addElement(UserDataTable::class);
+        if($this->moduleSetting->isPermissionGraph()){
+            $view->addElement(CpuGraph::class)
+                ->addElement(MemoryGraph::class)
+                ->addElement(NetworkGraph::class)
+                ->addElement(DiskGraph::class);
+        }
+        if($this->moduleSetting->isPermissionUserDetails()){
+                $view->addElement(UserDataTable::class);
+        }
+
         return $view;
 
     }
@@ -73,6 +110,10 @@ class Home extends AbstractController
     {
         $this->cleanOutputBuffer();
         $this->acl()->novnc();
+        $this->moduleSetting = new ModuleSettingRepository();
+        if($this->moduleSetting->getConsoleApiKey() && $this->moduleSetting->consoleHost && $this->isLicensePayingFullAnnuallyPrice()){
+             $this->novncProxy();
+        }
         $this->console(['novnc' => 1]);
     }
 
@@ -80,6 +121,10 @@ class Home extends AbstractController
     {
         $this->cleanOutputBuffer();
         $this->acl()->novnc();
+        $this->moduleSetting = new ModuleSettingRepository();
+        if($this->moduleSetting->getConsoleApiKey() && $this->moduleSetting->consoleHost){
+            $this->xtermjsProxy();
+        }
         $this->console(['xtermjs' => 1]);
     }
 
@@ -135,4 +180,6 @@ class Home extends AbstractController
         $response = new RedirectResponse("https://{$consoleHost}:{$consolePort}/novnc/mgnovnc.html?" . http_build_query($request));
         $response->send();
     }
+
+
 }

+ 3 - 1
app/Http/Admin/LoggerManager.php

@@ -5,6 +5,8 @@ namespace ModulesGarden\Servers\ProxmoxVps\App\Http\Client;
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
 use ModulesGarden\Servers\ProxmoxVps\App\Helpers\AppParams;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Backup\Pages\BackupDataTable;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Resources\Pages\ResourcesContainer;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Resources\Providers\BackupResourceProvider;
 use ModulesGarden\Servers\ProxmoxVps\Core\Helper;
 use ModulesGarden\Servers\ProxmoxVps\Core\Http\AbstractClientController;
 
@@ -17,7 +19,7 @@ class Backup extends AbstractClientController
         (new AppParams())->initFromWhmcsParams();
         $this->acl()->backup();
         Helper\sl("sidebar")->getSidebar("managementProxmoxVps")->getChild("backup")->setActive(true);
-        return Helper\view()->addElement(BackupDataTable::class);
+        return Helper\view()->addElement(new ResourcesContainer())->addElement(BackupDataTable::class);
     }
 
 }

+ 88 - 1
app/Http/Client/BackupJob.php

@@ -4,6 +4,10 @@
 namespace ModulesGarden\Servers\ProxmoxVps\App\Http\Client;
 
 
+use MGProvision\Proxmox\v2\Api;
+use MGProvision\Proxmox\v2\models\Kvm;
+use MGProvision\Proxmox\v2\models\Lxc;
+use ModulesGarden\ProxmoxAddon\App\Factory\ProxyServiceFactory;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\CloneQemuJob;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\CreateLxcJob;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\CreateQemuJob;
@@ -12,10 +16,16 @@ use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\MigrateVmJob;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\Reinstall\CreateVmJob;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\RestoreVm;
 use ModulesGarden\ProxmoxAddon\App\Models\Job;
+use ModulesGarden\ProxmoxAddon\App\Models\ModuleSettings;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Home\Pages\VpsBuild;
+use ModulesGarden\Servers\ProxmoxVps\Core\ModuleConstants;
+use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\sl;
 use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\view;
 
-
+/**
+ * Trait BaseClientController
+ * @method Kvm|Lxc vm()
+ */
 trait BaseClientController
 {
     public function isVpsCreated()
@@ -42,4 +52,81 @@ trait BaseClientController
     {
         return view()->addElement(VpsBuild::class);
     }
+
+    /**
+     * @return Kvm|Lxc
+     */
+    protected function vmAsUser(){
+        if($this->vmAsUser){
+            return $this->vmAsUser;
+        }
+        //User
+        $vpsUser = $this->getUser();
+        if (empty($vpsUser->username))
+        {
+            throw new \Exception('User does not have permissions to access noVNC console');
+        }
+        $serverHost = $this->getWhmcsParamByKey('serverip') ? $this->getWhmcsParamByKey('serverip') : $this->getWhmcsParamByKey('serverhostname');
+        //Load Users API
+        if(!preg_match('/\:/', $serverHost) && $this->getWhmcsParamByKey('serverport') ){
+            $serverHost .=":".$this->getWhmcsParamByKey('serverport');
+        }
+        $api = new Api($serverHost, $vpsUser->username, $vpsUser->realm, $vpsUser->getPassword());
+        $api->debug(ModuleSettings::isDebug());
+        //vm
+        $vm = $this->vm();
+        $vm->setApi($api);
+        if(!$vm->isRunning()){
+            throw new \Exception(sl('lang')->abtr("VM not running"));
+        }
+        return $this->vmUser = $vm;
+    }
+
+    public function novncProxy(){
+        $vars=[
+            'novncAppUrl' => './modules/addons/proxmoxAddon/templates/client/default/novnc'
+        ];
+        if($this->isAdmin()){
+            $vars['novncAppUrl']=  '../modules/addons/proxmoxAddon/templates/client/default/novnc';
+        }
+        try{
+            $vnc = $this->vmAsUser()->vncproxy(1);
+            $vncHost = $this->vmAsUser()->vncWebsocketPath( $vnc);
+            $clientIp = sl('request')->getClientIp();
+            //proxy generate token
+            $procyService = (new ProxyServiceFactory())->fromModuleConfiguration($this->moduleSetting);
+            $vars['websocketUrl'] = $procyService->proxmox("https://".$vncHost, $clientIp ,$this->vmAsUser()->getApi()->getAuthCookieAsArray());
+            $vars['password'] = $vnc['ticket'];
+        }catch (\Exception $ex){
+            $vars['error'] = $ex->getMessage();
+        }
+        echo $this->getSmarty()
+            ->view(ModuleConstants::getFullPathWhmcs().DS.'modules'.DS.'addons'.DS.'proxmoxAddon'.DS.'templates'.DS.'client'.DS.'default'.DS.'pages'.DS.'console'.DS.'novnc', $vars);
+        exit();
+    }
+
+    public function xtermjsProxy(){
+
+        $vars=[
+            'appUrl' => './modules/addons/proxmoxAddon/templates/client/default',
+        ];
+        if($this->isAdmin()){
+            $vars['appUrl']=  '../modules/addons/proxmoxAddon/templates/client/default';
+        }
+        try{
+            $vnc = $this->vmAsUser()->termproxy();
+            $vncHost = $this->vmAsUser()->vncWebsocketPath( $vnc);
+            $clientIp = sl('request')->getClientIp();
+            //proxy generate token
+            $procyService = (new ProxyServiceFactory())->fromModuleConfiguration($this->moduleSetting);
+            $vars['websocketUrl'] = $procyService->proxmox("https://".$vncHost,$clientIp, $this->vmAsUser()->getApi()->getAuthCookieAsArray());
+            $vars['password'] = $vnc['ticket'];
+            $vars['user'] =$vnc['user'];
+        }catch (\Exception $ex){
+            $vars['error'] = $ex->getMessage();
+        }
+        echo $this->getSmarty()
+            ->view(ModuleConstants::getFullPathWhmcs().DS.'modules'.DS.'addons'.DS.'proxmoxAddon'.DS.'templates'.DS.'client'.DS.'default'.DS.'pages'.DS.'console'.DS.'xtermjs', $vars);
+        exit();
+    }
 }

+ 19 - 0
app/Http/Client/Console.php

@@ -4,13 +4,17 @@ namespace ModulesGarden\Servers\ProxmoxVps\App\Http\Client;
 
 use MGProvision\Proxmox\v2\Api;
 use ModulesGarden\ProxmoxAddon\App\Models\ModuleSettings;
+use ModulesGarden\ProxmoxAddon\App\Repositories\ModuleSettingRepository;
+use ModulesGarden\ProxmoxAddon\App\Repositories\ServerConfigurationRepository;
 use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
 use ModulesGarden\ProxmoxAddon\App\Services\Utility;
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\UserService;
 use ModulesGarden\Servers\ProxmoxVps\App\Helpers\AppParams;
+use ModulesGarden\Servers\ProxmoxVps\App\Helpers\LicenseValidator;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Home\Pages\DetailsContainer;
 use ModulesGarden\Servers\ProxmoxVps\Core\Http\AbstractClientController;
+use ModulesGarden\Servers\ProxmoxVps\Core\Traits\Smarty;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Traits\WhmcsParams;
 use Symfony\Component\HttpFoundation\RedirectResponse;
 use Symfony\Component\HttpFoundation\StreamedResponse;
@@ -22,12 +26,22 @@ class Console extends AbstractClientController
     use UserService;
     use ApiService;
     use ProductService;
+    use BaseClientController;
+    use LicenseValidator;
 
+    /**
+     * @var ModuleSettingRepository
+     */
+    protected $moduleSetting;
 
     public function novnc()
     {
         (new AppParams())->initFromWhmcsParams();
         $this->acl()->novnc();
+        $this->moduleSetting = new ModuleSettingRepository();
+        if($this->moduleSetting->getConsoleApiKey() && $this->moduleSetting->consoleHost && $this->isLicensePayingFullAnnuallyPrice()){
+            $this->novncProxy();
+        }
         $this->console(['novnc' => 1]);
     }
 
@@ -35,6 +49,10 @@ class Console extends AbstractClientController
     {
         (new AppParams())->initFromWhmcsParams();
         $this->acl()->xtermjs();
+        $this->moduleSetting = new ModuleSettingRepository();
+        if($this->moduleSetting->getConsoleApiKey() && $this->moduleSetting->consoleHost && $this->isLicensePayingFullAnnuallyPrice()){
+            $this->xtermjsProxy();
+        }
         $this->console(['xtermjs' => 1]);
     }
 
@@ -131,4 +149,5 @@ class Console extends AbstractClientController
         $response->send();
         exit();
     }
+
 }

+ 24 - 0
app/Http/Client/Disk.php

@@ -2,15 +2,21 @@
 
 namespace ModulesGarden\Servers\ProxmoxVps\App\Http\Client;
 
+use MGProvision\Proxmox\v2\repository\FirewallRulesRepository;
+use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
 use ModulesGarden\Servers\ProxmoxVps\App\Helpers\AppParams;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Pages\FirewallDataTable;
 use ModulesGarden\Servers\ProxmoxVps\Core\Helper;
 use ModulesGarden\Servers\ProxmoxVps\Core\Http\AbstractClientController;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Traits\WhmcsParams;
+use Symfony\Component\HttpFoundation\StreamedResponse;
 
 class Firewall extends AbstractClientController
 {
+    use WhmcsParams;
     use ProductService;
+    use ApiService;
 
     public function index()
     {
@@ -20,4 +26,22 @@ class Firewall extends AbstractClientController
         return Helper\view()->addElement(FirewallDataTable::class);
     }
 
+    public function download()
+    {
+        $response = new StreamedResponse();
+        $response->setStatusCode(200);
+        $response->headers->set('Content-Type', 'application/json; charset=utf-8');
+        $response->headers->set('Content-Transfer-Encoding', 'Binary');
+        $filename = sprintf("%s-firewal-rules.json",$this->getWhmcsParamByKey("domain"));
+        $response->headers->set('Content-Disposition', 'attachment; filename="'.$filename.'"');
+        $firewalRules = new FirewallRulesRepository();
+        $firewalRules->setApi($this->api());
+        $firewalRules->findByVm($this->vm());
+        $response->setCallback(function () use( $firewalRules)
+        {
+            echo  \json_encode($firewalRules->fetchAsArray());
+            die();
+        });
+        $response->send();
+    }
 }

+ 4 - 2
app/Http/Client/FirewallOption.php

@@ -10,11 +10,13 @@ use ModulesGarden\Servers\ProxmoxVps\Core\Helper;
 use ModulesGarden\Servers\ProxmoxVps\Core\Http\AbstractClientController;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Traits\WhmcsParams;
 
-class Snapshot extends AbstractClientController {
+class Snapshot extends AbstractClientController
+{
     use WhmcsParams;
     use ProductService;
 
-    public function index() {
+    public function index()
+    {
         (new AppParams())->initFromWhmcsParams();
         $this->acl()->snapshot();
         Helper\sl("sidebar")->getSidebar("managementProxmoxVps")->getChild("snapshot")->setActive(true);

+ 14 - 1
app/Http/Client/TaskHistory.php

@@ -19,9 +19,11 @@
 
 namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Admin\Product\Forms;
 
+use ModulesGarden\Servers\ProxmoxVps\App\Helpers\LicenseValidator;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Admin\Product\Buttons\VirtualizationChangButton;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Admin\Product\Providers\ProductProvider;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Admin\Product\Sections\AdminNotificationSection;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Admin\Product\Sections\AlertSection;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Admin\Product\Sections\BackupSection;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Admin\Product\Sections\ClientNotificationSection;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Admin\Product\Sections\ConsoleSection;
@@ -42,6 +44,8 @@ use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\FormIntegration;
 class MainForm extends FormIntegration implements AdminArea
 {
 
+    use LicenseValidator;
+
     public function initContent()
     {
        /**
@@ -55,6 +59,7 @@ class MainForm extends FormIntegration implements AdminArea
          *
          */
         $isQemu = !$this->dataProvider->getValueById('customconfigoption[virtualization]') || $this->dataProvider->getValueById('customconfigoption[virtualization]') == "qemu";
+        $this->licenseAlert();
         /**
          * Main Section
          */
@@ -97,6 +102,7 @@ class MainForm extends FormIntegration implements AdminArea
                 ->addSection((new BackupSection())->enableToggler())
                 ->addSection((new Lxc\NetworkSection())->enableToggler())
                 ->addSection((new FirewallSection())->enableTogglerAndHide())
+                ->addSection((new FirewallOptionSection())->enableTogglerAndHide())
                 ->addSection((new UserSection())->enableTogglerAndHide())
                 ->addSection((new MiscellaneousSection())->enableTogglerAndHide())
                 ->addSection((new LoadBalancerSection())->enableTogglerAndHide())
@@ -134,4 +140,11 @@ class MainForm extends FormIntegration implements AdminArea
         }
         return array_unique($fieldNames);
     }
-}
+
+    public function licenseAlert(){
+        if(!$this->isLicensePayingFullAnnuallyPrice(true)){
+            $this->addSection(new AlertSection("You can use proxy for Proxmox console connections to increase the security of your infrastructure. Please contact <a href='https://www.modulesgarden.com/support/ticket/product-presales/Proxmox%20module%20upgrade%20request%20-%20Proxy%20console' target='_blank'>ModulesGarden support</a> to get more details and upgrade your module."));
+        }
+
+    }
+}

+ 83 - 7
app/UI/Admin/Product/Forms/VirtualizationChangeForm.php

@@ -24,9 +24,11 @@ use MGProvision\Proxmox\v2\repository\ClusterResourcesRepository;
 use MGProvision\Proxmox\v2\repository\FileRepository;
 use MGProvision\Proxmox\v2\repository\NodeRepository;
 use MGProvision\Proxmox\v2\repository\StorageRepository;
+use ModulesGarden\ProxmoxAddon\App\Helper\VmidHelper;
 use ModulesGarden\ProxmoxAddon\App\Models\CloudInitScript;
 use ModulesGarden\ProxmoxAddon\App\Models\IpAddress;
 use ModulesGarden\ProxmoxAddon\App\Models\ProductConfiguration;
+use ModulesGarden\ProxmoxAddon\App\Models\ServerGroup;
 use ModulesGarden\ProxmoxAddon\App\Models\Whmcs\Product;
 use ModulesGarden\ProxmoxAddon\App\Repositories\Vps\ProductConfigurationRepository;
 use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
@@ -45,6 +47,7 @@ class ProductProvider extends BaseDataProvider implements AdminArea
 {
     use ApiService;
     use ProductService;
+    use VmidHelper;
 
     /**
      * @var ProductConfigurationRepository
@@ -55,6 +58,10 @@ class ProductProvider extends BaseDataProvider implements AdminArea
      * @var Node
      */
     private $node;
+    /**
+     * @var array
+     */
+    private $nodes;
 
     /**
      * ProductConfigurationProvider constructor.
@@ -114,6 +121,7 @@ class ProductProvider extends BaseDataProvider implements AdminArea
         $nodeRepository->setApi($this->api());
         $nodeRepository->findOnline(true);
         foreach ($nodeRepository->fetch() as $node) {
+            $this->nodes[] =$node->getNode();
             $this->availableValues["customconfigoption[defaultNode]"][$node->getNode()] = $node->getNode();
         }
         //realm
@@ -206,7 +214,43 @@ class ProductProvider extends BaseDataProvider implements AdminArea
             "ndp" => $lang->abtr("NDP"),
             "macfilter" => $lang->abtr("MAC Filter"),
             "ipfilter" => $lang->abtr("IP Filter"),
+            "policy_in" => $lang->abtr("Input Policy"),
+            "policy_out" => $lang->abtr("Output Policy"),
+        ];
+        //serverGroup
+        $this->serverGroupRead();
+        //firewalOptionPolicyIn
+        $this->availableValues["customconfigoption[firewalOptionPolicyIn]"] = [
+            "0" => "",
+            "DROP"   => sl("lang")->abtr("DROP"),
+            "ACCEPT" => sl("lang")->abtr("ACCEPT"),
+            "REJECT" => sl("lang")->abtr("REJECT"),
+        ];
+        //firewalOptionPolicyOut
+        $this->availableValues["customconfigoption[firewalOptionPolicyOut]"] = [
+            "0" => "",
+            "DROP"   => sl("lang")->abtr("DROP"),
+            "ACCEPT" => sl("lang")->abtr("ACCEPT"),
+            "REJECT" => sl("lang")->abtr("REJECT"),
         ];
+        //permissionInformation
+        $this->availableValues["customconfigoption[permissionInformation][]"] = [
+            "name"   => sl("lang")->abtr("Hostname"),
+            "uptime" => sl("lang")->abtr("Uptime"),
+            "cpu" => sl("lang")->abtr("CPU Usage"),
+            "mem" => sl("lang")->abtr("Memory"),
+            "backupFilesLimit" => sl("lang")->abtr("Backup Files Limit"),
+            "networkRate" => sl("lang")->abtr("Network Rate"),
+            "ipAddresses" => sl("lang")->abtr("IP Addresses"),
+        ];
+        //permissionBackupCompress
+        $this->availableValues["customconfigoption[permissionBackupCompress][]"] = [
+            "none"   => $lang->abtr("None"),
+            "lzo" => $lang->abtr("LZO (fast)"),
+            "gzip" => $lang->abtr("GZIP (good)"),
+            "zstd" => $lang->abtr("ZSTD (fast and good)"),
+        ];
+
     }
 
     /**
@@ -307,7 +351,7 @@ class ProductProvider extends BaseDataProvider implements AdminArea
             $this->availableValues["customconfigoption[permissionOsTemplates][]"][$resurce->getName()] = $lang->tr($resurce->getName());
         }
         //osTemplate
-        $this->availableValues["customconfigoption[osTemplate]"] = ['0' => ""] + (array)$this->availableValues["customconfigoption[permissionOsTemplates][]"];
+        $this->availableValues["customconfigoption[osTemplate]"] = ['0' => $lang->abtr("None")] + (array)$this->availableValues["customconfigoption[permissionOsTemplates][]"];
         //permissionIsoImage
         $fileRepository = new FileRepository();
         $fileRepository->setApi($this->api());
@@ -323,7 +367,7 @@ class ProductProvider extends BaseDataProvider implements AdminArea
         //memoryUnit
         $this->availableValues["customconfigoption[memoryUnit]"] = ['mb' => $lang->tr("MB"), "gb" => $lang->tr("GB")];
         //diskUnit
-        $this->availableValues["customconfigoption[diskUnit]"] = ['mb' => $lang->tr("MB"), "gb" => $lang->tr("GB"), "tb" => $lang->tr("TB")];
+        $this->availableValues["customconfigoption[diskUnit]"] = [ "gb" => $lang->tr("GB"), "tb" => $lang->tr("TB")];
         //additionalDiskUnit
         $this->availableValues["customconfigoption[additionalDiskUnit]"] = ['mb' => $lang->tr("MB"), "gb" => $lang->tr("GB"), "tb" => $lang->tr("TB")];
         //cdromType
@@ -347,6 +391,18 @@ class ProductProvider extends BaseDataProvider implements AdminArea
         foreach ($jsonData->get() as $k => $name) {
             $this->availableValues["customconfigoption[cpu]"][$k] = $lang->tr($name);
         }
+        //archive
+        $this->availableValues["customconfigoption[archive]"]=[0=>  $lang->abtr("None")];
+        $fileRepository->findBackupQemuTemplates();
+        $fileRepository->findByNodes($this->nodes);
+        foreach (   $fileRepository->fetch() as $file) {
+            if($this->vmidExistInWhmcs($file->getVmid())){
+                continue;
+            }
+            $this->availableValues["customconfigoption[archive]"][$file->getNode().":".$file->getVolid()] = $file->formatVolid();
+        }
+        //cloudInitStorage
+        $this->availableValues["customconfigoption[cloudInitStorage]"] = [0=> ""]+ $this->availableValues["customconfigoption[diskStorage]"];
     }
 
     /**
@@ -377,13 +433,14 @@ class ProductProvider extends BaseDataProvider implements AdminArea
         $fileRepository->findLxcTemplates();
         $fileRepository->findByNode($this->node);
         $fileRepository->findByStorages($storageRepository->fetchAsArray());
+        $this->availableValues["customconfigoption[osTemplate]"] = [0 => $lang->abtr("None")];
         foreach ($fileRepository->fetch() as $file) {
             $this->availableValues["customconfigoption[osTemplate]"][$file->getVolid()] = $lang->tr($file->getFriendlyName());
         }
         //memoryUnit
         $this->availableValues["customconfigoption[memoryUnit]"] = ['mb' => $lang->tr("MB"), "gb" => $lang->tr("GB")];
         //diskUnit
-        $this->availableValues["customconfigoption[diskUnit]"] = ['mb' => $lang->tr("MB"), "gb" => $lang->tr("GB"), "tb" => $lang->tr("TB")];
+        $this->availableValues["customconfigoption[diskUnit]"] = [ "gb" => $lang->tr("GB"), "tb" => $lang->tr("TB")];
         //additionalDiskUnit
         $this->availableValues["customconfigoption[additionalDiskUnit]"] = ['mb' => $lang->tr("MB"), "gb" => $lang->tr("GB"), "tb" => $lang->tr("TB")];
         //persimonOsTemplates
@@ -413,6 +470,16 @@ class ProductProvider extends BaseDataProvider implements AdminArea
         ksort($this->availableValues["customconfigoption[bridge]"]);
         //privateBridge
         $this->availableValues["customconfigoption[privateBridge]"] = ['0' => ""] + (array)$this->availableValues["customconfigoption[bridge]"];
+        //archive
+        $this->availableValues["customconfigoption[archive]"]=[0=>  $lang->abtr("None")];
+        $fileRepository->findBackupLxcTemplates();
+        $fileRepository->findByNodes($this->nodes);
+        foreach (   $fileRepository->fetch() as $file) {
+            if($this->vmidExistInWhmcs($file->getVmid())){
+                continue;
+            }
+            $this->availableValues["customconfigoption[archive]"][$file->getNode().":".$file->getVolid()] = $file->formatVolid();
+        }
     }
 
     public function update()
@@ -437,12 +504,9 @@ class ProductProvider extends BaseDataProvider implements AdminArea
         } catch (\Exception $ex) {
             //login to proxmox host failed
         }
-        //delete
         $this->configuration->flush();
-        sleep(1);
         //save
-        $this->configuration->fill((array)$values)
-            ->save();
+        $this->configuration->fillAndSave((array)$values);
     }
 
     public function delete()
@@ -467,4 +531,16 @@ class ProductProvider extends BaseDataProvider implements AdminArea
             $newEntity->save();
         }
     }
+
+    protected function serverGroupRead(){
+        $groupId  = sl("whmcsParams")->getWhmcsParams()['groupid'];
+        $sg = (new ServerGroup())->getTable();
+        $ssg = "tblservergroupsrel";
+        $query = ServerGroup::select("{$sg}.id", "{$sg}.name")
+            ->leftJoin($ssg,"{$ssg}.serverid","=","{$sg}.server_id"  )
+            ->where("{$ssg}.groupid", $groupId);
+        foreach ($query->get() as $row){
+            $this->availableValues['customconfigoption[serverGroup][]'][$row->id] = $row->name;
+        }
+    }
 }

+ 30 - 0
app/UI/Admin/Product/Sections/AdminNotificationSection.php

@@ -0,0 +1,30 @@
+<?php
+
+
+namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Admin\Product\Sections;
+
+
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\AdminArea;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Traits\Alerts;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Sections\BoxSection;
+
+class AlertSection extends BoxSection implements AdminArea
+{
+
+    use Alerts;
+
+    public function __construct($mesage , $type ='info')
+    {
+        $this->internalAlertMessage = $mesage;
+        $this->internalAlertMessageType = $type;
+        parent::__construct('alertSection');
+    }
+
+    public function initContent()
+    {
+//        dump($this->getTemplateDir());
+//        $this->getHtml();
+//        die();
+
+    }
+}

+ 6 - 0
app/UI/Admin/Product/Sections/BackupSection.php

@@ -55,6 +55,12 @@ class FirewallOptionSection extends BoxSection implements AdminArea
         //ipfilter
         $field = new Switcher("customconfigoption[firewalOptionIpfilter]");
         $this->addField($field);
+        //policy_out
+        $field = new Select("customconfigoption[firewalOptionPolicyIn]");
+        $this->addField($field);
+        //policy_out
+        $field = new Select("customconfigoption[firewalOptionPolicyOut]");
+        $this->addField($field);
     }
 
     public function addField($field){

+ 9 - 0
app/UI/Admin/Product/Sections/FirewallSection.php

@@ -50,6 +50,15 @@ class LoadBalancerSection extends BoxSection implements AdminArea
         $field = new Switcher('customconfigoption[loadBalancerStopOnUpgrade]');
         $field->setDescription('tip');
         $this->rightSection->addField($field);
+        //serverGroup
+        $field = new Select('customconfigoption[serverGroup][]');
+        $field->enableMultiple();
+        $field->setDescription('tip');
+        $this->leftSection->addField($field);
+        //with-local-disks
+        $field = new Switcher('customconfigoption[loadBalancerMigrationWithLocalDisks]');
+        $field->setDescription('tip');
+        $this->rightSection->addField($field);
     }
 
 }

+ 15 - 1
app/UI/Admin/Product/Sections/Lxc/ClientAreaSection.php

@@ -138,7 +138,21 @@ class ClientAreaSection extends BoxSection implements AdminArea
         $field->enableMultiple();
         $field->setDescription('description');
         $this->addField($field);
-
+        //permissionInformation
+        $field = new Select("customconfigoption[permissionInformation][]");
+        $field->enableMultiple();
+        $field->setDescription('description');
+        $this->addField($field);
+        //permissionChangeHostname
+        $field = new  Switcher("customconfigoption[permissionChangeHostname]");
+        $field->setDescription('description');
+        $field->setDefaultValue("on");
+        $this->addField($field);
+        //permissionBackupCompress
+        $field = new Select("customconfigoption[permissionBackupCompress][]");
+        $field->enableMultiple();
+        $field->setDescription('description');
+        $this->leftSection->addField($field);
     }
 
     public function addField($field){

+ 5 - 0
app/UI/Admin/Product/Sections/Lxc/ConfigurableOptionUnitsSection.php

@@ -115,6 +115,11 @@ class ContainerSection extends BoxSection implements AdminArea
         $field = new Switcher('customconfigoption[randomHostname]');
         $field->setDescription('tip');
         $this->rightSection->addField($field);
+        //archive
+        $field = new Select('customconfigoption[archive]');
+        $field->setDescription('tip');
+        $this->leftSection->addField($field);
+
     }
 
 }

+ 5 - 0
app/UI/Admin/Product/Sections/Lxc/MountPointSection.php

@@ -5,6 +5,7 @@ namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Admin\Product\Sections;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\AdminArea;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Fields\Select;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Fields\Switcher;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Fields\Text;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Sections\BoxSection;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Sections\HalfPageSection;
 
@@ -60,6 +61,10 @@ class MiscellaneousSection extends BoxSection implements AdminArea
         $field = new Switcher('customconfigoption[suspendOnBandwidthOverage]');
         $field->setDescription('tip');
         $this->rightSection->addField($field);
+        //MinimumVmid
+        $field = new Text('customconfigoption[minimumVmid]');
+        $field->setDescription('tip');
+        $this->rightSection->addField($field);
     }
 
 }

+ 15 - 0
app/UI/Admin/Product/Sections/Qemu/AdditonalDisk.php

@@ -157,6 +157,21 @@ class ClientAreaSection extends BoxSection implements AdminArea
         $field->enableMultiple();
         $field->setDescription('description');
         $this->addField($field);
+        //permissionInformation
+        $field = new Select("customconfigoption[permissionInformation][]");
+        $field->enableMultiple();
+        $field->setDescription('description');
+        $this->addField($field);
+        //permissionChangeHostname
+        $field = new  Switcher("customconfigoption[permissionChangeHostname]");
+        $field->setDescription('description');
+        $field->setDefaultValue("on");
+        $this->addField($field);
+        //permissionBackupCompress
+        $field = new Select("customconfigoption[permissionBackupCompress][]");
+        $field->enableMultiple();
+        $field->setDescription('description');
+        $this->leftSection->addField($field);
     }
 
     public function addField($field){

+ 6 - 0
app/UI/Admin/Product/Sections/Qemu/CloudInitSection.php

@@ -76,6 +76,12 @@ class CloudInitSection extends BoxSection implements AdminArea
         $field->setDescription('tip');
         $this->addSectionField($field);
         $this->addFieldsToSections();
+        //cloudInitStorage
+        $field = new Select('customconfigoption[cloudInitStorage]');
+        $field->setDescription('tip');
+        $this->rightSection->addField($field);
+
+
     }
 
     public function addSectionField(BaseField $field)

+ 1 - 0
app/UI/Admin/Product/Sections/Qemu/ConfigurableOptionUnitsSection.php

@@ -185,6 +185,7 @@ class ConfigurationSection extends BoxSection implements AdminArea
         $field = new Text('customconfigoption[vgaMemory]');
         $field->setDescription('tip');
         $this->leftSection->addField($field);
+
     }
 
 }

+ 4 - 0
app/UI/Admin/Product/Sections/Qemu/ContainerSection.php

@@ -119,6 +119,10 @@ class ContainerSection extends BoxSection implements AdminArea
         $field->setDescription('tip');
         $field->setDefaultValue(1);
         $this->rightSection->addField($field);
+        //archive
+        $field = new Select('customconfigoption[archive]');
+        $field->setDescription('tip');
+        $this->leftSection->addField($field);
     }
 
 }

BIN
app/UI/Admin/Product/Sections/Qemu/DiskSection.php


BIN
app/UI/Admin/Templates/assets/img/buttons/backupJob.png


BIN
app/UI/Admin/Templates/assets/img/buttons/deleteButton.png


BIN
app/UI/Admin/Templates/assets/img/buttons/disk.png


BIN
app/UI/Admin/Templates/assets/img/buttons/network.png


BIN
app/UI/Admin/Templates/assets/img/buttons/rebootButton.png


BIN
app/UI/Admin/Templates/assets/img/buttons/reinstall.png


BIN
app/UI/Admin/Templates/assets/img/buttons/shutdownButton.png


BIN
app/UI/Admin/Templates/assets/img/buttons/snapshot.png


BIN
app/UI/Admin/Templates/assets/img/buttons/spice.png


BIN
app/UI/Admin/Templates/assets/img/buttons/stopButton.png


BIN
app/UI/Admin/Templates/assets/img/buttons/taskHistory.png


+ 5 - 0
app/UI/Admin/Templates/assets/img/buttons/vnc.png


+ 13 - 19
app/UI/Admin/User/Pages/UserDataTable.php

@@ -20,7 +20,7 @@
 namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Backup\Forms;
 
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
-use ModulesGarden\Servers\ProxmoxVps\App\Enum\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Backup\Providers\BackupProvider;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Helpers\AlertTypesConstants;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
@@ -29,10 +29,12 @@ use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Fields\Select;
 use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\sl;
 
 
-class CreateForm extends BaseForm implements ClientArea {
+class CreateForm extends BaseForm implements ClientArea
+{
     use ProductService;
 
-    public function initContent()  {
+    public function initContent()
+    {
         $this->initIds('createForm');
         $this->setFormType('create');
         $this->setProvider(new BackupProvider());
@@ -44,7 +46,8 @@ class CreateForm extends BaseForm implements ClientArea {
         if($backupFilesLimit == "-1"){
             $backupFilesLimit = null;
         }
-        if ($this->configuration()->isBackupRouting() && $backupFilesLimit)  {
+        if ($this->configuration()->isBackupRouting() && $backupFilesLimit)
+        {
             sl("lang")->addReplacementConstant("backupFilesLimit" , $backupFilesLimit);
             $this->setInternalAlertMessage( sl("lang")->tr('Your routing backup limit is :backupFilesLimit:. When you exceed this limit, the last backup will be replaced with a new one.'));
             $this->setInternalAlertMessageRaw(true);
@@ -53,33 +56,24 @@ class CreateForm extends BaseForm implements ClientArea {
         $this->loadDataToForm();
     }
 
-    public function getAllowedActions() {
+    public function getAllowedActions()
+    {
         return ['create'];
     }
 
-    private function initFields() {
+    private function initFields()
+    {
         //compress
         $field = new Select('compress');
-        $field->setAvailableValues([
-            //"0"    => sl("lang")->tr("None"),
-            //"lzo"  => sl("lang")->tr("LZO (fast)"),
-            //"gzip" => sl("lang")->tr("GZIP (good)"),
-            "zstd" => sl("lang")->abtr("ZSTD (fast and good)")
-        ]);
         $field->setDefaultValue('zstd');
-        $field->addClass('hidden');
         $this->addField($field);
-
         //mode
         $field = new Select('mode');
-        $field->addClass('hidden');
         $field->setAvailableValues([
             "snapshot" => sl("lang")->tr("Snapshot"),
             "suspend"  => sl("lang")->tr("Suspend"),
-            // "stop"     => sl("lang")->tr("Stop")
-            "stop"     => "Shutdown"
+            "stop"     => sl("lang")->tr("Stop")
         ]);
-        $field->setDefaultValue('snapshot');
         $this->addField($field);
     }
-}
+}

+ 4 - 2
app/UI/Backup/Forms/DeleteForm.php

@@ -24,9 +24,11 @@ use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Modals\BaseEditModal;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Modals\ModalConfirmSuccess;
 
-class CreateModal extends BaseEditModal implements ClientArea {
+class CreateModal extends BaseEditModal implements ClientArea
+{
 
-    public function initContent()  {
+    public function initContent()
+    {
         $this->initIds('createModal');
         $this->addForm(new CreateForm());
     }

+ 1 - 1
app/UI/Backup/Modals/DeleteMassModal.php

@@ -45,7 +45,7 @@ class BackupDataTable extends DataTable implements ClientArea
         $createButton = new CreateButton();
         if (!$this->configuration()->isPermissionBackup() || !$this->resourceGuard()->hasBackupLimit())
         {
-            $createButton->addClass("hidden");
+            $createButton->addClass("disabled");
         }
         $this->addButton($createButton);
         //Restore

+ 35 - 4
app/UI/Backup/Providers/BackupProvider.php

@@ -27,7 +27,8 @@ use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\ResponseTemplates\HtmlDataJsonResponse;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\DataProviders\BaseDataProvider;
 use function ModulesGarden\ProxmoxAddon\Core\Helper\queue;
-use ModulesGarden\Servers\ProxmoxVps\App\Enum\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
+use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\sl;
 
 class BackupProvider extends BaseDataProvider implements ClientArea
 {
@@ -40,6 +41,24 @@ class BackupProvider extends BaseDataProvider implements ClientArea
         {
             $this->data = json_decode(base64_decode($this->actionElementId), true);
         }
+        $this->availableValues['compress'] = [
+            "0"    => sl("lang")->abtr("None"),
+            "lzo"  => sl("lang")->abtr("LZO (fast)"),
+            "gzip" => sl("lang")->abtr("GZIP (good)"),
+            "zstd" => sl("lang")->abtr("ZSTD (fast and good)")
+        ];
+        $optionBackupCompress = $this->configuration()->getPermissionBackupCompress();
+        if(empty($optionBackupCompress)){
+            return;
+        }
+        foreach ($this->availableValues['compress'] as $k => $option){
+            if($k=="0" && !in_array("none", $optionBackupCompress)){
+                unset($this->availableValues['compress'][$k]);
+            }
+            if(!in_array($k, $optionBackupCompress)){
+                unset($this->availableValues['compress'][$k]);
+            }
+        }
     }
 
     public function create()
@@ -54,12 +73,19 @@ class BackupProvider extends BaseDataProvider implements ClientArea
         }else if($this->getWhmcsConfigOption(ConfigurableOption::BACKUPS_FILES)=="-1"){
             $maxFiles       = null;
         }
+        if($this->vm()->isLockBackup()){
+            return (new HtmlDataJsonResponse())
+                ->setStatusError()
+                ->setMessageAndTranslate('The backup creation is in progress');
+        }
         $this->vm()->backup($storage, $routing, $maxFiles, $this->formData['compress'], $this->formData['mode']);
         return (new HtmlDataJsonResponse())
             ->setStatusSuccess()
             ->setMessageAndTranslate('The backup creation is in progress')
             ->addData('createButtonStatus', $this->configuration()->isPermissionBackup() && $this->resourceGuard()->hasBackupLimit())
-            ->setCallBackFunction('pmToggleButton');
+            ->setCallBackFunction('pmToggleButton')
+            ->addRefreshTargetId('resourcesContainer')
+            ->addRefreshTargetId('backupDataTable');
     }
 
     public function restore()
@@ -89,7 +115,9 @@ class BackupProvider extends BaseDataProvider implements ClientArea
             ->setStatusSuccess()
             ->setMessageAndTranslate('The backup has been deleted successfully')
             ->addData('createButtonStatus', $this->configuration()->isPermissionBackup() && $this->resourceGuard()->hasBackupLimit())
-            ->setCallBackFunction('pmToggleButton');
+            ->setCallBackFunction('pmToggleButton')
+            ->addRefreshTargetId('resourcesContainer')
+            ->addRefreshTargetId('backupDataTable');
     }
 
     public function deleteMass()
@@ -109,7 +137,10 @@ class BackupProvider extends BaseDataProvider implements ClientArea
             ->setStatusSuccess()
             ->setMessageAndTranslate('The backups have been deleted successfully')
             ->addData('createButtonStatus', $this->configuration()->isPermissionBackup() && $this->resourceGuard()->hasBackupLimit())
-            ->setCallBackFunction('pmToggleButton');
+            ->setCallBackFunction('pmToggleButton')
+            ->addRefreshTargetId('resourcesContainer')
+            ->addRefreshTargetId('backupDataTable');
     }
 
+
 }

+ 1 - 1
app/UI/BackupJob/Buttons/CreateButton.php

@@ -25,7 +25,7 @@ use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\ResponseTemplates\DataJsonResponse;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Buttons\ButtonSwitchAjax;
-use ModulesGarden\Servers\ProxmoxVps\App\Enum\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
 
 class MailtoSwitchButton extends ButtonSwitchAjax implements ClientArea
 {

+ 2 - 8
app/UI/BackupJob/Buttons/UpdateButton.php

@@ -20,7 +20,7 @@
 namespace ModulesGarden\Servers\ProxmoxVps\App\UI\BackupJob\Forms;
 
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
-use ModulesGarden\Servers\ProxmoxVps\App\Enum\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\BackupJob\Providers\BackupJobProvider;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\BackupJob\Providers\FirewallOptionProvider;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Validators\StartTimeValidator;
@@ -90,12 +90,6 @@ class CreateForm extends BaseForm implements ClientArea
         $this->addField($field);
         //compress
         $field = new Select('compress');
-        $field->setAvailableValues([
-            //"0"    => sl("lang")->tr("0"),
-            //"lzo"  => sl("lang")->tr("lzo"),
-            //"gzip" => sl("lang")->tr("gzip"),
-            "zstd" => sl("lang")->abtr("ZSTD (fast and good)")
-        ]);
         $field->setDefaultValue('zstd');
         $field->notEmpty();
         $this->addField($field);
@@ -104,7 +98,7 @@ class CreateForm extends BaseForm implements ClientArea
         $field->setAvailableValues([
             "snapshot" => sl("lang")->tr("snapshot"),
             "suspend"  => sl("lang")->tr("suspend"),
-            "stop"     => "Shutdown"
+            "stop"     => sl("lang")->tr("stop")
         ]);
         $field->notEmpty();
         $this->addField($field);

+ 1 - 7
app/UI/BackupJob/Forms/DeleteForm.php

@@ -20,7 +20,7 @@
 namespace ModulesGarden\Servers\ProxmoxVps\App\UI\BackupJob\Forms;
 
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
-use ModulesGarden\Servers\ProxmoxVps\App\Enum\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\BackupJob\Providers\BackupJobProvider;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Validators\StartTimeValidator;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Helpers\AlertTypesConstants;
@@ -98,12 +98,6 @@ class UpdateForm extends BaseForm implements ClientArea
         $this->addField($field);
         //compress
         $field = new Select('compress');
-        $field->setAvailableValues([
-            "0"    => sl("lang")->tr("0"),
-            "lzo"  => sl("lang")->tr("lzo"),
-            "gzip" => sl("lang")->tr("gzip"),
-            "zstd" => sl("lang")->abtr("ZSTD (fast and good)")
-        ]);
         $field->setDefaultValue('zstd');
         $field->notEmpty();
         $this->addField($field);

+ 20 - 1
app/UI/BackupJob/Modals/CreateModal.php

@@ -25,7 +25,8 @@ use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\ResponseTemplates\HtmlDataJsonResponse;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\DataProviders\BaseDataProvider;
-use ModulesGarden\Servers\ProxmoxVps\App\Enum\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
+use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\sl;
 
 class BackupJobProvider extends BaseDataProvider implements ClientArea
 {
@@ -44,6 +45,24 @@ class BackupJobProvider extends BaseDataProvider implements ClientArea
             $mailto               = $this->data['mailto'];
             $this->data['mailto'] = $mailto ? "on" : "off";
         }
+        $this->availableValues['compress'] = [
+            "0"    => sl("lang")->abtr("None"),
+            "lzo"  => sl("lang")->abtr("LZO (fast)"),
+            "gzip" => sl("lang")->abtr("GZIP (good)"),
+            "zstd" => sl("lang")->abtr("ZSTD (fast and good)")
+        ];
+        $optionBackupCompress = $this->configuration()->getPermissionBackupCompress();
+        if(empty($optionBackupCompress)){
+            return;
+        }
+        foreach ($this->availableValues['compress'] as $k => $option){
+            if($k=="0" && !in_array("none", $optionBackupCompress)){
+                unset($this->availableValues['compress'][$k]);
+            }
+            if(!in_array($k, $optionBackupCompress)){
+                unset($this->availableValues['compress'][$k]);
+            }
+        }
     }
 
     public function create()

+ 8 - 0
app/UI/Client/Templates/assets/css/integration.css

@@ -10,4 +10,12 @@
     clear: both;
     width: 40% !important;
     margin-bottom: 2px !important;
+}
+
+#layers .lu-progress--s .lu-progress__bar {
+    height: 10px;
+}
+
+#layers #resourcesContainer .lu-progress--h .lu-progress__label {
+    flex-basis: 24%;
 }

BIN
app/UI/Client/Templates/assets/img/buttons/backup.png


BIN
app/UI/Client/Templates/assets/img/buttons/backupJob.png


BIN
app/UI/Client/Templates/assets/img/buttons/deleteButton.png


BIN
app/UI/Client/Templates/assets/img/buttons/disk.png


BIN
app/UI/Client/Templates/assets/img/buttons/network.png


BIN
app/UI/Client/Templates/assets/img/buttons/rebootButton.png


BIN
app/UI/Client/Templates/assets/img/buttons/reinstall.png


BIN
app/UI/Client/Templates/assets/img/buttons/shutdownButton.png


BIN
app/UI/Client/Templates/assets/img/buttons/snapshot.png


BIN
app/UI/Client/Templates/assets/img/buttons/spice.png


BIN
app/UI/Client/Templates/assets/img/buttons/stopButton.png


BIN
app/UI/Client/Templates/assets/img/buttons/taskHistory.png


BIN
app/UI/Client/Templates/assets/img/buttons/vnc.png


BIN
app/UI/Client/Templates/assets/img/rebootButton.png


BIN
app/UI/Client/Templates/assets/img/shutdownButton.png


BIN
app/UI/Client/Templates/assets/img/startButton.png


BIN
app/UI/Client/Templates/assets/img/stopButton.png


+ 9 - 3
app/UI/Client/Templates/assets/js/backup/index.js

@@ -8,10 +8,16 @@ function pmToggleButton(data) {
     let button = $("#backupDataTable .lu-top__toolbar a");
     if(data.htmlData.createButtonStatus)
     {
-        button.removeClass('hidden');
+        button.removeClass('disabled');
     }
     else
     {
-        button.addClass('hidden');
+        button.addClass('disabled');
     }
-}
+}
+
+
+$(".mg-wrapper").on("click", ".dt-button", function () {
+    mgPageControler.vueLoader.refreshingState = ['resourcesContainer'];
+    mgPageControler.vueLoader.runRefreshActions();
+});

+ 23 - 1
app/UI/Client/Templates/assets/js/backupJob/index.js

@@ -41,4 +41,26 @@ mgEventHandler.on('ModalLoaded', 'updateButton', function(id, params){
     }
      $(".mg-wrapper select[name='macro']").trigger('change');
 
-}, 1000);
+}, 1000);
+
+//restore rules
+var mgFile ={
+    read: function (fileId){
+        var input=  document.getElementById(fileId);
+        var file = input.files[0];
+        if(file.size > 2000){
+            throw new Error("The File size: "+file.size+" is too large");
+        }
+        fileReader =  new FileReader();
+        fileReader.onload = mgFile.pushResult;
+        fileReader.readAsText(file);
+
+    },
+    pushResult: function(){
+        $("#pmRulesJson").val(fileReader.result);
+    }
+};
+
+$(".mg-wrapper").on("change", "#pmFirewallRules", function () {
+    mgFile.read('pmFirewallRules');
+});

+ 1 - 1
app/UI/Client/Templates/assets/js/graph/index.js

@@ -20,7 +20,7 @@
 namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Disk\Forms;
 
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
-use ModulesGarden\Servers\ProxmoxVps\App\Enum\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Validators\NumberValidator;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Disk\Providers\DiskProvider;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;

+ 62 - 0
app/UI/Disk/Forms/DeleteForm.php

@@ -0,0 +1,62 @@
+<?php
+/* * ********************************************************************
+*  ProxmoxVPS Product developed. (27.03.19)
+* *
+*
+*  CREATED BY MODULESGARDEN       ->       http://modulesgarden.com
+*  CONTACT                        ->       contact@modulesgarden.com
+*
+*
+* This software is furnished under a license and may be used and copied
+* only  in  accordance  with  the  terms  of such  license and with the
+* inclusion of the above copyright notice.  This software  or any other
+* copies thereof may not be provided or otherwise made available to any
+* other person.  No title to and  ownership of the  software is  hereby
+* transferred.
+*
+*
+* ******************************************************************** */
+
+namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons;
+
+use MGProvision\Proxmox\v2\models\FirewallRule;
+use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
+use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Modals\UpdateGroupModal;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Modals\UpdateRuleModal;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\ResponseTemplates\DataJsonResponse;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Buttons\ButtonDataTableModalAction;
+
+class DownRuleButton extends ButtonDataTableModalAction implements ClientArea
+{
+    use ProductService;
+    use ApiService;
+    protected $icon           = 'lu-btn__icon lu-zmdi lu-zmdi-long-arrow-down';
+
+    public function initContent()
+    {
+        $this->initIds('downRuleButton');
+        $this->htmlAttributes['@click'] = 'buttonAction($event, \'' . $this->id . '\')';
+    }
+
+    public function returnAjaxData()
+    {
+        try
+        {
+            $data         = json_decode(base64_decode($this->getRequestValue('actionElementId')), true);
+            $firewallRule = new FirewallRule();
+            $firewallRule->setApi($this->api());
+            $pos = $data['pos'];
+            $firewallRule->setPath($this->vm()->getPath() . "/firewall/rules/{$pos}");
+            $firewallRule->moveto( $pos+2);
+        }
+        catch (\Exception $exc)
+        {
+            return (new DataJsonResponse())->setStatusError()->setMessage($exc->getMessage())->setCallBackFunction($this->callBackFunction)->addRefreshTargetId($this->refreshActionIds);
+        }
+        return (new DataJsonResponse())->setMessageAndTranslate('changesSaved')->addRefreshTargetId('firewallDataTable');
+    }
+
+
+}

+ 47 - 0
app/UI/Firewall/Buttons/DownloadButton.php

@@ -0,0 +1,47 @@
+<?php
+/* * ********************************************************************
+*  ProxmoxVPS Product developed. (27.03.19)
+* *
+*
+*  CREATED BY MODULESGARDEN       ->       http://modulesgarden.com
+*  CONTACT                        ->       contact@modulesgarden.com
+*
+*
+* This software is furnished under a license and may be used and copied
+* only  in  accordance  with  the  terms  of such  license and with the
+* inclusion of the above copyright notice.  This software  or any other
+* copies thereof may not be provided or otherwise made available to any
+* other person.  No title to and  ownership of the  software is  hereby
+* transferred.
+*
+*
+* ******************************************************************** */
+
+namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons;
+
+use ModulesGarden\Servers\ProxmoxVps\App\Helpers\UrlServiceHelper;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Modals\CreateGroupModal;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Buttons\ButtonCreate;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Buttons\ButtonRedirect;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Buttons\DropdawnButtonWrappers\ButtonDropdownItem;
+
+
+class DownloadButton extends ButtonRedirect  implements ClientArea
+{
+    protected $id='downloadButton';
+    protected $name ='downloadButton';
+    protected $title='downloadButton';
+    protected $icon  = 'lu-dropdown__link-icon lu-zmdi  lu-zmdi-download';
+    protected $class          = ['lu-dropdown__link'];
+    protected $showTitle = true;
+
+    public function initContent()
+    {
+        $this->initIds('downloadButton');
+        $url = (new UrlServiceHelper())->getDownloadFirewallRulesUrl();
+        $this->setRawUrl($url);
+    }
+
+
+}

+ 22 - 0
app/UI/Firewall/Buttons/EnableSwitchButton.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons;
+
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Modals\CreateGroupModal;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Modals\RestoreModal;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Buttons\ButtonCreate;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Buttons\DropdawnButtonWrappers\ButtonDropdownItem;
+
+
+class RestoreButton extends ButtonDropdownItem  implements ClientArea
+{
+    protected $id = 'restoreButton';
+    protected $icon  = 'lu-dropdown__link-icon lu-zmdi  lu-zmdi-time-restore';
+
+    public function initContent()
+    {
+        $this->initIds('restoreButton');
+        $this->initLoadModalAction(new RestoreModal());
+    }
+}

+ 65 - 0
app/UI/Firewall/Buttons/UpRuleButton.php

@@ -0,0 +1,65 @@
+<?php
+/* * ********************************************************************
+*  ProxmoxVPS Product developed. (27.03.19)
+* *
+*
+*  CREATED BY MODULESGARDEN       ->       http://modulesgarden.com
+*  CONTACT                        ->       contact@modulesgarden.com
+*
+*
+* This software is furnished under a license and may be used and copied
+* only  in  accordance  with  the  terms  of such  license and with the
+* inclusion of the above copyright notice.  This software  or any other
+* copies thereof may not be provided or otherwise made available to any
+* other person.  No title to and  ownership of the  software is  hereby
+* transferred.
+*
+*
+* ******************************************************************** */
+
+namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons;
+
+use MGProvision\Proxmox\v2\models\FirewallRule;
+use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
+use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Modals\UpdateGroupModal;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Modals\UpdateRuleModal;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\ResponseTemplates\DataJsonResponse;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Buttons\ButtonDataTableModalAction;
+
+class UpRuleButton extends ButtonDataTableModalAction implements ClientArea
+{
+    use ProductService;
+    use ApiService;
+    protected $icon           = 'lu-btn__icon lu-zmdi lu-zmdi-long-arrow-up';//zmdi-long-arrow-down
+
+    public function initContent()
+    {
+        $this->initIds('upRuleButton');
+        $this->htmlAttributes['@click'] = 'buttonAction($event, \'' . $this->id . '\')';
+    }
+
+    public function returnAjaxData()
+    {
+        try
+        {
+            $data         = json_decode(base64_decode($this->getRequestValue('actionElementId')), true);
+            if($data['pos']==0){
+                return (new DataJsonResponse())->setMessageAndTranslate('changesSaved')->setCallBackFunction($this->callBackFunction)->addRefreshTargetId($this->refreshActionIds);
+            }
+            $firewallRule = new FirewallRule();
+            $firewallRule->setApi($this->api());
+            $pos = $data['pos'];
+            $firewallRule->setPath($this->vm()->getPath() . "/firewall/rules/{$pos}");
+            $firewallRule->moveto( $pos-1);
+        }
+        catch (\Exception $exc)
+        {
+            return (new DataJsonResponse())->setStatusError()->setMessage($exc->getMessage())->setCallBackFunction($this->callBackFunction)->addRefreshTargetId($this->refreshActionIds);
+        }
+        return (new DataJsonResponse())->setMessageAndTranslate('changesSaved')->addRefreshTargetId('firewallDataTable');
+    }
+
+
+}

+ 60 - 0
app/UI/Firewall/Buttons/UpdateRuleButton.php

@@ -0,0 +1,60 @@
+<?php
+/* * ********************************************************************
+*  ProxmoxVPS Product developed. (27.03.19)
+* *
+*
+*  CREATED BY MODULESGARDEN       ->       http://modulesgarden.com
+*  CONTACT                        ->       contact@modulesgarden.com
+*
+*
+* This software is furnished under a license and may be used and copied
+* only  in  accordance  with  the  terms  of such  license and with the
+* inclusion of the above copyright notice.  This software  or any other
+* copies thereof may not be provided or otherwise made available to any
+* other person.  No title to and  ownership of the  software is  hereby
+* transferred.
+*
+*
+* ******************************************************************** */
+
+namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Forms;
+
+use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Providers\FirewallProvider;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\BaseForm;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Fields\FileField;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Fields\Hidden;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Fields\Text;
+
+class RestoreForm extends BaseForm implements ClientArea
+{
+    use ApiService;
+
+    public function initContent()
+    {
+        $this->initIds('restoreForm');
+        $this->setFormType('restore');
+        $this->setProvider(new FirewallProvider());
+        $this->initFields();
+        $this->loadDataToForm();
+    }
+
+    public function getAllowedActions()
+    {
+        return ['restore'];
+    }
+
+    protected function initFields(){
+        //rules
+        $field = new FileField('rules');
+        $field->setId('pmFirewallRules');
+        $this->addField($field);
+        //rules
+        $field = new Hidden('rulesJson');
+        $field->addHtmlAttribute('id','pmRulesJson');
+        $this->addField($field);
+
+    }
+
+}

+ 20 - 0
app/UI/Firewall/Forms/RuleForm.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Modals;
+
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Forms\CreateGroupForm;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Forms\RestoreForm;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Modals\BaseEditModal;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Modals\ModalConfirmSuccess;
+
+class RestoreModal extends BaseEditModal implements ClientArea
+{
+
+    public function initContent()
+    {
+        $this->initIds('restoreModal');
+        $this->addForm(new RestoreForm());
+    }
+
+}

+ 13 - 1
app/UI/Firewall/Modals/UpdateGroupModal.php

@@ -26,9 +26,12 @@ use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons\CreateGroupButton;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons\CreateRuleButton;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons\DeleteButton;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons\DeleteMassButton;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons\DownloadButton;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons\DownRuleButton;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons\EnableSwitchButton;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons\RestoreButton;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons\UpdateRuleButton;
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Firewall\Buttons\UpRuleButton;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\DataTable\Column;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\DataTable\DataProviders\Providers\ArrayDataProvider;
@@ -56,6 +59,14 @@ class FirewallDataTable extends DataTable implements ClientArea
         }
         $this->addButton($createRule);
         $this->addButton($createGroup);
+        //download rules
+        $this->addButton(new DownloadButton());
+        //restore rules
+        $this->addButton(new RestoreButton());
+        //up
+        $this->addActionButton(new UpRuleButton());
+        //down
+        $this->addActionButton(new DownRuleButton());
         //Update
         $this->addActionButton(new UpdateRuleButton());
         //Delete
@@ -64,7 +75,8 @@ class FirewallDataTable extends DataTable implements ClientArea
 
     protected function loadHtml()
     {
-        $this->addColumn((new Column('enable')))
+        $this->addColumn((new Column('pos'))->setSearchable(true, "string")->setOrderable())
+            ->addColumn((new Column('enable')))
             ->addColumn((new Column('type'))->setSearchable(true, "string")->setOrderable())
             ->addColumn((new Column('action'))->setSearchable(true, "string")->setOrderable())
             ->addColumn((new Column('iface'))->setSearchable(true, "string")->setOrderable())

+ 24 - 0
app/UI/Firewall/Providers/FirewallProvider.php

@@ -101,5 +101,29 @@ class FirewallProvider extends BaseDataProvider implements ClientArea
             ->setCallBackFunction('pmToggleButton');
     }
 
+    public function restore(){
+        $rules = \json_decode(html_entity_decode($this->getFormDataValues()['rulesJson'],ENT_QUOTES),true);
+        if(!$this->getFormDataValues()['rulesJson'] || !$rules ){
+            return (new HtmlDataJsonResponse())
+                ->setStatusError()
+                ->setMessageAndTranslate('The file with firewall rules is empty or invalid');
+        }
+        $this->acl()->firewall();
+        $this->resourceGuard()->firewallLimit(count($rules));
+        foreach ($rules as $rule){
+            $firewallRule = new FirewallRule();
+            $firewallRule->setApi($this->api());
+            $firewallRule->setPath($this->vm()->getPath() . "/firewall/rules/");
+            $firewallRule->setAttributes($rule);
+            $firewallRule->create();
+        }
+        return (new HtmlDataJsonResponse())
+            ->setStatusSuccess()
+            ->setMessageAndTranslate('The firewall rules have been restored successfully')
+            ->addData('createButtonStatus', $this->resourceGuard()->hasfirewallLimit())
+            ->setCallBackFunction('pmToggleButton');
+    }
+
+
 
 }

+ 20 - 16
app/UI/FirewallOption/Buttons/UpdateButton.php

@@ -100,22 +100,26 @@ class UpdateForm extends BaseForm implements ClientArea
         $field->setAvailableValues($logLevels);
         $this->addField($field);
         //policy_in
-        $field = new Select('policy_in');
-        $field->setAvailableValues([
-            "DROP"   => sl("lang")->tr("DROP"),
-            "ACCEPT" => sl("lang")->tr("ACCEPT"),
-            "REJECT" => sl("lang")->tr("REJECT"),
-        ]);
-        $field->setDefaultValue("DROP");
-        $this->addField($field);
+        if($this->acl()->hasFirewallOption("policy_in")) {
+            $field = new Select('policy_in');
+            $field->setAvailableValues([
+                "DROP" => sl("lang")->tr("DROP"),
+                "ACCEPT" => sl("lang")->tr("ACCEPT"),
+                "REJECT" => sl("lang")->tr("REJECT"),
+            ]);
+            $field->setDefaultValue("DROP");
+            $this->addField($field);
+        }
         //policy_out
-        $field = new Select('policy_out');
-        $field->setAvailableValues([
-            "DROP"   => sl("lang")->tr("DROP"),
-            "ACCEPT" => sl("lang")->tr("ACCEPT"),
-            "REJECT" => sl("lang")->tr("REJECT"),
-        ]);
-        $field->setDefaultValue("ACCEPT");
-        $this->addField($field);
+        if($this->acl()->hasFirewallOption("policy_out")) {
+            $field = new Select('policy_out');
+            $field->setAvailableValues([
+                "DROP"   => sl("lang")->tr("DROP"),
+                "ACCEPT" => sl("lang")->tr("ACCEPT"),
+                "REJECT" => sl("lang")->tr("REJECT"),
+            ]);
+            $field->setDefaultValue("ACCEPT");
+            $this->addField($field);
+        }
     }
 }

+ 1 - 1
app/UI/FirewallOption/Modals/CreateModal.php

@@ -52,7 +52,7 @@ class FirewallOption extends BaseContainer implements ClientArea, AjaxElementInt
     {
         $vars = ['enteries' => []];
         $lang = sl("lang");
-        $allowed = ['log_level_in', 'log_level_out', 'policy_in', 'policy_out'];
+        $allowed = ['log_level_in', 'log_level_out'];
         foreach ($this->vm()->firewallOptions()->read()->toArray() as $key => $value)
         {
             if(!in_array($key, $allowed) && !$this->acl()->hasFirewallOption($key)){

+ 4 - 0
app/UI/FirewallOption/Providers/FirewallOptionProvider.php

@@ -28,6 +28,10 @@ use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Buttons\ButtonModal;
 class RebootButton extends ButtonModal implements ClientArea, AdminArea
 {
 
+    protected $htmlAttributes = [
+        'href'        => 'javascript:;',
+    ];
+
     public function initContent()
     {
         $this->initIds('rebootButton');

+ 0 - 1
app/UI/Home/Buttons/RedirectButton.php

@@ -34,7 +34,6 @@ class RedirectButton extends ButtonRedirect implements ClientArea, AdminArea
     protected $title = 'redirectButton';
     protected $imageUrl = null;
     protected $htmlAttributes = [
-        'data-toggle' => 'lu-tooltip',
     ];
 
     public function afterInitContent()

+ 4 - 0
app/UI/Home/Buttons/ShutdownButton.php

@@ -28,6 +28,10 @@ use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Buttons\ButtonModal;
 class ShutdownButton extends ButtonModal implements ClientArea, AdminArea
 {
 
+    protected $htmlAttributes = [
+        'href'        => 'javascript:;',
+    ];
+
     public function initContent()
     {
         $this->initIds('shutdownButton');

+ 4 - 0
app/UI/Home/Buttons/StartButton.php

@@ -28,6 +28,10 @@ use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Buttons\ButtonModal;
 class StartButton extends ButtonModal implements ClientArea, AdminArea
 {
 
+    protected $htmlAttributes = [
+        'href'        => 'javascript:;',
+    ];
+
     public function initContent()
     {
         $this->initIds('startButton');

+ 4 - 0
app/UI/Home/Buttons/StopButton.php

@@ -28,6 +28,10 @@ use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Buttons\ButtonModal;
 class StopButton extends ButtonModal implements ClientArea, AdminArea
 {
 
+    protected $htmlAttributes = [
+        'href'        => 'javascript:;',
+    ];
+
     public function initContent()
     {
         $this->initIds('stopButton');

+ 7 - 0
app/UI/Home/Forms/MigrateForm.php

@@ -19,6 +19,7 @@
 
 namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Home\Forms;
 
+use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Home\Providers\MigrateProvider;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Helpers\AlertTypesConstants;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\AdminArea;
@@ -28,6 +29,8 @@ use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Fields\Switcher;
 
 class MigrateForm extends BaseForm implements AdminArea
 {
+    use ProductService;
+
     public function initContent()
     {
         $this->initIds('migrateForm');
@@ -50,5 +53,9 @@ class MigrateForm extends BaseForm implements AdminArea
         $this->addField(new Select('target'));
         //online
         $this->addField((new Switcher('online'))->setDescription('tip'));
+        //with-local-disks kvm only
+        if($this->configuration()->isQemu()){
+            $this->addField((new Switcher('with-local-disks'))->setDescription('tip')->setDefaultValue('on'));
+        }
     }
 }

+ 11 - 8
app/UI/Home/Forms/RebootForm.php

@@ -21,6 +21,7 @@
 namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Home\Pages;
 
 
+use ModulesGarden\ProxmoxAddon\App\Repositories\ModuleSettingRepository;
 use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\UrlService;
@@ -46,30 +47,32 @@ class ServiceActions extends BaseContainer implements ClientArea, AdminArea
     public function initContent()
     {
         $this->initIds('serviceActions');
+        $this->moduleSetting = new ModuleSettingRepository();
+        $adminArea = isAdmin();
         //Start
-        if (isAdmin() || $this->configuration()->isPermissionStart())
+        if (($adminArea && $this->moduleSetting->isPermissionStart()) || (!$adminArea && $this->configuration()->isPermissionStart()))
         {
             $this->addButton(new StartButton("startButton"));
         }
         //Reboot
-        if (isAdmin() || $this->configuration()->isPermissionReboot())
+        if (($adminArea && $this->moduleSetting->isPermissionReboot()) ||  (!$adminArea && $this->configuration()->isPermissionReboot()))
         {
             $this->addButton(new RebootButton("rebootButon"));
         }
         //Stop
-        if (isAdmin() || $this->configuration()->isPermissionStop())
+        if (($adminArea && $this->moduleSetting->isPermissionStop()) || (!$adminArea &&  $this->configuration()->isPermissionStop()))
         {
             $this->addButton(new StopButton("stopButton"));
         }
         //Shutdown
-        if (isAdmin() || $this->configuration()->isPermissionShutdown())
+        if (($adminArea && $this->moduleSetting->isPermissionShutdown()) || (!$adminArea && $this->configuration()->isPermissionShutdown()))
         {
             $this->addButton(new ShutdownButton("shutdownButton"));
         }
         //noVNC
 
         $serviceUrl = new UrlServiceHelper();
-        if (isAdmin() || $this->configuration()->isPermissionNovnc())
+        if (($adminArea && $this->moduleSetting->isPermissionNovnc()) || (!$adminArea && $this->configuration()->isPermissionNovnc()))
         {
 
             $redirectButton = new RedirectButton('novnc');
@@ -79,7 +82,7 @@ class ServiceActions extends BaseContainer implements ClientArea, AdminArea
             $this->addButton($redirectButton);
         }
         //Spice Console
-        if (isAdmin() || $this->configuration()->isPermissionSpice())
+        if (($adminArea && $this->moduleSetting->isPermissionSpice()) || (!$adminArea && $this->configuration()->isPermissionSpice()))
         {
             $redirectButton = new RedirectButton('spice');
             $redirectButton->setImageUrl(BuildUrl::getAppAssetsURL() . DS . 'img' . DS . 'buttons' . DS . 'spice.png');
@@ -90,7 +93,7 @@ class ServiceActions extends BaseContainer implements ClientArea, AdminArea
             $this->addButton($redirectButton);
         }
         //Xterm.js Console
-        if (isAdmin() || $this->configuration()->isPermissionXtermjs())
+        if (($adminArea && $this->moduleSetting->isPermissionXtermjs()) || (!$adminArea && $this->configuration()->isPermissionXtermjs() ))
         {
             $redirectButton = new RedirectButton('xtermjs');
             $redirectButton->setImageUrl(BuildUrl::getAppAssetsURL() . DS . 'img' . DS . 'buttons' . DS . 'xtermjs.png');
@@ -98,7 +101,7 @@ class ServiceActions extends BaseContainer implements ClientArea, AdminArea
             $this->addButton($redirectButton);
         }
         //Migration
-        if (isAdmin())
+        if ($adminArea && $this->moduleSetting->isPermissionMigrate())
         {
             $this->addButton(new MigrateButton());
         }

+ 3 - 0
app/UI/Home/Pages/ServiceManagement.php

@@ -60,6 +60,9 @@ class MigrateProvider extends BaseDataProvider implements AdminArea
             "targetNode" => $this->formData['target'],
             "online"     => $this->formData['online'] == "on" ? 1 : 0
         ];
+        if($this->formData['with-local-disks'] && $this->configuration()->isQemu()){
+            $attributes['with-local-disks'] = $this->formData['with-local-disks'] == "on" ? 1 : 0;
+        }
         if (Job::where("job", MigrateVmJob::class. '@handle')->whereIn("status", ['waiting', "running", ""])
                                                   ->where("rel_id", $this->getWhmcsParamByKey("serviceid"))
                                                   ->where("rel_type", "hosting")->count())

+ 1 - 1
app/UI/Home/Providers/StatusProvider.php

@@ -1,7 +1,7 @@
 <div class="h4 lu-m-b-3x lu-m-t-3x">{$MGLANG->absoluteT('serverCA','home','pagesHeader')}</div>
 <div class="lu-tiles lu-row lu-row--eq-height">
     {foreach from=$rawObject->getPages() key=controller item=settings}
-        <div class="lu-col-sm-16p" style="justify-content: center;">
+        <div class="lu-col-sm-20p" style="justify-content: center;">
             <a class="lu-tile lu-tile--btn" href="{$rawObject->getURL($controller)}">
                 <div class="lu-i-c-6x">
                     <img src="{$rawObject->getImageUrl($controller)}"

+ 2 - 2
app/UI/Home/Templates/pages/serviceActions.tpl

@@ -1,8 +1,8 @@
 <div class="h4 lu-m-b-3x lu-m-t-3x">{$MGLANG->absoluteT('serverCA','home',$rawObject->getId())}</div>
 <div class="lu-tiles lu-row lu-row--eq-height">
     {foreach from=$rawObject->getButtons() key=setting item=dataElement}
-        <div class="lu-col-sm-16p" style="justify-content: center;">
-            <a class="{$dataElement->getClasses()}" href="{$dataElement->getHref()}" {if $dataElement->isRawTitle()}title="{$dataElement->getRawTitle()}"{elseif $dataElement->getTitle()}title="{$MGLANG->T('button', $dataElement->getTitle())}"{/if}  {foreach $dataElement->getHtmlAttributes() as $aValue} {$aValue@key}="{$aValue}"{/foreach}>
+        <div class="lu-col-sm-20p" style="justify-content: center;">
+            <a class="{$dataElement->getClasses()}" href="{$dataElement->getHref()}"   {foreach $dataElement->getHtmlAttributes() as $aValue} {$aValue@key}="{$aValue}"{/foreach}>
                 <div class="lu-i-c-6x">
                     {if $dataElement->getImageUrl()}
                         <img src="{$dataElement->getImageUrl()}"

+ 3 - 2
app/UI/Home/Templates/pages/vpsBuild.tpl

@@ -83,7 +83,7 @@ class IpAddressProvider extends BaseDataProvider implements ClientArea
             }
             //insert to data base
             $ip->save();
-            $this->hosting()->ipAdd($ip->ip);
+            $this->hosting()->ipAdd($ip->ip)->save();
             //lock ip in proxmox addon
             if (!Utility::isIpManagerProxmoxVPSIntegration())
             {
@@ -107,6 +107,7 @@ class IpAddressProvider extends BaseDataProvider implements ClientArea
 
     public function delete()
     {
+        $this->networkService->setDeletePrivateNetwork(true);
         $this->networkService->deleteByIpAddresses([$this->formData['id']]);
         if ($this->configuration()->isIpsetIpFilter())
         {
@@ -118,4 +119,4 @@ class IpAddressProvider extends BaseDataProvider implements ClientArea
     }
 
 
-}
+}

+ 2 - 1
app/UI/MountPoint/Buttons/BackupSwitchButton.php

@@ -34,6 +34,7 @@ class ReinstallTab extends TabsWidget implements ClientArea, AdminArea
     public function initContent()
     {
         $this->addElement(new TemplateRawDataTable());
-        //$this->addElement(new IsoRawDataTable());
+        $this->addElement(new IsoRawDataTable());
+
     }
 }

+ 25 - 1
app/UI/Reinstall/Pages/TemplateDataTable.php

@@ -21,14 +21,17 @@ namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Reinstall\Providers;
 
 
 use MGProvision\Proxmox\v2\models\Kvm;
+use MGProvision\Proxmox\v2\repository\FirewallRulesRepository;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\MigrateVmJob;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\Reinstall\BackupVmJob;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\Reinstall\CreateVmJob;
 use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\Reinstall\DeleteVmJob;
+use ModulesGarden\ProxmoxAddon\App\Jobs\Vps\UpdateSnippet;
 use ModulesGarden\ProxmoxAddon\App\Libs\Format;
 use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\HostingService;
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
+use ModulesGarden\ProxmoxAddon\App\Traits\Vps\SnippetTrait;
 use ModulesGarden\ProxmoxAddon\Core\Queue\Models\Job;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\AdminArea;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
@@ -43,6 +46,7 @@ class TemplateInstallProvider extends BaseDataProvider implements ClientArea, Ad
     use ProductService;
     use ApiService;
     use HostingService;
+    use SnippetTrait;
 
     public function read()
     {
@@ -65,10 +69,14 @@ class TemplateInstallProvider extends BaseDataProvider implements ClientArea, Ad
                 ->setStatusError()
                 ->setMessageAndTranslate("Task 'Reinstall' already exist");
         }
+        $firewalRules = new FirewallRulesRepository();
+        $firewalRules->setApi($this->api());
+        $firewalRules->findByVm($this->vm());
         $arguments = [
             'hostingId'  => $this->getWhmcsParamByKey('serviceid'),
             "osTemplate" => $this->formData['id'],
             "password"   => encrypt(html_entity_decode($this->formData['password'],ENT_QUOTES)),
+            "firewallRules" => $firewalRules->fetchAsArray()
         ];
         if ($this->configuration()->isBackupVmBeforeReinstall())
         {
@@ -99,6 +107,12 @@ class TemplateInstallProvider extends BaseDataProvider implements ClientArea, Ad
         list($node, $vmid) = explode("/", $this->formData['id']);
         $vm = new Kvm($node, $vmid);
         $vm->setApi($this->api());
+        if($vm->config()['template'] !=1){
+            sl("lang")->addReplacementConstant("vmid", $vmid);
+            return (new HtmlDataJsonResponse())
+                ->setStatusError()
+                ->setMessageAndTranslate('Reinstall protection, the VMID :vmid: is not KVM Template');
+        }
         $templateSize = $vm->getMasterHardDisk()->getBytes();
         if ($templateSize > $this->vm()->getMasterHardDisk()->getBytes())
         {
@@ -116,18 +130,28 @@ class TemplateInstallProvider extends BaseDataProvider implements ClientArea, Ad
             $ciuser =  $vm->config()['ciuser'];
             $this->hosting()->update(['username' => $ciuser ?: 'Administrator' ]);
         }
+        elseif( $vm->config()['ciuser']){
+            $this->hosting()->update(['username' =>  $vm->config()['ciuser'] ]);
+        }
         elseif($this->configuration()->isQemu() && $this->configuration()->getCiuser()){
             $this->hosting()->update(['username' =>$this->configuration()->getCiuser() ]);
         }
+        $firewalRules = new FirewallRulesRepository();
+        $firewalRules->setApi($this->api());
+        $firewalRules->findByVm($this->vm());
         $arguments = [
             'hostingId'  => $this->getWhmcsParamByKey('serviceid'),
             "osTemplate" => $this->formData['id'],
             "password"   => encrypt(html_entity_decode($this->formData['password'],ENT_QUOTES)),
+            "firewallRules" => $firewalRules->fetchAsArray()
         ];
         if ($this->configuration()->isBackupVmBeforeReinstall())
         {
             $job = queue(BackupVmJob::class, $arguments, null, "hosting", $this->getWhmcsParamByKey("serviceid"));
         }
+        if($this->configuration()->isQemu() &&  $this->hasSnippet()){
+            $job = queue(UpdateSnippet::class, $arguments, $job->id, "hosting", $this->getWhmcsParamByKey("serviceid"));
+        }
         $job = queue(DeleteVmJob::class, $arguments, $job->id, "hosting", $this->getWhmcsParamByKey("serviceid"));
         $job = queue(CreateVmJob::class, $arguments, $job->id, "hosting", $this->getWhmcsParamByKey("serviceid"));
         return (new HtmlDataJsonResponse())
@@ -142,4 +166,4 @@ class TemplateInstallProvider extends BaseDataProvider implements ClientArea, Ad
 
     }
 
-}
+}

+ 32 - 0
app/UI/Resources/Pages/ResourcesContainer.php

@@ -0,0 +1,32 @@
+<?php
+namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Resources\Pages;
+
+use ModulesGarden\Servers\ProxmoxVps\App\UI\Resources\Providers\BackupResourceProvider;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Builder\BaseContainer;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\AjaxElementInterface;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
+use ModulesGarden\Servers\ProxmoxVps\Core\UI\ResponseTemplates\RawDataJsonResponse;
+
+class ResourcesContainer extends BaseContainer implements ClientArea, AjaxElementInterface
+{
+    protected $id = 'resourcesContainer';
+    protected $title = 'resourcesContainer';
+    protected $vueComponent = true;
+    protected $defaultVueComponentName = 'mg-resourcesContainer';
+
+    public function initContent()
+    {
+        $this->provider = new BackupResourceProvider();
+    }
+
+    public function prepareAjaxData()
+    {
+
+        return $this->provider->read();
+    }
+
+    public function returnAjaxData()
+    {
+        return new RawDataJsonResponse(['data' => $this->prepareAjaxData()]);
+    }
+}

+ 39 - 0
app/UI/Resources/Providers/BackupResourceProvider.php

@@ -0,0 +1,39 @@
+<?php
+
+namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Resources\Providers;
+
+use ModulesGarden\ProxmoxAddon\App\Libs\Format;
+use ModulesGarden\ProxmoxAddon\App\Services\Vps\ResourceManager;
+
+use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\sl;
+
+class BackupResourceProvider
+{
+
+    public function read()
+    {
+        $resourceManager = new ResourceManager();
+        $lang = sl('lang');
+        $bs = $resourceManager->backupSize();
+        $resurces = [];
+        if(!$bs->isUnlimited() ){
+            $resurces[  ] = [
+                "name" => $lang->tr($bs->getName()),
+                "used" => Format::convertBytes($bs->getUsed()),
+                "total" => $bs->isUnlimited() ? $lang->abtr("Unlimited") : Format::convertBytes($bs->getTotal()),
+                "unit" => "",
+                "percent" => $bs->getPercent()
+            ];
+        }
+        if(!$resourceManager->backupFiles()->isUnlimited()){
+            $resurces[ ] = [
+                "name" => $lang->tr($resourceManager->backupFiles()->getName() ),
+                "used" => $resourceManager->backupFiles()->getUsed(),
+                "total" => $resourceManager->backupFiles()->getTotal(),
+                "unit" => "",
+                "percent" => $resourceManager->backupFiles()->getPercent()
+            ];
+        }
+        return $resurces;
+    }
+}

+ 5 - 0
app/UI/Resources/Templates/pages/resourcesContainer.tpl

@@ -0,0 +1,5 @@
+<mg-component-body-{$elementId|strtolower}
+        component_id='{$elementId}'
+        component_namespace='{$namespace}'
+        component_index='{$rawObject->getIndex()}'
+></mg-component-body-{$elementId|strtolower}>

+ 58 - 0
app/UI/Resources/Templates/pages/resourcesContainer_components.js

@@ -0,0 +1,58 @@
+mgJsComponentHandler.addDefaultComponent('mg-resourcesContainer', {
+    template: '#t-mg-resourcesContainer',
+    props: [
+        'component_id',
+        'component_namespace',
+        'component_index'
+    ],
+    data: function () {
+        return {
+            data: {
+            },
+            loading_state: false,
+            passwordShow: false,
+
+        };
+    },
+    created: function () {
+        var self = this;
+        self.$nextTick(function () {
+            self.loadAjaxData();
+        });
+        self.$parent.$root.$on('reloadMgData', this.updateMgData);
+    },
+    methods: {
+        loadAjaxData: function () {
+            var self = this;
+            self.loading_state = true;
+
+            var requestParams = {
+                loadData: self.component_id,
+                namespace: self.component_namespace,
+                index: self.component_index
+            };
+
+            var response = mgPageControler.vueLoader.vloadData(requestParams);
+            return response.done(function (data) {
+                self.data = data.data.rawData.data;
+                self.loading_state = false;
+            }).fail(function () {
+                self.loading_state = false;
+            });
+        },
+        loadModal: function (event, targetId, namespace, index, params, addSpinner) {
+            mgPageControler.vueLoader.loadModal(event, targetId,
+                typeof namespace !== 'undefined' ? namespace : getItemNamespace(targetId),
+                typeof index !== 'undefined' ? index : getItemIndex(targetId), params, addSpinner);
+        },
+        updateMgData: function(toReloadId){
+            if(this.component_id === toReloadId)
+            {
+                this.loadAjaxData();
+            }
+        },
+        widthPercent: function(percent){
+            return 'width: '+percent+ '%';
+        }
+    }
+});

+ 37 - 0
app/UI/Resources/Templates/pages/resourcesContainer_components.tpl

@@ -0,0 +1,37 @@
+<script type="text/x-template" id="t-mg-resourcesContainer-{$elementId|strtolower}"
+        :component_id="component_id"
+        :component_namespace="component_namespace"
+        :component_index="component_index"
+>
+    <div class="lu-row">
+
+    <div class="lu-col-md-12" id="{$rawObject->getId()}" namespace="{$namespace}"
+         index="{$rawObject->getIndex()}" actionid="{$rawObject->getIndex()}">
+        <div class="lu-widget">
+            <div class="lu-widget__header">
+                <div class="lu-widget__top lu-top">
+                    <div class="lu-top__title">
+                        <span>{$MGLANG->absoluteT('serverCA' ,'availableResources')}</span>
+                    </div>
+                </div>
+            </div>
+            <div class="lu-widget__body">
+                <div class="lu-widget__content">
+                    <div class="lu-progress lu-progress--h lu-progress--s lu-progress__label" v-for="(bar, key) in data">
+                        <div class="lu-progress__label">
+                            {{ bar.name }} {{ bar.used }} / {{ bar.total }} <span v-if="bar.unit"> {{ bar.unit }}  </span>
+                        </div>
+                        <div class="lu-progress__bar progress-bar-danger">
+                            <div class="lu-progress__fill"  :style=widthPercent(bar.percent)></div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="lu-preloader-container lu-preloader-container--full-screen lu-preloader-container--overlay"
+                 v-show="loading_state">
+                <div class="lu-preloader lu-preloader--sm"></div>
+            </div>
+        </div>
+    </div>
+    </div>
+</script>

+ 1 - 1
app/UI/ServiceInformation/Buttons/SshPrivateKeyDownloadButton.php

@@ -27,7 +27,7 @@ use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Buttons\ButtonDataTableModal
 class UpdateButton extends ButtonDataTableModalAction implements ClientArea, AdminArea
 {
     protected $id = 'updateeButton';
-    protected $icon = 'lu-zmdi lu-zmdi-wrench';
+    protected $icon = 'lu-zmdi lu-zmdi-edit';
 
     public function initContent()
     {

+ 7 - 5
app/UI/ServiceInformation/Forms/SshPublicKeyDownloadForm.php

@@ -53,9 +53,11 @@ class UpdateForm extends BaseForm implements ClientArea
     private function initFields()
     {
         //Hostname
-        $field = new Text("hostname");
-        $field->addValidator(new HostnameValidator());
-        $this->addField($field);
+        if(isAdmin() || $this->configuration()->hasPermissionChangeHostname()){
+            $field = new Text("hostname");
+            $field->addValidator(new HostnameValidator());
+            $this->addField($field);
+        }
         if ($this->configuration()->isLxc())
         {
             return;
@@ -66,7 +68,7 @@ class UpdateForm extends BaseForm implements ClientArea
             $field->notEmpty();
             $this->addField($field);
         }
-/*        //boot device 1
+        //boot device 1
         $field = new Select("bootOrder0");
         $field->notEmpty();
         $this->addField($field);
@@ -77,7 +79,7 @@ class UpdateForm extends BaseForm implements ClientArea
         //boot device 3
         $field = new Select("bootOrder2");
         $field->notEmpty();
-        $this->addField($field); */
+        $this->addField($field);
         //sshkeys for kvm only
         if($this->configuration()->isPermissionSshkeys()){
             $field = new Textarea("sshkeys");

+ 35 - 21
app/UI/ServiceInformation/Modals/SshPublicKeyDownloadModal.php

@@ -39,7 +39,7 @@ use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\ResponseTemplates\RawDataJsonResponse;
 use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\isAdmin;
 use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\sl;
-use ModulesGarden\Servers\ProxmoxVps\App\Enum\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
 
 class ServiceInformation extends BaseContainer implements ClientArea, AdminArea, AjaxElementInterface
 {
@@ -57,7 +57,11 @@ class ServiceInformation extends BaseContainer implements ClientArea, AdminArea,
         $this->addClass('lu-text-left');
 
         //Update
-        $this->addButton(new UpdateButton());
+        $updateButton = new UpdateButton();
+        if($this->configuration()->isKvm() || ($this->configuration()->isLxc() && $this->configuration()->hasPermissionChangeHostname())){
+            $this->addButton($updateButton);
+        }
+
         if ($this->configuration()->isLxc() && KeyPair::ofHostingId($this->getWhmcsParamByKey('serviceid'))->count())
         {
             $keyPairs = KeyPair::ofHostingId($this->getWhmcsParamByKey('serviceid'))->first();
@@ -94,11 +98,14 @@ class ServiceInformation extends BaseContainer implements ClientArea, AdminArea,
         $vars                = [];
         //Status
         $status         = $this->vm()->status();
-        $vars['status'] = [
-            "uptime" => Utility::uptime($status['uptime']),
-            'cpu'    => Utility::cpuUsage($status['cpu']),
-            'cpus' => (int) $status['cpus']
-        ];
+        $vars['status'] = [];
+        if($this->configuration()->hasPermissionInformation("uptime")){
+            $vars['status']['uptime'] = Utility::uptime($status['uptime']);
+        }
+        if($this->configuration()->hasPermissionInformation("cpu")){
+            $vars['status']['cpu'] = Utility::cpuUsage($status['cpu']);
+            $vars['status']['cpus'] =(int) $status['cpus'];
+        }
         switch ($status['status'])
         {
             case 'running':
@@ -110,9 +117,11 @@ class ServiceInformation extends BaseContainer implements ClientArea, AdminArea,
                 $vars['status']['status'] = '<span class="lu-label lu-label--danger lu-label--status">' . sl('lang')->tr($status['status']) . '</span>';
         }
         //Memory
-        $vars['status']['memPercent'] = (int) round($status['mem'] / $status['maxmem'] * 100);
-        $vars['status']['maxmem']     = Format::convertBytes($status['maxmem']);
-        $vars['status']['mem']        = Format::convertBytes($status['mem']);
+        if($this->configuration()->hasPermissionInformation("mem")){
+            $vars['status']['memPercent'] = (int) round($status['mem'] / $status['maxmem'] * 100);
+            $vars['status']['maxmem']     = Format::convertBytes($status['maxmem']);
+            $vars['status']['mem']        = Format::convertBytes($status['mem']);
+        }
         if ($this->vm() instanceof Lxc)
         {
             //SWAP
@@ -137,21 +146,22 @@ class ServiceInformation extends BaseContainer implements ClientArea, AdminArea,
             $vars['status']['balloon_min'] = Format::convertBytes($status['balloon_min']);
         }
         //Config
-        $vars['config'] = [
-            "name" => $this->vm()->config()['name'] ? $this->vm()->config()['name'] : $this->vm()->config()['hostname']
-        ];
+        $vars['config'] = [ ];
+        if($this->configuration()->hasPermissionInformation("name")){
+            $vars['config']['name'] = $this->vm()->config()['name'] ? $this->vm()->config()['name'] : $this->vm()->config()['hostname'];
+        }
         if (isAdmin())
         {
             $vars['node'] = $this->vm()->getNode();
         }
         $vars['virtualization'] = $this->vm()->getVirtualization();
         // Default configuration option
-        if (!$this->isWhmcsConfigOption(ConfigurableOption::IPV4) && $this->configuration()->getIpv4())
+        if (!$this->isWhmcsConfigOption(ConfigurableOption::IPV4) && $this->configuration()->getIpv4() && $this->configuration()->hasPermissionInformation("ipAddresses") )
         {
             $vars['ipAddresses'] = $this->configuration()->getIpv4();
         }
         //BackupMaxFiles
-        if (!$this->isWhmcsConfigOption(ConfigurableOption::BACKUPS_FILES) && $this->configuration()->getBackupMaxFiles())
+        if (!$this->isWhmcsConfigOption(ConfigurableOption::BACKUPS_FILES) && $this->configuration()->getBackupMaxFiles() && $this->configuration()->hasPermissionInformation("backupFilesLimit"))
         {
             $vars['backupsFilesLimit'] = $this->configuration()->getBackupMaxFiles();
             if($this->configuration()->getBackupMaxFiles() =="-1"){
@@ -159,17 +169,21 @@ class ServiceInformation extends BaseContainer implements ClientArea, AdminArea,
             }
         }
         //NetworkRate
-        /** @var NetworkDeviceKvm|NetworkDeviceLxc $networkDevice */
-        $networkDevice = $this->vm()->getNetworkDevices($this->configuration()->getBridge())[0];
-        if ($networkDevice && $networkDevice->getRate())
-        {
-            $vars['networkRate'] = "{$networkDevice->getRate()} MB/s ({$networkDevice->getRateMbps()} Mbps)";
+        if( $this->configuration()->hasPermissionInformation("networkRate")){
+            /** @var NetworkDeviceKvm|NetworkDeviceLxc $networkDevice */
+            $networkDevice = $this->vm()->getNetworkDevices($this->configuration()->getBridge())[0];
+            if ($networkDevice && $networkDevice->getRate())
+            {
+                $vars['networkRate'] = "{$networkDevice->getRate()} MB/s ({$networkDevice->getRateMbps()} Mbps)";
+            }
         }
         //KVM
         if ($this->vm() instanceof Kvm)
         {
             //CD-ROM
-            $vars['cdrom'] = $this->vm()->getIso();
+            if($this->configuration()->isPermissionIsoImage()){
+                $vars['cdrom'] = $this->vm()->getIso();
+            }
             //Boot order
             $vars['bootOrder'] = [];
             foreach ($this->vm()->getBootOrder() as $device)

+ 19 - 6
app/UI/ServiceInformation/Providers/UpdateProvider.php

@@ -76,11 +76,20 @@ class UpdateProvider extends BaseDataProvider implements ClientArea
                     0   => sl("lang")->tr("None"),
                     $this->vm()->getMasterHardDisk()->getId() => sl("lang")->tr("Disk"),
                 ];
+                $map =['c' =>  $this->vm()->getMasterHardDisk()->getId()];
                 if($cdrom['bus']){
                     $options[$cdrom['bus']] = sl("lang")->tr("CD-ROM");
+                    $map['d'] = $cdrom['bus'];
                 }
                 if($nd[0] instanceof  NetworkDeviceKvm){
                     $options[$nd[0]->getId()] = sl("lang")->tr("Network");
+                    $map['n'] = $nd[0]->getId();
+                }
+                //d -cdrom c- hard disk n - network
+                foreach ($bootOrder as $k => $boot){
+                    if($map[$boot]){
+                        $this->data['bootOrder'.$k] =$map[$boot];
+                    }
                 }
             }
             $this->availableValues['bootOrder0'] = $options;
@@ -105,13 +114,15 @@ class UpdateProvider extends BaseDataProvider implements ClientArea
         if ($this->vm() instanceof Kvm)
         {
             //Hostname
-            $this->vm()->updateConfig(["name" => $this->formData['hostname']]);
+            if(isAdmin() || $this->configuration()->hasPermissionChangeHostname()){
+                $this->vm()->updateConfig(["name" => $this->formData['hostname']]);
+            }
             //iso
             if ($this->vm()->cdrom())
             {
                 $this->vm()->updateCdrom($this->formData['iso']);
             }
-/*            //Boot order
+            //Boot order
             $bootOrder = null;
             $order = [];
             for ($i = 0; $i <= 2; $i++)
@@ -129,7 +140,7 @@ class UpdateProvider extends BaseDataProvider implements ClientArea
             }else{
                 $this->vm()->changeBootOrder($bootOrder);
             }
-*/
+
             //sshkeys
             if($this->configuration()->isPermissionSshkeys()){
                 if ($this->formData['sshkeys'])
@@ -150,10 +161,12 @@ class UpdateProvider extends BaseDataProvider implements ClientArea
             if ($this->vm() instanceof Lxc)
             {
                 //Hostname
-                $this->vm()->updateConfig(["hostname" => $this->formData['hostname']]);
+                if(isAdmin() || $this->configuration()->hasPermissionChangeHostname()){
+                    $this->vm()->updateConfig(["hostname" => $this->formData['hostname']]);
+                }
             }
         }
-        if( $this->hosting()->domain != $this->formData['hostname'] ){
+        if($this->formData['hostname'] && $this->hosting()->domain != $this->formData['hostname'] ){
             $this->hosting()->update(['domain' => $this->formData['hostname'] ]);
         }
 
@@ -164,4 +177,4 @@ class UpdateProvider extends BaseDataProvider implements ClientArea
 
     }
 
-}
+}

+ 14 - 6
app/UI/ServiceInformation/Templates/pages/serviceInformation.tpl

@@ -12,9 +12,11 @@
                         <div class="lu-top__title">
                             {$MGLANG->absoluteT($title)}
                         </div>
-                        <div class="lu-top__toolbar">
-                            {$rawObject->insertButton('updateeButton')}
-                        </div>
+                        {if $rawObject->hasButtons()}
+                            <div class="lu-top__toolbar">
+                                {$rawObject->insertButton('updateeButton')}
+                            </div>
+                        {/if}
                     </div>
                 </div>
                 <div class="lu-widget__body">
@@ -31,7 +33,7 @@
                                     <td>{$MGLANG->tr('Node')}</td>
                                     <td>{literal}{{ data.node  }}{/literal}</td>
                                 </tr>
-                                <tr>
+                                <tr v-if="data.config.name ">
                                     <td>{$MGLANG->tr('Hostname')}</td>
                                     <td>
                                         <span>{literal}{{ data.config.name  }} {/literal} </span>
@@ -43,7 +45,7 @@
                                         {literal} {{ data.status.uptime }} {/literal}
                                     </td>
                                 </tr>
-                                <tr>
+                                <tr v-if="data.status.cpu">
                                     <td>{$MGLANG->tr('CPU Usage')}</td>
                                     <td>
                                         {literal}  {{ data.status.cpu }} {/literal} % {$MGLANG->tr('of')} {literal} {{ data.status.cpus }} {/literal}
@@ -51,7 +53,7 @@
                                         <span v-if="data.status.cpuunit"> {$MGLANG->tr('CPU Units')}  {literal} {{ data.status.cpuunit }}{/literal}</span>
                                     </td>
                                 </tr>
-                                <tr>
+                                <tr v-if="data.status.mem">
                                     <td>{$MGLANG->tr('Memory')}</td>
                                     <td v-if="data.virtualization == 'qemu' && data.status.balloon_min">
                                         {$MGLANG->tr('Total')}: {literal}{{ data.status.maxmem }}{/literal}
@@ -100,6 +102,12 @@
                                         <span>{literal} {{ data.cdrom.iso }}  {/literal} </span>
                                     </td>
                                 </tr>
+                                <tr v-if="data.bootOrder">
+                                    <td>{$MGLANG->tr('Boot Order')}</td>
+                                    <td>
+                                        <span>{literal} {{ data.bootOrder }}  {/literal} </span>
+                                    </td>
+                                </tr>
                                 <tr v-if="data.sshkeysName">
                                     <td>{$MGLANG->tr('SSH Public Key')}</td>
                                     <td>

+ 4 - 4
app/UI/Snapshot/Buttons/CreateButton.php

@@ -53,17 +53,17 @@ class CreateForm extends BaseForm implements ClientArea
         return ['create'];
     }
 
-    private function initFields()  {
+    private function initFields()
+    {
         //name
         $field = new Text('name');
         $field->notEmpty();
         $field->addValidator(new SnapshotValidator(true));
         $this->addField($field);
-        if ($this->vm() instanceof Kvm) {
+        if ($this->vm() instanceof Kvm)
+        {
             //vmstate
             $field = new Switcher("vmstate");
-            $field->addHtmlAttribute("disabled",true);
-            $field->addClass("disabled");
             $this->addField($field);
         }
         //description

+ 7 - 4
app/UI/Snapshot/Forms/CreateJobForm.php

@@ -22,7 +22,7 @@ namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Forms;
 use MGProvision\Proxmox\v2\models\Kvm;
 use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
 use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService;
-use ModulesGarden\Servers\ProxmoxVps\App\Enum\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Providers\JobProvider;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Providers\SnapshotProvider;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Validators\SnapshotValidator;
@@ -35,12 +35,14 @@ use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Fields\Text;
 use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Fields\Textarea;
 
 
-class CreateJobForm extends BaseForm implements ClientArea {
+class CreateJobForm extends BaseForm implements ClientArea
+{
     use ApiService;
     use ProductService;
     use JobForm;
 
-    public function initContent(){
+    public function initContent()
+    {
         $this->initIds('createJobForm');
         $this->setFormType('create');
         $this->setProvider(new JobProvider());
@@ -49,7 +51,8 @@ class CreateJobForm extends BaseForm implements ClientArea {
         $this->loadDataToForm();
     }
 
-    public function getAllowedActions() {
+    public function getAllowedActions()
+    {
         return ['create'];
     }
 

+ 11 - 15
app/UI/Snapshot/Forms/DeleteForm.php

@@ -4,7 +4,7 @@
 namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Forms;
 
 use MGProvision\Proxmox\v2\models\Kvm;
-use ModulesGarden\Servers\ProxmoxVps\App\Enum\ConfigurableOption;
+use ModulesGarden\ProxmoxAddon\App\Enum\Vps\ConfigurableOption;
 use ModulesGarden\Servers\ProxmoxVps\App\Enum\JobPeriod;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Validators\SnapshotValidator;
 use ModulesGarden\Servers\ProxmoxVps\App\UI\Validators\StartTimeValidator;
@@ -21,14 +21,16 @@ trait JobForm
 
     public function setJobConfirmMessage(){
         $limit = $this->getWhmcsConfigOption(ConfigurableOption::SNAPSHOTS, $this->configuration()->getSnapshotMaxFiles());
-        if ($limit && $limit != "-1")  {
+        if ($limit && $limit != "-1")
+        {
             sl("lang")->addReplacementConstant("snapshotFilesLimit" , $limit);
             $this->setInternalAlertMessage( sl("lang")->tr('Your snapshot limit is :snapshotFilesLimit:. When you exceed this limit, the last snapshot will be replaced with a new one.'));
             $this->setInternalAlertMessageRaw(true);
         }
     }
 
-    protected function initFields() {
+    protected function initFields()
+    {
         $formData = $this->getRequestValue("formData");
         //id
         $id = false;
@@ -42,11 +44,11 @@ trait JobForm
         $isHourly = true;
         if($formData &&  $formData['period'] ){
             $isHourly = $formData['period'] == JobPeriod::HOURLY;
-        } elseif (!$formData && $id) {
+        } elseif (!$formData && $id){
             $this->loadProvider();
             $this->dataProvider->read();
             $isHourly = $this->dataProvider->getValueById('period') == JobPeriod::HOURLY ;
-        } elseif (!$formData && !$id) {
+        }elseif (!$formData && !$id){
             $period = $this->configuration()->getPermissionSnapshotJobPeriod();
             if($period && in_array(JobPeriod::HOURLY, $period)){
                 $isHourly = true;
@@ -55,29 +57,25 @@ trait JobForm
             }
         }
         //id
-        if(is_numeric($this->getRequestValue("actionElementId"))) {
+        if(is_numeric($this->getRequestValue("actionElementId"))){
             $this->addField(new Hidden("id"));
         }
-        
         //period
         $field = new Select('period');
         $field->addHtmlAttribute('bi-event-change', "reloadVueModal");
         $this->addField($field);
-        
         //run_every
         if($isHourly){
             $field = new Number('run_every',1,48);
             $field->setPlaceholder("1");
             $this->addField($field);
         }
-        
         //days
         if(!$isHourly){
             $field = new Select('days');
             $field->enableMultiple();
             $this->addField($field);
         }
-        
         //start_time
         if(!$isHourly){
             $field = new Text('start_time');
@@ -85,22 +83,20 @@ trait JobForm
             $field->addValidator(new StartTimeValidator(false));
             $this->addField($field);
         }
-        
         //name
         $field = new Text('name');
         $field->notEmpty();
         $field->addValidator(new SnapshotValidator(true));
         $this->addField($field);
-        
         //vmstate
-        if ($this->vm() instanceof Kvm) {
+        if ($this->vm() instanceof Kvm)
+        {
             $field = new Switcher("vmstate");
-            $field->addHtmlAttribute("disabled",true);
-            $field->addClass("disabled");
             $this->addField($field);
         }
         //description
         $field = new Textarea("description");
         $this->addField($field);
+
     }
 }

+ 18 - 9
app/UI/Snapshot/Forms/RollbackForm.php

@@ -16,23 +16,27 @@ class JobProvider  extends BaseModelDataProvider implements ClientArea
 {
     use ProductService;
 
-    public function __construct()  {
+    public function __construct()
+    {
         parent::__construct(SnapshotJob::class);
     }
 
-    protected function isModelProper($model) {
+    protected function isModelProper($model)
+    {
         if (in_array(get_parent_class($model), [
             'ModulesGarden\Servers\ProxmoxVps\Core\Models\ExtendedEloquentModel',
             'ModulesGarden\ProxmoxAddon\Core\Models\ExtendedEloquentModel',
             'Illuminate\Database\Eloquent\Model'
-        ])) {
+        ]))
+        {
             return true;
         }
 
         return false;
     }
 
-    public function read() {
+    public function read()
+    {
         //period
         $period = $this->configuration()->getPermissionSnapshotJobPeriod();
         if($period && in_array(JobPeriod::HOURLY, $period)){
@@ -65,7 +69,8 @@ class JobProvider  extends BaseModelDataProvider implements ClientArea
         }
     }
 
-    public function create() {
+    public function create()
+    {
         //vmstate
         if(isset($this->formData['vmstate'])){
             $vmstate = $this->formData['vmstate']=="on" ? 1:0;
@@ -81,7 +86,8 @@ class JobProvider  extends BaseModelDataProvider implements ClientArea
             ->setCallBackFunction('pmToggleCreateJobButton');
     }
 
-    public function update() {
+    public function update(){
+
         //vmstate
         if(isset($this->formData['vmstate'])){
             $vmstate = $this->formData['vmstate']=="on" ? 1:0;
@@ -92,8 +98,10 @@ class JobProvider  extends BaseModelDataProvider implements ClientArea
         return (new HtmlDataJsonResponse())->setMessageAndTranslate('Snapshot Job :name: has updated successfully');
     }
 
-    public function deleteMass()  {
-        foreach ($this->getRequestValue('massActions') as $id){
+    public function deleteMass()
+    {
+        foreach ($this->getRequestValue('massActions') as $id)
+        {
             $this->model->where('id', $id)->delete();
         }
         return (new HtmlDataJsonResponse())->setMessageAndTranslate('The selected snapshot jobs have been deleted successfully')
@@ -102,7 +110,8 @@ class JobProvider  extends BaseModelDataProvider implements ClientArea
     }
 
 
-    public function delete()  {
+    public function delete()
+    {
         parent::delete();
         sl('lang')->addReplacementConstant('name', $this->formData['name']);
         return (new HtmlDataJsonResponse())->setMessageAndTranslate('Snapshot Job :name: has been deleted successfully')

+ 20 - 10
app/UI/Snapshot/Providers/SnapshotProvider.php

@@ -32,13 +32,17 @@ class SnapshotProvider extends BaseDataProvider implements ClientArea
     use ProductService;
     use ApiService;
 
-    public function read()  {
-        if ($this->actionElementId) {
+    public function read()
+    {
+        if ($this->actionElementId)
+        {
             $this->data = json_decode(base64_decode($this->actionElementId), true);
         }
     }
 
-    public function create() {
+    public function create()
+    {
+
         $this->acl()->snapshot();
         $this->resourceGuard()->snapshotLimit();
 
@@ -49,13 +53,14 @@ class SnapshotProvider extends BaseDataProvider implements ClientArea
             "name"        => $this->formData['name'],
             "description" => $this->formData['description'],
         ]);
-        if ($this->formData['vmstate']) {
+        if ($this->formData['vmstate'])
+        {
             $snapshot->setVmstate($this->formData['vmstate'] == "on" ? 1 : 0);
         }
         $taskId =  $snapshot->create();
         sleep(1);
         $task = $this->vm()->node()->task($taskId);
-         if($task->isFalied()) {
+         if($task->isFalied()){
              return (new HtmlDataJsonResponse())
                  ->setStatusError()
                  ->setMessageAndTranslate($task->getExitstatus());
@@ -67,7 +72,8 @@ class SnapshotProvider extends BaseDataProvider implements ClientArea
             ->setCallBackFunction('pmToggleButton');
     }
 
-    public function update() {
+    public function update()
+    {
         $this->acl()->snapshot();
         $snapshot = new Snapshot();
         $snapshot->setApi($this->api());
@@ -82,7 +88,8 @@ class SnapshotProvider extends BaseDataProvider implements ClientArea
             ->setMessageAndTranslate('The snapshot has been updated successfully');
     }
 
-    public function delete() {
+    public function delete()
+    {
         $this->acl()->snapshot();
         $snapshot = new Snapshot();
         $snapshot->setApi($this->api());
@@ -96,11 +103,13 @@ class SnapshotProvider extends BaseDataProvider implements ClientArea
             ->setCallBackFunction('pmToggleButton');
     }
 
-    public function deleteMass() {
+    public function deleteMass()
+    {
         $this->acl()->snapshot();
         $snapshot = new Snapshot();
         $snapshot->setApi($this->api());
-        foreach ($this->request->get('massActions') as $id) {
+        foreach ($this->request->get('massActions') as $id)
+        {
             $data = json_decode(base64_decode($id), true);
             $name = $data['name'];
             $snapshot->setPath($this->vm()->getPath() . "/snapshot/" . $name);
@@ -114,7 +123,8 @@ class SnapshotProvider extends BaseDataProvider implements ClientArea
             ->setCallBackFunction('pmToggleButton');
     }
 
-    public function rollback() {
+    public function rollback()
+    {
         $this->acl()->snapshot();
         $snapshot = new Snapshot();
         $snapshot->setApi($this->api());

+ 1 - 1
app/UI/TaskHistory/Buttons/InfoButton.php

@@ -260,7 +260,7 @@ class ConfigOptions extends \ModulesGarden\Servers\ProxmoxVps\Core\App\Controlle
     {
         $data = [
             'content' =>
-                '<tr><td class="fieldlabel" style="width:0%; display:none;"></td><td style="width=100%;" class="fieldarea"><div style="width=100%; margin-bottom: 0px;" class="alert alert-danger">' . $message . '</div></td></tr>',
+                '<div style="width=100%; margin-bottom: 0px;" class="alert alert-danger">' . $message . '</div>',
             'mode' => 'advanced'
         ];
 

+ 15 - 1
core/App/Controllers/Instances/Addon/Deactivate.php

@@ -2,12 +2,26 @@
 
 namespace ModulesGarden\Servers\ProxmoxVps\Core\Http;
 
+use MGProvision\Proxmox\v2\Api;
+use MGProvision\Proxmox\v2\models\Kvm;
+use MGProvision\Proxmox\v2\models\Lxc;
+use ModulesGarden\ProxmoxAddon\App\Factory\ProxyServiceFactory;
+use ModulesGarden\ProxmoxAddon\App\Models\ModuleSettings;
+use ModulesGarden\ProxmoxAddon\App\Repositories\ServerConfigurationRepository;
+use ModulesGarden\Servers\ProxmoxVps\Core\Lang\Lang;
+use ModulesGarden\Servers\ProxmoxVps\Core\ModuleConstants;
+use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\sl;
+
 /**
  * Description of AbstractClientController
  *
- * @author Rafał Ossowski <rafal.os@modulesgarden.com>
+ * @method Kvm|Lxc vm()
  */
 class AbstractClientController extends AbstractController
 {
 
+
+
+
+
 }

+ 2 - 2
core/Http/AbstractController.php

@@ -237,8 +237,8 @@ class Response extends SymfonyRespose
     
     public function returnClientProvisioning($vars, $path, $fileName)
     {
-//        $templateVarName = ($this->getRequestValue('a', false) === 'management') ? 'tabOverviewReplacementTemplate' : 'templatefile';          
-        $templateVarName = 'tabOverviewReplacementTemplate';          
+        $templateVarName = ($this->getRequestValue('a', false) === 'management') ? 'tabOverviewReplacementTemplate' : 'templatefile';          
+
         return [
             $templateVarName => str_replace(\ModulesGarden\Servers\ProxmoxVps\Core\ModuleConstants::getTemplateDir() . DIRECTORY_SEPARATOR,
                 '', $path . DIRECTORY_SEPARATOR . $fileName),

+ 2 - 1
core/Http/UI/FormResponse.php

@@ -7,7 +7,8 @@ namespace ModulesGarden\Servers\ProxmoxVps\Core\UI\Builder;
  *
  * @author inbs
  */
-class BaseContainer extends Context {
+class BaseContainer extends Context
+{
     protected $data = [];
 
     /**

+ 28 - 14
core/UI/Builder/Context.php

@@ -13,7 +13,8 @@ use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\sl;
  *
  * @author inbs
  */
-class Context {
+class Context
+{
     use \ModulesGarden\Servers\ProxmoxVps\Core\UI\Traits\Title;
     use \ModulesGarden\Servers\ProxmoxVps\Core\UI\Traits\HtmlElements;
     use \ModulesGarden\Servers\ProxmoxVps\Core\UI\Traits\Template;
@@ -42,7 +43,8 @@ class Context {
 
     protected $initialized = true;
 
-    public function __construct($baseId = null) {
+    public function __construct($baseId = null)
+    {
         $this->addNewElementsContainer('buttons');
 
         $this->namespace = str_replace('\\', '_', get_class($this));
@@ -52,15 +54,18 @@ class Context {
         $this->loadTemplateVars();
     }
     
-    public function getErrorMessage() {
+    public function getErrorMessage()
+    {
         return $this->errorMessage;
     }
 
     /**
      * @return string
      */
-    public function getHtml() {
-        if ($this->html === '') {
+    public function getHtml()
+    {
+        if ($this->html === '')
+        {
             $this->buildHtml();
         }
 
@@ -70,19 +75,23 @@ class Context {
     /**
      * @return string
      */
-    public function __toString()  {
+    public function __toString()
+    {
         return $this->getHtml();
     }
 
-    protected function buildHtml()  {
+    protected function buildHtml()
+    {
         $this->html = self::generate($this);
     }
 
-    public function getCustomTplVars() {
+    public function getCustomTplVars()
+    {
         return $this->customTplVars;
     }
 
-    public function getCustomTplVarsValue($varName) {
+    public function getCustomTplVarsValue($varName)
+    {
         return $this->customTplVars[$varName];
     }
 
@@ -90,7 +99,8 @@ class Context {
      * @param \ModulesGarden\Servers\ProxmoxVps\Core\UI\Builder\Context $object
      * @return string
      */
-    public static function generate(Context $object) {
+    public static function generate(Context $object)
+    {
         $tpl = $object->getTemplateName();
 
         $vars = [
@@ -116,19 +126,23 @@ class Context {
         $lang->stagCurrentContext('builder' . $object->getName());
         $lang->addToContext(lcfirst($object->getName()));
         $return = ServiceLocator::call('smarty')->setLang($lang)->view($tpl, $vars, $object->getTemplateDir());
-        if (!$object->isVueRegistrationAllowed()) {
+        if (!$object->isVueRegistrationAllowed())
+        {
             return $return;
         }
 
-        if ($object->isVueComponent() && file_exists($object->getTemplateDir() . str_replace('.tpl', '', $tpl) . '_components.tpl')) {
+        if ($object->isVueComponent() && file_exists($object->getTemplateDir() . str_replace('.tpl', '', $tpl) . '_components.tpl'))
+        {
             $vueComponents = ServiceLocator::call('smarty')->setLang($lang)->view(str_replace('.tpl', '', $tpl) . '_components', $vars, $object->getTemplateDir());
             $object->addVueComponentTemplate($vueComponents, $object->getId());
         }
-        if ($object->isVueComponent() && file_exists($object->getTemplateDir() . str_replace('.tpl', '', $tpl) . '_components.js')) {
+        if ($object->isVueComponent() && file_exists($object->getTemplateDir() . str_replace('.tpl', '', $tpl) . '_components.js'))
+        {
             $vueComponentsJs = file_get_contents($object->getTemplateDir() . str_replace('.tpl', '', $tpl) . '_components.js');
             $object->addVueComponentJs($vueComponentsJs, $object->getDefaultVueComponentName());
         }
-        if ($object->isVueComponent() && $object->getDefaultVueComponentName()) {
+        if ($object->isVueComponent() && $object->getDefaultVueComponentName())
+        {
             $object->registerVueComponent($object->getId(), $object->getDefaultVueComponentName());
         }
 

+ 11 - 5
core/UI/Container.php

@@ -10,7 +10,8 @@ use \ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\FormInterface;
  *
  * @author Sławomir Miśkowicz <slawomir@modulesgarden.com>
  */
-trait Forms {
+trait Forms
+{
     /**
      * Forms List
      * @var Array
@@ -21,13 +22,16 @@ trait Forms {
      * Adds Form object to forms list
      * @return $this
      */
-    public function addForm(FormInterface $form) {
+    public function addForm(FormInterface $form)
+    {
         $form->setMainContainer($this->mainContainer);
         $this->forms[$form->getId()] = $form;
 
-        if ($form instanceof \ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\AjaxElementInterface) {
+        if ($form instanceof \ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\AjaxElementInterface)
+        {
             $this->mainContainer->addAjaxElement($form);
         }
+        
         return $this;
     }
 
@@ -35,7 +39,8 @@ trait Forms {
      * Returns Form object by form id
      * @return Form object
      */
-    public function getForm($formId){
+    public function getForm($formId)
+    {
         return $this->forms[$formId];
     }
 
@@ -43,7 +48,8 @@ trait Forms {
      * Returns Form objects array
      * @return array
      */
-    public function getForms() {
+    public function getForms()
+    {
         return $this->forms;
     }
 }

+ 58 - 25
core/UI/Traits/HideByDefaultIfNoData.php

@@ -4,30 +4,38 @@ namespace ModulesGarden\Servers\ProxmoxVps\Core\UI\Traits;
 
 use ModulesGarden\Servers\ProxmoxVps\Core\Helper;
 
-trait HtmlElements {
+trait HtmlElements
+{
     protected $class      = [];
     protected $name       = null;
     protected $id         = null;
     protected $scriptHtml = null;
     protected $index      = null;
 
-    public function setName($name = null)   {
-        if (is_string($name)) {
+    public function setName($name = null)
+    {
+        if (is_string($name))
+        {
             $this->name = $name;
         }
+
         return $this;
     }
 
-    public function addClass($class = null) {
-        if (is_string($class)) {
+    public function addClass($class = null)
+    {
+        if (is_string($class))
+        {
             $this->class[] = $class;
         }
 
         return $this;
     }
 
-    public function removeClass($class = null) {
-        if (is_string($class) && in_array($this->class, $class)) {
+    public function removeClass($class = null)
+    {
+        if (is_string($class) && in_array($this->class, $class))
+        {
             $this->class = array_map(function(&$cl) use ($class)
             {
                 if ($cl === $class)
@@ -36,63 +44,85 @@ trait HtmlElements {
                 }
             }, $this->class);
         }
+
         return $this;
     }
 
-    public function replaceClass($class = null, $replacement = null) {
+    public function replaceClass($class = null, $replacement = null)
+    {
         if (is_string($class) && trim($class) !== '' && in_array($class, $this->class)
-            && is_string($replacement) && trim($replacement) !== '')   {
+            && is_string($replacement) && trim($replacement) !== '')
+        {
 
             $keys = array_keys($this->class, $class, true);
-            foreach ($keys as $key) {
+            foreach ($keys as $key)
+            {
                 unset($this->class[$key]);
             }
+
             $this->class[] = $replacement;
         }
+
         return $this;
     }
 
-    public function replaceClasses($classes) {
-        if (is_array($classes)) {
+    public function replaceClasses($classes)
+    {
+        if (is_array($classes))
+        {
             $this->class = $classes;
         }
+
         return $this;
     }
 
-    public function getClasses() {
+    public function getClasses()
+    {
         return implode(' ', $this->class);
     }
 
-    public function hasClass($class) {
-        if (is_string($class) && in_array($this->class, $class)) {
+    public function hasClass($class)
+    {
+        if (is_string($class) && in_array($this->class, $class))
+        {
             return true;
         }
+
         return false;
     }
 
-    public function setId($id = null) {
-        if (is_string($id) || is_int($id)) {
+    public function setId($id = null)
+    {
+        if (is_string($id) || is_int($id))
+        {
             $this->id = $id;
         }
+
         return $this;
     }
 
-    public function setScriptHtml($scriptHtml = null) {
-        if (is_string($scriptHtml)) {
+    public function setScriptHtml($scriptHtml = null)
+    {
+        if (is_string($scriptHtml))
+        {
             $this->scriptHtml = $scriptHtml;
         }
+
         return $this;
     }
 
-    protected function generateRandomId()  {
+    protected function generateRandomId()
+    {
         $stringGen = new Helper\RandomStringGenerator();
         $this->id  = $stringGen->genRandomString('mgContElem');
         
         return $this;
     }
 
-    protected function generateRandomName() {
-        if ($this->id)  {
+    protected function generateRandomName()
+    {
+        if ($this->id)
+        {
             $this->name = $this->id;
 
             return $this;
@@ -161,15 +191,18 @@ trait HtmlElements {
         return $this;
     }
     
-    public function isIdEqual($id) {
+    public function isIdEqual($id)
+    {
         return $this->id === $id;
     }
     
-    public function getIndex(){
+    public function getIndex()
+    {
         return $this->index ? : $this->id;
     }
     
-    public function setIndex($index) {
+    public function setIndex($index)
+    {
         $this->index = $index ? : $this->id;
         
         return $this;

+ 1 - 1
core/UI/Traits/Icon.php

@@ -58,7 +58,7 @@ abstract class BaseDataProvider implements FormDataProviderInterface
 
     public function getAvailableValuesById($id)
     {
-        if (is_array($this->availableValues[$id]) ||  (is_array($this->availableValues) && count($this->availableValues[$id]) > 0))
+        if (is_array($this->availableValues[$id]) ||  (is_object($this->availableValues[$id]) && count($this->availableValues[$id]) > 0))
         {
             return $this->availableValues[$id];
         }

+ 14 - 0
core/UI/Widget/Forms/DataProviders/BaseModelDataProvider.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Fields;
+
+/**
+ * BaseField controler
+ *
+ * @author Sławomir Miśkowicz <slawomir@modulesgarden.com>
+ */
+class FileField extends BaseField
+{
+    protected $id   = 'fileField';
+    protected $name = 'fileField';
+}

+ 2 - 1
core/UI/Widget/Forms/Fields/Hidden.php

@@ -7,7 +7,8 @@ namespace ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\Forms\Fields;
  *
  * @author Sławomir Miśkowicz <slawomir@modulesgarden.com>
  */
-class Hidden extends BaseField {
+class Hidden extends BaseField
+{
     protected $id   = 'hidden';
     protected $name = 'hidden';
 }

+ 78 - 16
core/UI/Widget/Forms/Fields/InputGroupElements/InputAddon.php

@@ -83,7 +83,7 @@ $_LANG['FormValidators']['thisFieldCannotBeEmpty']            = 'This field cann
 $_LANG['FormValidators']['PleaseProvideANumericValue']        = 'Please provide a numeric value';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['leftSection']['customconfigoption[suspensionAction]']['customconfigoption[suspensionAction]'] = 'Suspension Action';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['leftSection']['customconfigoption[suspensionAction]']['tip'] = 'Choose the action to be performed on the server upon the WHMCS product suspension';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['rightSection']['customconfigoption[suspendOnBandwidthOverage]']['customconfigoption[suspendOnBandwidthOverage]'] = 'Suspend On Bandwidth Overage';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['rightSection']['customconfigoption[suspendOnBandwidthOverage]']['customconfigoption[suspendOnBandwidthOverage]'] = 'Suspend on Bandwidth Overage';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['rightSection']['customconfigoption[suspendOnBandwidthOverage]']['tip'] = 'Choose whether the WHMCS product should be suspended upon the server\'s bandwidth overage';
 $_LANG['serverAA']['configOptions']['KVM'] = 'KVM';
 $_LANG['serverAA']['configOptions']['LXC'] = 'LXC';
@@ -214,8 +214,8 @@ $_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['right
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['rightSection']['customconfigoption[defaultNode]']['tip'] = 'Select the default node';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['leftSection']['customconfigoption[checkResources]']['customconfigoption[checkResources]'] = 'Check Available Resources';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['leftSection']['customconfigoption[checkResources]']['tip'] = 'If enabled, the module will check available resource limits before creating the virtual machine';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['rightSection']['customconfigoption[resetUsageFirstDayOfMonth]']['customconfigoption[resetUsageFirstDayOfMonth]'] = 'Reset Usage First Day Of Month';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['rightSection']['customconfigoption[resetUsageFirstDayOfMonth]']['tip'] = 'Reset Usage First Day Of Month';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['rightSection']['customconfigoption[resetUsageFirstDayOfMonth]']['customconfigoption[resetUsageFirstDayOfMonth]'] = 'Reset Usage First Day of Month';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['rightSection']['customconfigoption[resetUsageFirstDayOfMonth]']['tip'] = 'Enable to reset the usage on the first day of the month';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['miscellaneousSection'] = 'Miscellaneous';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['leftSection']['customconfigoption[backupVmBeforeReinstall]']['customconfigoption[backupVmBeforeReinstall]'] = 'Backup VM Before Reinstallation';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['leftSection']['customconfigoption[backupVmBeforeReinstall]']['tip'] = 'If enabled, the module will create a backup of the VM before reinstalling it';
@@ -229,7 +229,7 @@ $_LANG['serverAA']['product']['mainContainer']['mainForm']['consoleSection']['co
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['consoleSection']['leftSection']['customconfigoption[consoleHost]']['customconfigoption[consoleHost]'] = 'Console Host';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['consoleSection']['leftSection']['customconfigoption[consoleHost]']['tip'] = 'Provide an additional IP address for the VNC console or leave the field blank to disable it';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['userSection'] = 'User';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['leftSectionsdf']['customconfigoption[oneUserPerVps]']['customconfigoption[oneUserPerVps]'] = 'One Username Per VPS';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['leftSectionsdf']['customconfigoption[oneUserPerVps]']['customconfigoption[oneUserPerVps]'] = 'One Username per VPS';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['leftSectionsdf']['customconfigoption[oneUserPerVps]']['tip'] = 'If a client orders multiple VPS products, each of them will have its own Proxmox username. Disable this option in order to use a single username for all VPS products of a client.';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['leftSectionsdf']['customconfigoption[realm]']['customconfigoption[realm]'] = 'Realm';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['leftSectionsdf']['customconfigoption[realm]']['tip'] = 'Select the user realm to authenticate';
@@ -242,7 +242,7 @@ $_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['right
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['clientNotificationSection']['clientNotificationSection'] = 'Client Notifications';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['clientNotificationSection']['leftSection']['customconfigoption[welcomeEmailTemplateId]']['customconfigoption[welcomeEmailTemplateId]'] = 'Welcome Email';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['clientNotificationSection']['leftSection']['customconfigoption[welcomeEmailTemplateId]']['tip'] = 'Select the welcoming email that will be sent when the VM is created';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientNotificationSection']['rightSection']['customconfigoption[reinstallEmailTemplateId]']['customconfigoption[reinstallEmailTemplateId]'] = 'Email On Reinstallation';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientNotificationSection']['rightSection']['customconfigoption[reinstallEmailTemplateId]']['customconfigoption[reinstallEmailTemplateId]'] = 'Email on Reinstallation';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['clientNotificationSection']['rightSection']['customconfigoption[reinstallEmailTemplateId]']['tip'] = 'Select the email notification that will be sent when the VM is reinstalled';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['adminNotificationSection']['adminNotificationSection'] = 'Admin Notifications';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['adminNotificationSection']['leftSection']['customconfigoption[serviceCreationFailedTemplateId]']['customconfigoption[serviceCreationFailedTemplateId]'] = 'Service Creation Failed';
@@ -274,7 +274,7 @@ $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[vgaMemory]']['customconfigoption[vgaMemory]'] = 'Graphic Card Memory';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[vgaMemory]']['tip'] = 'MiB';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[clientNameForContainer]']['tip'] = 'Choose if and when the hostname should be overwritten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[osTemplatesInAllNodes]']['customconfigoption[osTemplatesInAllNodes]'] = 'Search For Templates On All Nodes';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[osTemplatesInAllNodes]']['customconfigoption[osTemplatesInAllNodes]'] = 'Search for Templates on All Nodes';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[osTemplatesInAllNodes]']['tip'] = 'Enable searching for the reinstallation templates on all nodes';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[acpi]']['customconfigoption[acpi]'] = 'ACPI';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[acpi]']['tip'] = 'If enabled, ACPI will be used to send shutdown signals to the VM (QEMU/KVM)';
@@ -288,7 +288,7 @@ $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[hotplug][]']['tip'] = 'Select the hotplug features to be enabled';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[kvm]']['customconfigoption[kvm]'] = 'KVM Hardware Virtualization';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[kvm]']['tip'] = 'If enabled, the VM will be allowed to run directly on the processor';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[onboot]']['customconfigoption[onboot]'] = 'Start At Boot';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[onboot]']['customconfigoption[onboot]'] = 'Start at Boot';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[onboot]']['tip'] = 'If enabled, the VM will be started during the system boot-up';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[reboot]']['customconfigoption[reboot]'] = 'Allow Reboot';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[reboot]']['tip'] = 'If disabled, the VM will exit on reboot';
@@ -299,11 +299,11 @@ $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[cloneMode]']['customconfigoption[cloneMode]'] = 'Clone Mode';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[cloneMode]']['tip'] = 'Select the clone type';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['advancedSection'] = 'Additional KVM Configuration';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[balloon]']['customconfigoption[balloon]'] = 'Minimum RAM For VM [MiB]';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[balloon]']['customconfigoption[balloon]'] = 'Minimum RAM for VM [MiB]';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[balloon]']['tip'] = 'Enter zero to disable the balloon driver';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[args]']['customconfigoption[args]'] = 'Arguments';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[args]']['tip'] = 'This option is for experts only. It allows you to pass arbitrary arguments to KVM, for example: -no-reboot -no-hpet.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[migrate_speed]']['customconfigoption[migrate_speed]'] = 'Maximum Speed For Migrations [MB/s]';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[migrate_speed]']['customconfigoption[migrate_speed]'] = 'Maximum Speed for Migrations [MB/s]';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[migrate_speed]']['tip'] = 'Set the maximum speed in MB/s for migrations. Enter 0 to set no limits.';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[startdate]']['customconfigoption[startdate]'] = 'Real Time Clock Initial Date';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[startdate]']['tip'] = '(now | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS) >Set the initial date of the real time clock. Valid formats: \'now\' or \'2006-06-17T16:01:21\' or \'2006-06-17\'';
@@ -407,7 +407,7 @@ $_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rig
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[additionalDiskReplicate]']['tip'] = 'If enabled, the replication of additional disks will be skipped';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[additionalDiskDiscard]']['customconfigoption[additionalDiskDiscard]'] = 'Discard';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[additionalDiskDiscard]']['tip'] = 'Toggle discard';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[permissionAdditionalDiskBackup]']['customconfigoption[permissionAdditionalDiskBackup]'] = 'Backups On Additional Disks';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[permissionAdditionalDiskBackup]']['customconfigoption[permissionAdditionalDiskBackup]'] = 'Backups on Additional Disks';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[permissionAdditionalDiskBackup]']['tip'] = 'If enabled, backups will be allowed on additional disks';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['additonalDiskSpeedSection'] = 'Additional Disks Speed';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['leftSection']['customconfigoption[additionalDiskMbps_rd]']['customconfigoption[additionalDiskMbps_rd]'] = 'Read Limit (MB/s)';
@@ -465,6 +465,8 @@ $_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['rightSection']['customconfigoption[ciuser]']['tip'] = 'Enter the username to change SSH keys and password instead of using the image\'s configured default user';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['rightSection']['customconfigoption[cloudInitScript]']['customconfigoption[cloudInitScript]'] = 'Cloud-Init Script';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['rightSection']['customconfigoption[cloudInitScript]']['tip'] = 'Select the Clound-Init script that will be used when creating the VM';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['rightSection']['customconfigoption[cloudInitStorage]']['customconfigoption[cloudInitStorage]'] = 'Storage';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['rightSection']['customconfigoption[cloudInitStorage]']['tip'] = 'Select storage for the Cloud-Init';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['configurableOptionUnitsSection'] = 'Configurable Option Units';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['leftSection']['customconfigoption[memoryUnit]']['customconfigoption[memoryUnit]'] = 'Memory Unit';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['leftSection']['customconfigoption[memoryUnit]']['tip'] = 'Choose the memory unit';
@@ -482,9 +484,9 @@ $_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallSection']['r
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['loadBalancerSection'] = 'Load Balancer';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['leftSection']['customconfigoption[loadBalancer]']['customconfigoption[loadBalancer]'] = 'Enable Load Balancer';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['leftSection']['customconfigoption[loadBalancer]']['tip'] = 'If enabled, nodes will be dynamically rotated, and the VM will be created on the one with the lowest load';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['leftSection']['customconfigoption[loadBalancerShutdownOnUpgrade]']['customconfigoption[loadBalancerShutdownOnUpgrade]'] = 'Shut Down VM On Upgrade';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['leftSection']['customconfigoption[loadBalancerShutdownOnUpgrade]']['customconfigoption[loadBalancerShutdownOnUpgrade]'] = 'Shut Down VM on Upgrade';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['leftSection']['customconfigoption[loadBalancerShutdownOnUpgrade]']['tip'] = 'If enabled, the VM will be shut down before migration';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['rightSection']['customconfigoption[loadBalancerOnUpgrade]']['customconfigoption[loadBalancerOnUpgrade]'] = 'Action On Upgrade';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['rightSection']['customconfigoption[loadBalancerOnUpgrade]']['customconfigoption[loadBalancerOnUpgrade]'] = 'Action on Upgrade';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['rightSection']['customconfigoption[loadBalancerOnUpgrade]']['tip'] = 'Select the action that should be performed upon the upgrade: "None" - disabled; "Block" - the upgrade process is blocked as there are insufficient resources on the VM node; "Migrate" - the upgrade process will be performed after previous migration of the VM to a server with sufficient free space';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['rightSection']['customconfigoption[loadBalancerStopOnUpgrade]']['customconfigoption[loadBalancerStopOnUpgrade]'] = 'Stop VM If Shutdown Fails';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['rightSection']['customconfigoption[loadBalancerStopOnUpgrade]']['tip'] = 'If enabled, the VM will be stopped in case the process of its shutting down fails';
@@ -498,11 +500,11 @@ $_LANG['serverAA']['product']['mainContainer']['mainForm']['backupSection']['rig
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['highAvailabilityClusterSection'] = 'High Availability Cluster';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['leftSection']['customconfigoption[clusterState]']['customconfigoption[clusterState]'] = 'State';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['leftSection']['customconfigoption[clusterState]']['tip'] = 'Select the resource state, and the Cluster Resource Manager will act accordingly. Note that "Enabled" is just an alias for "started".';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['leftSection']['customconfigoption[clusterMaxRestart]']['customconfigoption[clusterMaxRestart]'] = 'Maximum Number Of Restarts';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['leftSection']['customconfigoption[clusterMaxRestart]']['customconfigoption[clusterMaxRestart]'] = 'Maximum Number of Restarts';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['leftSection']['customconfigoption[clusterMaxRestart]']['tip'] = 'Enter the maximum number of attempts to restart the service on a node when it has failed to start';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['rightSection']['customconfigoption[clusterGroup]']['customconfigoption[clusterGroup]'] = 'Group';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['rightSection']['customconfigoption[clusterGroup]']['tip'] = 'Select the HA group identifier';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['rightSection']['customconfigoption[clusterMaxRelocate]']['customconfigoption[clusterMaxRelocate]'] = 'Maximum Number Of Relocations';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['rightSection']['customconfigoption[clusterMaxRelocate]']['customconfigoption[clusterMaxRelocate]'] = 'Maximum Number of Relocations';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['rightSection']['customconfigoption[clusterMaxRelocate]']['tip'] = 'Enter the maximum number of service relocation attempts when it has failed to start';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['clientAreaSection'] = 'Client Area Features';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionStart]']['customconfigoption[permissionStart]'] = 'Boot';
@@ -644,6 +646,12 @@ $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUn
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['rightSection']['customconfigoption[memoryUnit]']['tip'] = 'Select the unit for memory';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['rightSection']['customconfigoption[additionalDiskUnit]']['customconfigoption[additionalDiskUnit]'] = 'Additional Disk Unit';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['rightSection']['customconfigoption[additionalDiskUnit]']['tip'] = 'Select the unit for additional disks';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallOptionSection']['leftSection']['customconfigoption[firewalOptionPolicyIn]']['customconfigoption[firewalOptionPolicyIn]'] = 'Input Policy';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallOptionSection']['rightSection']['customconfigoption[firewalOptionPolicyOut]']['customconfigoption[firewalOptionPolicyOut]'] = 'Output Policy';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['rightSection']['customconfigoption[minimumVmid]']['customconfigoption[minimumVmid]'] = 'Minimum VMID';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['rightSection']['customconfigoption[minimumVmid]']['tip'] = 'Enter a minimum VMID';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['leftSection']['customconfigoption[serverGroup][]']['customconfigoption[serverGroup][]'] = 'Group';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['leftSection']['customconfigoption[serverGroup][]']['tip'] = 'Select the node groups';
 $_LANG['serverAA']['adminServicesTabFields']['Hour'] = 'Hour';
 $_LANG['serverAA']['adminServicesTabFields']['Day'] = 'Day';
 $_LANG['serverAA']['adminServicesTabFields']['Week'] = 'Week';
@@ -815,6 +823,16 @@ $_LANG['serverAA']['adminServicesTabFields']['Never']='Never';
 $_LANG['serverAA']['adminServicesTabFields']['templateInstallModal']['templateInstallForm']['password']['tip'] = 'Enter the VM password here';
 $_LANG['serverAA']['adminServicesTabFields']['createModal']['createForm']['network']['network'] = 'Create Network';
 $_LANG['serverAA']['adminServicesTabFields']['createModal']['createForm']['network']['description'] = 'Create VM network';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionInformation][]']['customconfigoption[permissionInformation][]'] = 'Information';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionInformation][]']['description'] = 'Select the "Information" section elements that should be available in the client area or leave blank to enable them all.';
+$_LANG['serverAA']['adminServicesTabFields']['migrateModal']['migrateForm']['with-local-disks']['with-local-disks'] = 'Migration With Local Disks';
+$_LANG['serverAA']['adminServicesTabFields']['migrateModal']['migrateForm']['with-local-disks']['tip'] = 'Migration with local disks might take a while. Please be patient';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['rightSection']['customconfigoption[loadBalancerMigrationWithLocalDisks]']['customconfigoption[loadBalancerMigrationWithLocalDisks]'] = 'Migration With Local Disks';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['rightSection']['customconfigoption[loadBalancerMigrationWithLocalDisks]']['tip'] = 'Run migration with local disks';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionChangeHostname]']['customconfigoption[permissionChangeHostname]']  = 'Change Hostname';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionChangeHostname]']['description'] = 'If enabled, a client will be able to perform the "Change Hostname" action on their server';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[archive]']['customconfigoption[archive]'] = 'Archive';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[archive]']['tip'] = 'Select a default archive for the Virtual Machine';
 /* * ********************************************************************************************************************
  *                                                    Templates                                                      *
  * ******************************************************************************************************************** */
@@ -838,6 +856,7 @@ $_LANG['The container has been stopped successfully']='The container has been st
 $_LANG['The container has been rebooted successfully']='The container has been rebooted successfully';
 $_LANG['The container has been booted successfully'] = 'The container has been booted successfully';
 $_LANG['FormValidators']['The password is too short']='The password is too short';
+$_LANG['The backup creation is in progress'] = 'The backup creation is in progress';
 $_LANG['managementProxmoxVps'] = ' Additional Tools';
 $_LANG['reinstall'] = 'Reinstall';
 $_LANG['backup'] = 'Backups';
@@ -970,6 +989,9 @@ $_LANG['serverCA']['backup']['LZO (fast)'] = 'LZO (fast)';
 $_LANG['serverCA']['backup']['GZIP (good)'] = 'GZIP (good)';
 $_LANG['ZSTD (fast and good)'] = 'ZSTD (fast and good)';
 $_LANG['serverCA']['backupJob']['zstd']= 'ZSTD (fast and good)';
+$_LANG['None'] = 'None';
+$_LANG['LZO (fast)'] = 'LZO (fast)';
+$_LANG['GZIP (good)'] = 'GZIP (good)';
 $_LANG['serverCA']['backup']['Snapshot'] = 'Snapshot';
 $_LANG['serverCA']['backup']['Suspend'] = 'Suspend';
 $_LANG['serverCA']['backup']['Stop'] = 'Stop';
@@ -994,6 +1016,10 @@ $_LANG['serverCA']['backup']['deleteMassModal']['modal']['deleteMassModal'] = 'D
 $_LANG['serverCA']['backup']['deleteMassModal']['deleteMassForm']['conforimDeleteMass'] = 'Are you sure that you want to delete the selected backups?';
 $_LANG['serverCA']['backup']['deleteMassModal']['baseAcceptButton']['title'] = 'Confirm';
 $_LANG['serverCA']['backup']['deleteMassModal']['baseCancelButton']['title'] = 'Cancel';
+$_LANG['The maximum number of backup files has been exceeded. Please remove the old backup files.'] = 'The maximum number of backup files has been exceeded. Please remove the old backup files.';
+$_LANG['serverCA']['availableResources'] = 'Available Resources';
+$_LANG['serverCA']['backup']['backupSize'] = "Backup Size: ";
+$_LANG['serverCA']['backup']['backupFiles'] ="Backup Files: ";
 $_LANG['The backups have been deleted successfully'] = 'The selected backups have been deleted successfully';
 $_LANG['serverCA']['backupJob']['mainContainer']['dataTable']['dackupJobDataTable'] = 'Backup Jobs';
 $_LANG['serverCA']['backupJob']['mainContainer']['dataTable']['createButton']['button']['createButton'] = 'New Job';
@@ -1415,7 +1441,19 @@ $_LANG['serverCA']['firewallOption']['updateModal']['updateForm']['policy_in']['
 $_LANG['serverCA']['firewallOption']['updateModal']['updateForm']['policy_out']['policy_out'] = 'Output Policy';
 $_LANG['serverCA']['firewallOption']['updateModal']['baseAcceptButton']['title'] = 'Save Changes';
 $_LANG['serverCA']['firewallOption']['updateModal']['baseCancelButton']['title'] = 'Cancel';
+$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['table']['pos'] = 'Position';
+$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['upRuleButton']['button']['upRuleButton'] = 'Move up';
+$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['downRuleButton']['button']['downRuleButton'] = 'Move down';
+$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['buttonBase']['downloadButton']['button']['downloadButton'] = 'Download Rules';
+$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['buttonBase']['restoreButton']['button']['restoreButton'] = 'Restore Rules';
 $_LANG['The firewall options has been updated successfully'] = 'The firewall options have been updated successfully';
+$_LANG['The firewall rules have been restored successfully'] = 'The firewall rules have been restored successfully';
+$_LANG['errorCodeMessage']['The maximum number of firewall rules has been exceeded. Please remove the old firewall rules.'] ='The maximum number of firewall rules has been exceeded. Please remove the old firewall rules.';
+$_LANG['serverCA']['firewall']['restoreModal']['modal']['restoreModal'] = 'Restore Firewall Rules';
+$_LANG['serverCA']['firewall']['restoreModal']['restoreForm']['rules']['rules'] = 'Backup File';
+$_LANG['serverCA']['firewall']['restoreModal']['baseAcceptButton']['title'] = 'Confirm';
+$_LANG['serverCA']['firewall']['restoreModal']['baseCancelButton']['title'] = 'Cancel';
+$_LANG['The file with firewall rules is empty or invalid']='The file with firewall rules is empty or invalid';
 $_LANG['serverCA']['disk']['mainContainer']['dataTable']['diskDataTable'] = 'Disks';
 $_LANG['serverCA']['disk']['mainContainer']['dataTable']['table']['name'] = 'Name';
 $_LANG['serverCA']['disk']['mainContainer']['dataTable']['table']['bus'] = 'Bus/Device';
@@ -1583,6 +1621,8 @@ $_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection'][
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionSnapshotJob]']['tip'] = 'If enabled, a client will be able to create the "Snapshot Job"  on their server';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionSnapshotJobPeriod][]']['customconfigoption[permissionSnapshotJobPeriod][]'] = 'Snapshot Job Period';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionSnapshotJobPeriod][]']['tip'] = 'Select the snapshot job period that should be available in the client area';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionBackupCompress][]']['customconfigoption[permissionBackupCompress][]'] = 'Backup Compression';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionBackupCompress][]']['description'] = 'Select the backup compression types that should be available in the client area or leave blank to enable all.';
 $_LANG['serverAA']['configOptions']['hourly'] = 'Hourly';
 $_LANG['serverAA']['configOptions']['daily'] = 'Daily';
 $_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['snapshotDataTable'] = 'Snapshots';
@@ -1668,7 +1708,7 @@ $_LANG['serverAA']['home']['mainContainer']['dataTable']['templatDataTable'] = '
 $_LANG['serverAA']['home']['mainContainer']['dataTable']['templateInstallButton']['button']['templateInstallButton']  = 'Reinstall';
 $_LANG['serverCA']['taskHistory']['vzstop'] ='Stop';
 $_LANG['serverAA']['configOptions']['PVESDNAdmin']='PVESDNAdmin';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[cloneOnTheSameStorage]']['customconfigoption[cloneOnTheSameStorage]'] = 'Clone On The Same Storage As Source';
+$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[cloneOnTheSameStorage]']['customconfigoption[cloneOnTheSameStorage]'] = 'Clone on the Same Storage As Source';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[cloneOnTheSameStorage]']['tip'] = 'Enable if you want VMs to be cloned on the same storage as the template.';
 $_LANG['Disk :id:']='Disk :id:';
 $_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[featureKeyctl]']['customconfigoption[featureKeyctl]'] = 'Keyctl';
@@ -1745,4 +1785,26 @@ $_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['l
 (pc|pc(-i440fx)?-\d+(\.\d+)+(\+pve\d+)?(\.pxe)?|q35|pc-q35-\d+(\.\d+)+(\+pve\d+)?(\.pxe)?|virt(?:-\d+(\.\d+)+)?(\+pve\d+)?)';
 $_LANG['serverAA']['configOptions']['SeaBIOS'] = 'SeaBIOS';
 $_LANG['serverAA']['configOptions']['OVMF (UEFI)'] = 'OVMF (UEFI)';
-$_LANG['Delete public network is restricted']= 'Delete public network is restricted';
+$_LANG['Delete public network is restricted']= 'Deleting a public network is restricted';
+$_LANG['FormValidators']['PleaseProvideAhostname'] = 'Please provide a valid hostname';
+$_LANG['serverCA']['home']['bootOrder']['ide1'] ='ide1';
+$_LANG['serverCA']['home']['bootOrder']['ide0'] = 'ide0';
+$_LANG['serverCA']['home']['bootOrder']['net0'] = 'net0';
+$_LANG['serverCA']['graph']['Percentage (%)'] = 'Percentage (%)';
+$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['comment'] = 'Comment';
+$_LANG['serverAA']['adminServicesTabFields']['bootOrder']['ide1'] ='ide1';
+$_LANG['serverAA']['adminServicesTabFields']['bootOrder']['ide0'] ='ide0';
+$_LANG['serverAA']['adminServicesTabFields']['bootOrder']['net0'] ='net0';
+$_LANG['Input Policy'] = 'Input Policy';
+$_LANG['Output Policy'] = 'Output Policy';
+$_LANG['DROP'] = 'DROP';
+$_LANG['ACCEPT'] = 'ACCEPT';
+$_LANG['REJECT'] = 'REJECT';
+$_LANG['Hostname'] = 'Hostname';
+$_LANG['Uptime'] = 'Uptime';
+$_LANG['CPU Usage'] = 'CPU Usage';
+$_LANG['Memory'] = 'Memory';
+$_LANG['Backup Files Limit'] = 'Backup Files Limit';
+$_LANG['Network Rate'] = 'Network Rate';
+$_LANG['IP Addresses'] = 'IP Addresses';
+$_LANG['serverCA']['backupJob']['updateModal']['updateForm']['confirmUpdate'] = 'Your routing backup limit is :backupFilesLimit:. Once it is exceeded, the last backup will be replaced with a new one.';

+ 0 - 1757
langs/german.php

@@ -1,1757 +0,0 @@
-<?php
-
-$_LANG['token']                  = ', Fehler Token:';
-$_LANG['generalError']           = 'Ein Fehler ist aufgetreten, bitte die Logs überprüfen.';
-$_LANG['generalErrorClientArea'] = 'Ein Fehler ist aufgetreten, bitte wenden Sie sich an den Support.';
-$_LANG['permissionsStorage']     = ':storage_path: settings are not sufficient. Please set up permissions to the \'storage\' folder as writable.';
-$_LANG['undefinedAction']        = 'Unbekannte Aktion';
-$_LANG['changesHasBeenSaved']    = 'Die Änderungen wurden erfolgreich übernommen.';
-$_LANG['Monthly']                = 'Monatlich';
-$_LANG['Free Account']           = 'Kostenlos';
-$_LANG['Passwords']              = 'Passwörter';
-$_LANG['Nothing to display']     = 'Es gibt nichts anzuzeigen';
-$_LANG['Search']                 = 'Suche';
-$_LANG['Previous']               = 'Züruck';
-$_LANG['Next']                   = 'Weiter';
-$_LANG['searchPlacecholder']     = 'Suche...';
-$_LANG['invalidServerType'] = 'Bitte erst einen Server einrichten';
-
-$_LANG['noDataAvalible']                 = 'Keine Daten verfügbar';
-$_LANG['datatableItemsSelected']         = 'Einträge ausgewählt';
-$_LANG['validationErrors']['emptyField'] = 'Dieses Feld darf nicht leer sein';
-$_LANG['bootstrapswitch']['disabled']    = 'Deaktiviert';
-$_LANG['bootstrapswitch']['enabled']     = 'Aktiviert';
-
-$_LANG['addonCA']['pageNotFound']['title'] = 'Seite nicht gefunden';
-$_LANG['addonCA']['pageNotFound']['description'] = 'Die angegebene URL existiert nicht, sollten Sie dies für einen Fehler halten, wenden Sie sich bitte an den Support.';
-$_LANG['addonCA']['pageNotFound']['button'] = 'Zurück zur Produktseite';
-
-$_LANG['addonCA']['errorPage']['title'] = 'Fehler aufgetreten';
-$_LANG['addonCA']['errorPage']['description'] = 'Ein Fehler ist aufgetreten. Bitte wenden Sie sich an den Support und geben Sie diese Details an:';
-$_LANG['addonCA']['errorPage']['button'] = 'Zurück zur Produktseite';
-$_LANG['addonCA']['errorPage']['error'] = 'Fehler';
-
-$_LANG['addonCA']['errorPage']['errorCode'] = 'Fehler Code';
-$_LANG['addonCA']['errorPage']['errorToken'] = 'Fehler Token';
-$_LANG['addonCA']['errorPage']['errorTime'] = 'Zeit';
-$_LANG['addonCA']['errorPage']['errorMessage'] = 'Nachricht';
-
-$_LANG['addonAA']['pageNotFound']['title'] = 'Seite nicht gefunden';
-$_LANG['addonAA']['pageNotFound']['description'] = 'Ein Fehler ist aufgetreten. Bitte wenden Sie sich an den Support.';
-$_LANG['addonAA']['pageNotFound']['button'] = 'Zurück zur Modul-Seite';
-
-$_LANG['addonAA']['errorPage']['title'] = 'Fehler aufgetreten';
-$_LANG['addonAA']['errorPage']['description'] = 'Ein Fehler ist aufgetreten. Bitte wenden Sie sich an den Support und geben Sie diese Details an:';
-$_LANG['addonAA']['errorPage']['button'] = 'Zurück zur Modul-Seite';
-$_LANG['addonAA']['errorPage']['error'] = 'Fehler';
-
-$_LANG['addonAA']['errorPage']['errorCode'] = 'Fehler Code';
-$_LANG['addonAA']['errorPage']['errorToken'] = 'Fehler Token';
-$_LANG['addonAA']['errorPage']['errorTime'] = 'Zeit';
-$_LANG['addonAA']['errorPage']['errorMessage'] = 'Nachricht';
-
-/* * ********************************************************************************************************************
- *                                                   ERROR CODES                                                        *
- * ******************************************************************************************************************** */
-$_LANG['errorCodeMessage']['Uncategorised error occured'] = 'Unbekannter Fehler';
-$_LANG['errorCodeMessage']['Database error'] = 'Datenbank Fehler';
-$_LANG['errorCodeMessage']['Provided controller does not exists'] = 'Seite nicht gefunden';
-$_LANG['errorCodeMessage']['Invalid Error Code!'] = 'Unerwarteter Fehler';
-
-/* * ********************************************************************************************************************
- *                                                   MODULE REQUIREMENTS                                                *
- * ******************************************************************************************************************** */
-$_LANG['unfulfilledRequirement']['In order for the module to work correctly, please remove the following file: :remove_file_requirement:'] = 'Damit das Modul korrekt funktioniert, entfernen Sie bitte die folgende Datei: :remove_file_requirement:';
-
-/* * ********************************************************************************************************************
- *                                                   ADMIN AREA                                                         *
- * ******************************************************************************************************************** */
-
-$_LANG['addonAA']['datatables']['next']                                                                        = 'Weiter';
-$_LANG['addonAA']['datatables']['previous']                                                                    = 'Zurück';
-$_LANG['addonAA']['datatables']['zeroRecords']                                                                 = 'Es gibt nichts anzuzeigen';
-$_LANG['formValidationError']                                                                                  = 'Ein Formular Validierungsfehler ist aufgetreten';
-$_LANG['FormValidators']['thisFieldCannotBeEmpty']                                                             = 'Dieses Feld darf nicht leer sein';
-$_LANG['FormValidators']['PleaseProvideANumericValue']                                                         = 'Bitte geben Sie eine Zahl an';
-$_LANG['FormValidators']['PleaseProvideANumericValueBetween']                                                  = 'Bitte geben Sie eine Zahl zwischen :minValue: und :maxValue: an';
-
-// -------------------------------------------------> MENU <--------------------------------------------------------- //
-$_LANG['changesSaved']                             = 'Die Änderungen wurden erfolgreich gespeichert';
-$_LANG['ItemNotFound']                             = 'Inhalt nicht gefunden';
-$_LANG['formValidationError']                                 = 'Formular Validierungsfehler';
-$_LANG['FormValidators']['thisFieldCannotBeEmpty']            = 'Dieses Feld darf nicht leer sein';
-$_LANG['FormValidators']['PleaseProvideANumericValue']        = 'Bitte geben Sie eine Zahl an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['leftSection']['customconfigoption[suspensionAction]']['customconfigoption[suspensionAction]'] = 'Aktion bei Suspendierung';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['leftSection']['customconfigoption[suspensionAction]']['tip'] = 'Wählen Sie die Aktion aus, welche bei einer Suspendierung durch WHMCS ausgeführt werden solll.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['rightSection']['customconfigoption[suspendOnBandwidthOverage]']['customconfigoption[suspendOnBandwidthOverage]'] = 'Suspendieren bei Bandbreiten Überbenutzung';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['rightSection']['customconfigoption[suspendOnBandwidthOverage]']['tip'] = 'Wählen Sie aus, ob der Server bei Übernenutzung der Bandbreite gesperrt werden soll.';
-$_LANG['serverAA']['configOptions']['KVM'] = 'KVM';
-$_LANG['serverAA']['configOptions']['LXC'] = 'LXC';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['rightSection']['customconfigoption[tags][]']['customconfigoption[tags][]']  = 'Tag';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['rightSection']['customconfigoption[tags][]']['tip'] = 'IP Adressen mit dem ausgewählten Tag zuweisen';
-$_LANG['serverAA']['configOptions']['Server-Node'] = 'Server-Node';
-$_LANG['serverAA']['configOptions']['Auto-Node'] = 'Auto-Node';
-$_LANG['serverAA']['configOptions']['Linux PAM standard authentication'] = 'Linux PAM Standard Authentifizierung';
-$_LANG['serverAA']['configOptions']['Proxmox VE authentication server'] = 'Proxmox VE Authentifizierungsserver';
-$_LANG['serverAA']['configOptions']['PVEPoolAdmin'] = 'PVEPoolAdmin';
-$_LANG['serverAA']['configOptions']['PVEAdmin'] = 'PVEAdmin';
-$_LANG['serverAA']['configOptions']['PVETemplateUser'] = 'PVETemplateUser';
-$_LANG['serverAA']['configOptions']['PVEUserAdmin'] = 'PVEUserAdmin';
-$_LANG['serverAA']['configOptions']['PVEDatastoreUser'] = 'PVEDatastoreUser';
-$_LANG['serverAA']['configOptions']['PVESysAdmin'] = 'PVESysAdmin';
-$_LANG['serverAA']['configOptions']['NoAccess'] = 'NoAccess';
-$_LANG['serverAA']['configOptions']['PVEAuditor'] = 'PVEAuditor';
-$_LANG['serverAA']['configOptions']['PVEVMUser'] = 'PVEVMUser';
-$_LANG['serverAA']['configOptions']['PVEVMAdmin'] = 'PVEVMAdmin';
-$_LANG['serverAA']['configOptions']['PVEDatastoreAdmin'] = 'PVEDatastoreAdmin';
-$_LANG['serverAA']['configOptions']['Administrator'] = 'Administrator';
-$_LANG['serverAA']['configOptions']['None'] = 'Nichts';
-$_LANG['serverAA']['configOptions']['Block'] = 'Blockieren';
-$_LANG['serverAA']['configOptions']['Migrate'] = 'Migrieren';
-$_LANG['serverAA']['configOptions']['local'] = 'Lokal';
-$_LANG['serverAA']['configOptions']['Started'] = 'Gestartet';
-$_LANG['serverAA']['configOptions']['Stopped'] = 'Gestoppt';
-$_LANG['serverAA']['configOptions']['Enabled'] = 'Aktiviert';
-$_LANG['serverAA']['configOptions']['Disabled'] = 'Deaktiviert';
-$_LANG['serverAA']['configOptions']['Ignored'] = 'Ignoriert';
-$_LANG['serverAA']['configOptions']['venet'] = 'Venet';
-$_LANG['serverAA']['configOptions']['eth\d+'] = 'Eth\d+';
-$_LANG['serverAA']['configOptions']['Unspecified OS'] = 'Nicht spezifiziertes OS';
-$_LANG['serverAA']['configOptions']['Microsoft Windows XP'] = 'Microsoft Windows XP';
-$_LANG['serverAA']['configOptions']['Microsoft Windows 2000'] = 'Microsoft Windows 2000';
-$_LANG['serverAA']['configOptions']['Microsoft Windows 2003'] = 'Microsoft Windows 2003';
-$_LANG['serverAA']['configOptions']['Microsoft Windows 2008'] = 'Microsoft Windows 2008';
-$_LANG['serverAA']['configOptions']['Microsoft Windows Vista'] = 'Microsoft Windows Vista';
-$_LANG['serverAA']['configOptions']['Microsoft Windows 7'] = 'Microsoft Windows 7';
-$_LANG['serverAA']['configOptions']['Microsoft Windows 8/2012'] = 'Microsoft Windows 8/2012';
-$_LANG['serverAA']['configOptions']['Linux 2.4 Kernel'] = 'Linux 2.4 Kernel';
-$_LANG['serverAA']['configOptions']['Linux 2.6/3.X Kernel'] = 'Linux 2.6/3.X Kernel';
-$_LANG['serverAA']['configOptions']['Solaris Kernel'] = 'Solaris Kernel';
-$_LANG['serverAA']['configOptions']['pt'] = 'PT';
-$_LANG['serverAA']['configOptions']['tr'] = 'TR';
-$_LANG['serverAA']['configOptions']['ja'] = 'JA';
-$_LANG['serverAA']['configOptions']['es'] = 'ES';
-$_LANG['serverAA']['configOptions']['no'] = 'NO';
-$_LANG['serverAA']['configOptions']['is'] = 'IS';
-$_LANG['serverAA']['configOptions']['fr-ca'] = 'FR-CA';
-$_LANG['serverAA']['configOptions']['fr'] = 'FR';
-$_LANG['serverAA']['configOptions']['pt-br'] = 'PT-BR';
-$_LANG['serverAA']['configOptions']['da'] = 'DA';
-$_LANG['serverAA']['configOptions']['fr-ch'] = 'FR-CH';
-$_LANG['serverAA']['configOptions']['sl'] = 'SL';
-$_LANG['serverAA']['configOptions']['de-ch'] = 'DE-CH';
-$_LANG['serverAA']['configOptions']['en-gb'] = 'EN-GB';
-$_LANG['serverAA']['configOptions']['it'] = 'IT';
-$_LANG['serverAA']['configOptions']['en-us'] = 'EN-US';
-$_LANG['serverAA']['configOptions']['fr-be'] = 'FR-BE';
-$_LANG['serverAA']['configOptions']['hu'] = 'HU';
-$_LANG['serverAA']['configOptions']['pl'] = 'PL';
-$_LANG['serverAA']['configOptions']['nl'] = 'NL';
-$_LANG['serverAA']['configOptions']['mk'] = 'MK';
-$_LANG['serverAA']['configOptions']['fi'] = 'FI';
-$_LANG['serverAA']['configOptions']['lt'] = 'LT';
-$_LANG['serverAA']['configOptions']['sv'] = 'SV';
-$_LANG['serverAA']['configOptions']['de'] = 'DE';
-$_LANG['serverAA']['configOptions']['testPool'] = 'TestPool';
-$_LANG['serverAA']['configOptions']['Standard VGA'] = 'Standard VGA';
-$_LANG['serverAA']['configOptions']['Cirrus Logic'] = 'Cirrus Logic';
-$_LANG['serverAA']['configOptions']['VMWare'] = 'VMWare';
-$_LANG['serverAA']['configOptions']['Serial terminal 0'] = 'Serial terminal 0';
-$_LANG['serverAA']['configOptions']['Serial terminal 1'] = 'Serial terminal 1';
-$_LANG['serverAA']['configOptions']['Serial terminal 2'] = 'Serial terminal 2';
-$_LANG['serverAA']['configOptions']['Serial terminal 3'] = 'Serial terminal 3';
-$_LANG['serverAA']['configOptions']['SPICE'] = 'SPICE';
-$_LANG['serverAA']['configOptions']['SPICE dual monitor'] = 'SPICE dual monitor';
-$_LANG['serverAA']['configOptions']['SPICE three monitor'] = 'SPICE three monitor';
-$_LANG['serverAA']['configOptions']['SPICE four monitor'] = 'SPICE four monitor';
-$_LANG['serverAA']['configOptions']['Full Clone'] = 'Full Clone';
-$_LANG['serverAA']['configOptions']['Linked Clone'] = 'Linked Clone';
-$_LANG['serverAA']['configOptions']['local-lvm'] = 'Local-LVM';
-$_LANG['serverAA']['configOptions']['IDE'] = 'IDE';
-$_LANG['serverAA']['configOptions']['SATA'] = 'SATA';
-$_LANG['serverAA']['configOptions']['VIRTIO'] = 'VIRTIO';
-$_LANG['serverAA']['configOptions']['SCSI'] = 'SCSI';
-$_LANG['serverAA']['configOptions']['Raw disk image (raw)'] = 'Raw disk image (raw)';
-$_LANG['serverAA']['configOptions']['QEMU image format (qcow2)'] = 'QEMU image format (qcow2)';
-$_LANG['serverAA']['configOptions']['VM image format (vmdk)'] = 'VM image format (vmdk)';
-$_LANG['serverAA']['configOptions']['Default (No Cache)'] = 'Standard (Kein Cache)';
-$_LANG['serverAA']['configOptions']['Write Through'] = 'Write Through';
-$_LANG['serverAA']['configOptions']['Write Back'] = 'Write Back';
-$_LANG['serverAA']['configOptions']['Write Back (Unsafe)'] = 'Write Back (Unsicher)';
-$_LANG['serverAA']['configOptions']['Direct Sync'] = 'Direct Sync';
-$_LANG['serverAA']['configOptions']['lsi'] = 'Lsi';
-$_LANG['serverAA']['configOptions']['virtio-scsi-pci'] = 'Virtio-scsi-pci';
-$_LANG['serverAA']['configOptions']['megasas'] = 'Megasas';
-$_LANG['serverAA']['configOptions']['e1000'] = 'E1000';
-$_LANG['serverAA']['configOptions']['i82551'] = 'I82551';
-$_LANG['serverAA']['configOptions']['i82557b'] = 'I82557b';
-$_LANG['serverAA']['configOptions']['i82559er'] = 'I82559er';
-$_LANG['serverAA']['configOptions']['ne2k_isa'] = 'Ne2k_isa';
-$_LANG['serverAA']['configOptions']['ne2k_pci'] = 'Ne2k_pci';
-$_LANG['serverAA']['configOptions']['pcnet'] = 'Pcnet';
-$_LANG['serverAA']['configOptions']['rtl8139'] = 'Rtl8139';
-$_LANG['serverAA']['configOptions']['virtio'] = 'Virtio';
-$_LANG['serverAA']['configOptions']['vmxnet3'] = 'Vmxnet3';
-$_LANG['serverAA']['configOptions']['vmbr0'] = 'Vmbr0';
-$_LANG['serverAA']['configOptions']['vmbr1'] = 'Vmbr1';
-$_LANG['serverAA']['configOptions']['Hard Disk'] = 'Festplatte';
-$_LANG['serverAA']['configOptions']['CD-ROM'] = 'CD-ROM';
-$_LANG['serverAA']['configOptions']['Network'] = 'Netzwerk';
-$_LANG['serverAA']['configOptions']['Ubuntu'] = 'Ubuntu';
-$_LANG['serverAA']['configOptions']['damian.com'] = 'Damian.com';
-$_LANG['serverAA']['configOptions']['CentOS 7 X86 64 Minimal 1810'] = 'CentOS 7 X86 64 Minimal 1810';
-$_LANG['serverAA']['configOptions']['Debian Live 9.4.0 Amd64 Cinnamon'] = 'Debian Live 9.4.0 Amd64 Cinnamon';
-$_LANG['serverAA']['configOptions']['MB'] = 'MB';
-$_LANG['serverAA']['configOptions']['gb'] = 'GB';
-$_LANG['serverAA']['configOptions']['GB'] = 'GB';
-$_LANG['serverAA']['configOptions']['TB'] = 'TB';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['mainSection'] = 'Allgemein';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['leftSection']['customconfigoption[virtualization]']['customconfigoption[virtualization]'] = 'Virtualisierung';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['leftSection']['customconfigoption[debugMode]']['customconfigoption[debugMode]'] = 'Debug Modus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['leftSection']['customconfigoption[debugMode]']['tip'] = 'Aktivieren, um Logs im Module Log zu speichern';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['leftSection']['customconfigoption[virtualization]']['tip'] = 'Wählen Sie die Virtualisierung aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['rightSection']['customconfigoption[defaultNode]']['customconfigoption[defaultNode]'] = '	Standard Node';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['rightSection']['customconfigoption[defaultNode]']['tip'] = 'Wählen Sie die Standard Node aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['rightSection']['customconfigoption[checkResources]']['customconfigoption[checkResources]'] = 'Verfügbare Ressourcen überprüfen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['rightSection']['customconfigoption[checkResources]']['tip'] = 'Sofern aktiviert, wird vor der Erstellung überprüft, ob die Ressourcen Limits nicht überschritten werden.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['miscellaneousSection'] = 'Diverses';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['leftSection']['customconfigoption[backupVmBeforeReinstall]']['customconfigoption[backupVmBeforeReinstall]'] = 'Backup vor Neuinstallation erstellen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['leftSection']['customconfigoption[backupVmBeforeReinstall]']['tip'] = 'Sofern aktiviert, wird ein Backup vom Server vor der Neuinstallation erstellt.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['leftSection']['customconfigoption[deleteBackups]']['customconfigoption[deleteBackups]'] = 'Backups nach Kündigen des Servers löschen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['leftSection']['customconfigoption[deleteBackups]']['tip'] = 'Sofern aktiviert, werden die Backups des Servers nach Kündigung gelöscht.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['rightSection']['customconfigoption[rebootVmAfterChangePackage]']['customconfigoption[rebootVmAfterChangePackage]'] = 'Server nach Paketänderung neustarten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['rightSection']['customconfigoption[rebootVmAfterChangePackage]']['tip'] = 'Sofern aktiviert, wird der Server nach einer Änderung des Pakets neugestarte.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['rightSection']['customconfigoption[serverNameservers]']['customconfigoption[serverNameservers]'] = 'Server Nameserver verwenden';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['miscellaneousSection']['rightSection']['customconfigoption[serverNameservers]']['tip'] = 'Sofern aktiviert, werden die Server Nameserver gesetzt, basierend auf der Server Konfiguration des Moduls (angegeben in Form einer IP Adresse), unabhängig von den gesetzten Nameserver des Kunden bei der Bestellung';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['consoleSection']['consoleSection'] = 'Konsole';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['consoleSection']['leftSection']['customconfigoption[consoleHost]']['customconfigoption[consoleHost]'] = 'Konsole Host';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['consoleSection']['leftSection']['customconfigoption[consoleHost]']['tip'] = 'Geben Sie eine alternative IP Adresse für die VNC Konsole an, oder lassen Sie das Feld leer um es zu deaktivieren.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['userSection'] = 'Benutzer';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['leftSectionsdf']['customconfigoption[oneUserPerVps]']['customconfigoption[oneUserPerVps]'] = 'Ein Benutzername pro Server';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['leftSectionsdf']['customconfigoption[oneUserPerVps]']['tip'] = 'Wenn ein Kunde mehrere Server bestellt, wird für jeden ein eigener Benutzer erstellt. Andernfalls wird ein Benutzer pro Kunde erstellt.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['leftSectionsdf']['customconfigoption[realm]']['customconfigoption[realm]'] = 'Realm';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['leftSectionsdf']['customconfigoption[realm]']['tip'] = 'Wählen Sie den Authentifizierungs-Realm aus.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['leftSectionsdf']['customconfigoption[userRole]']['customconfigoption[userRole]'] = 'Benutzerrechte';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['leftSectionsdf']['customconfigoption[userRole]']['tip'] = 'Wählen Sie die Benutzerrolle aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['rightSectionsdf']['customconfigoption[userPrefix]']['customconfigoption[userPrefix]'] = 'Standard Benutzername Prefix';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['rightSectionsdf']['customconfigoption[userPrefix]']['tip'] = 'Geben Sie den Prefix an, der für den Benutzernamen genutzt werden soll.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['rightSectionsdf']['customconfigoption[userComment]']['customconfigoption[userComment]'] = 'Benutzer Kommentar';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['userSection']['rightSectionsdf']['customconfigoption[userComment]']['tip'] = 'Geben Sie einen Kommentar an, welcher beim Nutzer stehen soll.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientNotificationSection']['clientNotificationSection'] = 'Benutzer Benachrichtigungen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientNotificationSection']['leftSection']['customconfigoption[welcomeEmailTemplateId]']['customconfigoption[welcomeEmailTemplateId]'] = 'Willkommens E-Mail';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientNotificationSection']['leftSection']['customconfigoption[welcomeEmailTemplateId]']['tip'] = 'Wählen Sie die Willkommens E-Mail, welche bei der Erstellung des Servers gesendet werden soll.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientNotificationSection']['rightSection']['customconfigoption[reinstallEmailTemplateId]']['customconfigoption[reinstallEmailTemplateId]'] = 'E-Mail bei Neuinstallation';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientNotificationSection']['rightSection']['customconfigoption[reinstallEmailTemplateId]']['tip'] = 'Wählen Sie die E-Mail Benachrichtigung, wenn ein Server neu installiert wird.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['adminNotificationSection']['adminNotificationSection'] = 'Admin Benachrichtigungen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['adminNotificationSection']['leftSection']['customconfigoption[serviceCreationFailedTemplateId]']['customconfigoption[serviceCreationFailedTemplateId]'] = 'Server Erstellung fehlgeschlagen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['adminNotificationSection']['leftSection']['customconfigoption[serviceCreationFailedTemplateId]']['tip'] = 'Wählen Sie die E-Mail Benachrichtigung aus, welche gesendet werden soll, wenn die Erstellung fehlschlägt.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['adminNotificationSection']['leftSection']['customconfigoption[upgradeNotificationTemplateId]']['customconfigoption[upgradeNotificationTemplateId]'] = 'Upgrade';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['adminNotificationSection']['leftSection']['customconfigoption[upgradeNotificationTemplateId]']['tip'] = 'Wählen Sie die E-Mail aus, welche gesendet werden soll, wenn das Upgrade des Servers durch das Modul blockiert wird.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['adminNotificationSection']['rightSection']['customconfigoption[toDoList]']['customconfigoption[toDoList]'] = 'To-Do Liste';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['adminNotificationSection']['rightSection']['customconfigoption[toDoList]']['tip'] = 'Sofern aktiviert, werden E-Mail Benachrichtigungen auch auf die WHMCS To-Do Liste gesetzt.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['configurationSection'] = 'KVM Konfiguration';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[ostype]']['customconfigoption[ostype]'] = 'OS Typ';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[ostype]']['tip'] = 'Wählen Sie den Standard Typ für das Betriebssystem aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[cdrom]']['customconfigoption[cdrom]'] = 'CD-ROM Volume';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[cdrom]']['tip'] = 'Gbeen Sie einen Alias für die Option -ide2 ein';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[cdromType]']['customconfigoption[cdromType]'] = 'CD/DVD-ROM Typ';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[cdromType]']['tip'] = 'Wählen Sie den Typ für CD/DVD-ROM';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[numa]']['customconfigoption[numa]'] = 'Numa';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[numa]']['tip'] = 'Sofern aktiviert, wird das System versuchen, dass der Server all seine virtuellen Kerne auf dem selben physischen Sockel hat und nur den RAM verwendet, welcher physisch zu diesem Sockel verbunden ist.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[spec-ctrl]']['customconfigoption[spec-ctrl]'] = 'SPEC-CTRL';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[spec-ctrl]']['tip'] = 'Wenn diese Option aktiviert ist, kann ein Betriebssystem die spekulative Ausführung selektiv deaktivieren oder einschränken, um die Fähigkeit von Angreifern einzuschränken, die Spectre-Sicherheitsanfälligkeit auszunutzen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[freeze]']['customconfigoption[freeze]'] = 'CPU bei Start einfrieren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[freeze]']['tip'] = 'Sofern aktiviert, wird der Server beim Start eingefroren ( \'c\' monitor Befehl zum ausführen verwenden)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[keyboard]']['customconfigoption[keyboard]'] = 'Tastatur';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[keyboard]']['tip'] = 'Wählen Sie das Tastaturlayout für den VNC Server aus. Normalerweise wird dies von der Konfiguration ausgelesen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[pool]']['customconfigoption[pool]'] = 'Pool';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[pool]']['tip'] = 'Wählen Sie aus, zu welchem Pool der Server hinzugefügt werden soll.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[vga]']['customconfigoption[vga]'] = 'VGA Typ';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[vga]']['tip'] = 'Sofern Sie hochauflösende Modi (&gt;= 1280x1024x16) verwenden wollen, sollten Sie die Option \'std\' oder \'vmware\' verwenden. Standard ist \'std\' für Windows 7, 8 & w2k8, sowie \'cirrur\' für andere Betriebssysteme.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[clientNameForContainer]']['customconfigoption[clientNameForContainer]'] = 'Kundenname für Server verwenden';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[clientNameForContainer]']['tip'] = 'Wählen Sie aus, ob und wann der Hostname überschrieben werden soll.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[osTemplatesInAllNodes]']['customconfigoption[osTemplatesInAllNodes]'] = 'Für Templates auf allen Nodes suchen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[osTemplatesInAllNodes]']['tip'] = 'Die Suche nach Templates auf allen Nodes aktivieren.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[acpi]']['customconfigoption[acpi]'] = 'ACPI';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[acpi]']['tip'] = 'Sofern aktiviert, wird ACPI verwendet um Signale wie "Herunterfahren" zum Server zu senden (QEMU/VM)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[autostart]']['customconfigoption[autostart]'] = 'Automatisch neustarten nach Crash';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[autostart]']['tip'] = 'Sofern aktiviert, wird der Server nach einem Crash automatisch neugestartet.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[pcid]']['customconfigoption[pcid]'] = 'PCID';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[pcid]']['tip'] = 'Sofern aktiviert, wird ein logischer Prozessor Informationen speichern für mehrere lineare Adressräume im TLB.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[description]']['customconfigoption[description]'] = 'Container Notizen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[description]']['tip'] = 'Geben Sie hier Notizen ein, welche im Webinterface angezeigt werden sollen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[hotplug][]']['customconfigoption[hotplug][]'] = 'Hotplug';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[hotplug][]']['tip'] = 'Wählen Sie aus, ob die Hotplug Features aktiviert sein sollen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[kvm]']['customconfigoption[kvm]'] = 'KVM Hardware Virtualisierung';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[kvm]']['tip'] = 'Sofern aktiviert, wird der Server direkt auf der CPU laufen können.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[onboot]']['customconfigoption[onboot]'] = 'Bei Start einschalten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[onboot]']['tip'] = 'Sofern aktiviert, wird der Server beim einschalten gestartet werden.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[reboot]']['customconfigoption[reboot]'] = 'Neustart erlauben';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[reboot]']['tip'] = 'Sofern deaktiviert, wird der Server bei einem Neustart sich ausschalten.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[tablet]']['customconfigoption[tablet]'] = 'USB Tablet Gerät';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[tablet]']['tip'] = 'Dieses Gerät ist üblicherweise benötigt um das genaue positionieren der Maus zu ermöglichen, andernfalls wird die Maus nicht mehr synchron mit dem VNC Client funktionieren. Sie können dies deaktivieren, um einige Kontextwechsel zu speichern, falls Sie viele Console-Only Gäste auf einem Host ausführen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[containerPrefix]']['customconfigoption[containerPrefix]'] = 'Standard Container Prefix';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[containerPrefix]']['tip'] = 'Geben Sie den Standard Container Prefix an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[cloneMode]']['customconfigoption[cloneMode]'] = 'Klon Modus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[cloneMode]']['tip'] = 'Wählen Sie den Klon Modus aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['advancedSection'] = 'Zusätzliche KVM Konfiguratoin';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[balloon]']['customconfigoption[balloon]'] = 'Minimaler RAM [MB]';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[balloon]']['tip'] = 'Geben Sie 0 ein, um den Treiber zu deaktivieren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[args]']['customconfigoption[args]'] = 'Argumente';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[args]']['tip'] = 'Diese Option ist nur für Experten. Sie erlaubt willkürliche Argumente an den KVM Server weiterzugeben, zum Beispiel: -no-reboot -no-hpet.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[migrate_speed]']['customconfigoption[migrate_speed]'] = 'Maximale Geschwindigkeit für Migrationen [MB/s]';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[migrate_speed]']['tip'] = 'Setzen Sie den maximalen Speed für Migrationen in MB/s. Geben Sie 0 ein um das Limit zu deaktivieren.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[startdate]']['customconfigoption[startdate]'] = 'Anfangsdatum der Echtzeit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[startdate]']['tip'] = '(now | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS) >Setzen Sie das Anfangsdatum. Gültige Formate: \'now\' oder \'2006-06-17T16:01:21\' oder \'2006-06-17\'';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[tdf]']['customconfigoption[tdf]'] = 'Time Drift Fix';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[tdf]']['tip'] = 'Time Drift Fix ein-/ausschalten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[shares]']['customconfigoption[shares]'] = 'Memory Shares';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[shares]']['tip'] = 'Enter the number of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. The number is relative to weights of all other running VMs. Enter zero to disable auto-ballooning.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[localtime]']['customconfigoption[localtime]'] = 'Echtzeituhr Lokale Uhrzeit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[localtime]']['tip'] = 'Sofern aktiviert, wird die lokale Zeit verwendet.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[migrate_downtime]']['customconfigoption[migrate_downtime]'] = 'Maximal tolerierte Ausfallzeit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[migrate_downtime]']['tip'] = 'Setzen Sie die maximal tolerierte Ausfallzeit für Migrationen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[watchdog]']['customconfigoption[watchdog]'] = 'Hardware Watchdog Gerät';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[watchdog]']['tip'] = 'Hardware Watchdog Gerät ein-/ausschalten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[startup]']['customconfigoption[startup]'] = 'Aufstarten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[startup]']['tip'] = '[[order=]\d+] [,up=\d+] [,down=\d+] Definieren Sie das Start und Stop Verhalten. Order ist eine nicht-negative Zahl, welche die Start-Reihenfolge definiert. Das Herunterfahren wird in umgekehrter Reihenfolge durchgeführt. Zusätzlich können Sie die \'up\’ oder \'down\' Verzögerung in Sekunden angeben, welche eine Verzögerung angibt, bevor der nächste Server gestartet oder gestoppt wird.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['containerSection'] = 'Virtuelle Maschine Konfiguration';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[osTemplate]']['customconfigoption[osTemplate]'] = 'OS Template';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[osTemplate]']['tip'] = 'Wählen Sie das Standard OS Template für den Server aus.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[cpu]']['customconfigoption[cpu]'] = 'CPU Typ';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[cpu]']['tip'] = 'Wählen Sie den CPU Typ aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[sockets]']['customconfigoption[sockets]'] = 'CPU Sockel';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[sockets]']['tip'] = 'Geben Sie die Anzahl an CPU Sockeln an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[vcpus]']['customconfigoption[vcpus]'] = 'vCPUs';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[vcpus]']['tip'] = 'Geben Sie die Anzahl an hotplugged vCPUs an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[cpuunits]']['customconfigoption[cpuunits]'] = 'Server CPU Gewicht';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[cpuunits]']['tip'] = 'Das Argument ist benutzt im Kernel Fair Planer. Je grösser die Zahl ist, umso mehr CPU Zeit erhält der Server. Die Nummer ist relativ zum Gewicht von allen anderen laufenden Servern.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[memory]']['customconfigoption[memory]'] = 'Server RAM [MB]';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[memory]']['tip'] = 'Geben Sie die Standard Anzahl an RAM für den Server an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[additionalDiskSize]']['customconfigoption[additionalDiskSize]'] = 'Speicherplatz für zusätzliche Festplatten [GB]';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[additionalDiskSize]']['tip'] = 'Geben Sie den standardmässigen Speicherplatz für zusätzliche Festplatten an [GB]';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[minimumRate]']['customconfigoption[minimumRate]'] = 'Minimale Netzwerkgeschwindigkeit [MB/s]';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[minimumRate]']['tip'] = 'Die angegebene Geschwindigkeit wird verwendet, wenn der Kunde die gebuchte Bandbreite überschreitet.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[ipv6]']['customconfigoption[ipv6]'] = 'Anzahl an IPv6 Adressen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[ipv6]']['tip'] = 'Geben Sie die Anzahl an IPv6 Adressen an, oder lassen Sie das Feld leer, um die Funktion zu deaktivieren.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[backupMaxFiles]']['customconfigoption[backupMaxFiles]'] = 'Backup Datei Limit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[backupMaxFiles]']['tip'] = 'Geben Sie die maximale Anzahl an Backup Dateien an, oder -1 um kein Limit zu setzen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[isoImage]']['customconfigoption[isoImage]'] = 'ISO Datei';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[isoImage]']['tip'] = 'Wählen Sie die Standardmässige ISO Datei für Server aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[cores]']['customconfigoption[cores]'] = 'Anzahl an Kernen pro CPU Sockel';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[cores]']['tip'] = 'Geben Sie die Anzahl an Kernen pro CPU Sockel an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[cpulimit]']['customconfigoption[cpulimit]'] = 'CPU Limit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[cpulimit]']['tip'] = 'Geben Sie das Limit an CPU Auslastung an. Information: Wenn der Server 2 CPUs hat, hat er ein total von \'2\' CPU Zeit. Geben Sie 0 ein, um kein Limit zu setzen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[diskSize]']['customconfigoption[diskSize]'] = 'Speicherplatz [GB]';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[diskSize]']['tip'] = 'Geben Sie den standardmässigen Speicherplatz an [GB]';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[rate]']['customconfigoption[rate]'] = 'Netzewrkgeschwindigkeit [MB/s]';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[rate]']['tip'] = 'Geben Sie das Limit für die Netzwerkgeschwindigkeit in MB/s an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[ipv4]']['customconfigoption[ipv4]'] = 'Anzahl an IPv4 Adressen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[ipv4]']['tip'] = 'Geben Sie die standardmässige Anzahl an IPv4 Adressen an.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[backupMaxSize]']['customconfigoption[backupMaxSize]'] = 'Backupgrösse Limit [GB]';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[backupMaxSize]']['tip'] = 'Geben Sie die maximale Grösse für Backup Dateien an oder -1 um kein Limit zu setzen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[bandwidth]']['customconfigoption[bandwidth]'] = 'Bandbreitenlimit [GB]';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[bandwidth]']['tip'] = 'Geben Sie das Limit für die Bandbreite in GB an, oder lassen Sie das Feld leer, um kein Limit zu setzen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[snapshotMaxFiles]']['customconfigoption[snapshotMaxFiles]'] = 'Snapshot Limit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[snapshotMaxFiles]']['tip'] = 'Geben Sie die maximale Anzahl an Snapshots an, oder -1 um kein Limit zu setzen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['diskSection'] = 'Festplatten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['leftSection']['customconfigoption[diskStorage]']['customconfigoption[diskStorage]'] = 'Speicher';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['leftSection']['customconfigoption[diskStorage]']['tip'] = 'Wählen Sie den standardmässigen Speicher aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['leftSection']['customconfigoption[diskFormat]']['customconfigoption[diskFormat]'] = 'Speicher Format';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['leftSection']['customconfigoption[diskFormat]']['tip'] = 'Wählen Sie das Format für den Speicher';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['leftSection']['customconfigoption[scsihw]']['customconfigoption[scsihw]'] = 'SCSI Controller Modell';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['leftSection']['customconfigoption[scsihw]']['tip'] = 'Wählen Sie das Modell des SCSI controllers';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['leftSection']['customconfigoption[replicate]']['customconfigoption[replicate]'] = 'Replizierung überspringen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['leftSection']['customconfigoption[replicate]']['tip'] = 'Sofern aktiviert, wird die Replizierung übersprungen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['leftSection']['customconfigoption[diskSpeed]']['customconfigoption[diskSpeed]'] = 'Festplattengeschwindigkeit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['leftSection']['customconfigoption[diskSpeed]']['tip'] = 'Sofern aktiviert können Geschwindigkeitsoptionen für Lesen und Schreiben gesetzt werden.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['rightSection']['customconfigoption[diskType]']['customconfigoption[diskType]'] = 'Festplattentyp';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['rightSection']['customconfigoption[diskType]']['tip'] = 'Wählen Sie den Festplattentyp aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['rightSection']['customconfigoption[diskCache]']['customconfigoption[diskCache]'] = 'Festplattencache';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['rightSection']['customconfigoption[diskCache]']['tip'] = 'Wählen Sie den Festplattencache aus.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['rightSection']['customconfigoption[discard]']['customconfigoption[discard]'] = 'Disk Discard';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['rightSection']['customconfigoption[discard]']['tip'] = 'Disk Discard ein-/ausschalten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['rightSection']['customconfigoption[ioThread]']['customconfigoption[ioThread]'] = 'IO Thread';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['rightSection']['customconfigoption[ioThread]']['tip'] = 'IO Thread ein-/ausschalten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSpeedSection']['diskSpeedSection'] = 'Festplattengeschwindigkeit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSpeedSection']['leftSection']['customconfigoption[mbps_rd]']['customconfigoption[mbps_rd]'] = 'Lesen Limit (MB/s)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSpeedSection']['leftSection']['customconfigoption[mbps_rd]']['tip'] = 'Geben Sie das Limit zum lesen in MB/s an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSpeedSection']['leftSection']['customconfigoption[iops_rd]']['customconfigoption[iops_rd]'] = 'Lesen Limit (ops/s)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSpeedSection']['leftSection']['customconfigoption[iops_rd]']['tip'] = 'Geben Sie das Limit zum lesen in ops/s an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSpeedSection']['leftSection']['customconfigoption[iops_wr]']['customconfigoption[iops_wr]'] = 'Schreiben Limit (ops/s)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSpeedSection']['leftSection']['customconfigoption[iops_wr]']['tip'] = 'Geben Sie das Limit zum schreiben in ops/s an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSpeedSection']['rightSection']['customconfigoption[mbps_wr]']['customconfigoption[mbps_wr]'] = 'Schreiben Limit (MB/s)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSpeedSection']['rightSection']['customconfigoption[mbps_wr]']['tip'] = 'Geben Sie das Limit zum schreiben in MB/s an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSpeedSection']['rightSection']['customconfigoption[iops_rd_max]']['customconfigoption[iops_rd_max]'] = 'Read Max Burst (ops)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSpeedSection']['rightSection']['customconfigoption[iops_rd_max]']['tip'] = 'Geben Sie "read max burst" in ops an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSpeedSection']['rightSection']['customconfigoption[iops_wr_max]']['customconfigoption[iops_wr_max]'] = 'Write Max Burst (ops)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSpeedSection']['rightSection']['customconfigoption[iops_wr_max]']['tip'] = 'Geben Sie "write max burst" in ops an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['additonalDisk'] = 'Zusätzliche Festplatten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['leftSection']['customconfigoption[additionalDiskStorage]']['customconfigoption[additionalDiskStorage]'] = 'Speicher';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['leftSection']['customconfigoption[additionalDiskStorage]']['tip'] = 'Wählen Sie den Speicher für zusätzliche Festplatten aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['leftSection']['customconfigoption[additionalDiskFormat][]']['customconfigoption[additionalDiskFormat][]'] = 'Zusätzliche Festplatten Format';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['leftSection']['customconfigoption[additionalDiskFormat][]']['tip'] = 'Wählen Sie das Format für zusätzliche Festplatten aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['leftSection']['customconfigoption[additionalDiskCache]']['customconfigoption[additionalDiskCache]'] = 'Zusätzlicher Disk Cache';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['leftSection']['customconfigoption[additionalDiskCache]']['tip'] = 'Wählen Sie den Cache für zusätzliche Festplatten aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['leftSection']['customconfigoption[additionalDiskIoThread]']['customconfigoption[additionalDiskIoThread]'] = 'Zusätzlicher Disk IO Thread';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['leftSection']['customconfigoption[additionalDiskIoThread]']['tip'] = 'Zusätzlichen disk IO thread angeben';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['leftSection']['customconfigoption[additionalDiskSpeed]']['customconfigoption[additionalDiskSpeed]'] = 'Zusätzliche Festplattengeschwindigkeit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['leftSection']['customconfigoption[additionalDiskSpeed]']['tip'] = 'Zusätzliche Festplattengeschwindigkeit ein-/ausschalten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[additionalDiskType][]']['customconfigoption[additionalDiskType][]'] = 'Zusätzliche Festplatten Typ';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[additionalDiskType][]']['tip'] = 'Wählen Sie den Typ für zusätzliche Festplatten aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[additionalDiskReplicate]']['customconfigoption[additionalDiskReplicate]'] = 'Replizierung überspringen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[additionalDiskReplicate]']['tip'] = 'Sofern aktiviert, wird die Replizierung bei zusätzlichen Festplatten übersprungen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[additionalDiskDiscard]']['customconfigoption[additionalDiskDiscard]'] = 'Verwerfen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[additionalDiskDiscard]']['tip'] = 'Verwerfen ein-/ausschalten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[permissionAdditionalDiskBackup]']['customconfigoption[permissionAdditionalDiskBackup]'] = 'Backups für zusätzliche Festplatten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[permissionAdditionalDiskBackup]']['tip'] = 'Sofern aktiviert, werden Backups für zusätzliche Festplatten erlaubt.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['additonalDiskSpeedSection'] = 'Geschwindigkeit für zusätzliche Festplatten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['leftSection']['customconfigoption[additionalDiskMbps_rd]']['customconfigoption[additionalDiskMbps_rd]'] = 'Lesen Limit (MB/s)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['leftSection']['customconfigoption[additionalDiskMbps_rd]']['tip'] = 'Geben Sie das Limit zum lesen in MB/s an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['leftSection']['customconfigoption[additionalDiskIops_rd]']['customconfigoption[additionalDiskIops_rd]'] = 'Lesen Limit (ops/s)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['leftSection']['customconfigoption[additionalDiskIops_rd]']['tip'] = 'Geben Sie das Limit zum lesen in ops/s an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['leftSection']['customconfigoption[additionalDiskIops_wr]']['customconfigoption[additionalDiskIops_wr]'] = 'Schreiben Limit (ops/s)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['leftSection']['customconfigoption[additionalDiskIops_wr]']['tip'] = 'Geben Sie das Limit zum schreiben in ops/s an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['rightSection']['customconfigoption[additionalDiskMbps_wr]']['customconfigoption[additionalDiskMbps_wr]'] = 'Schreiben Limit (MB/s)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['rightSection']['customconfigoption[additionalDiskMbps_wr]']['tip'] = 'Geben Sie das Limit zum schreiben in MB/s an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['rightSection']['customconfigoption[additionalDiskIops_rd_max]']['customconfigoption[additionalDiskIops_rd_max]'] = 'Read Max Burst (ops)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['rightSection']['customconfigoption[additionalDiskIops_rd_max]']['tip'] = 'Geben Sie "read max burst" in ops an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['rightSection']['customconfigoption[additionalDiskIops_wr_max]']['customconfigoption[additionalDiskIops_wr_max]'] = 'Write Max Burst (ops)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDiskSpeedSection']['rightSection']['customconfigoption[additionalDiskIops_wr_max]']['tip'] = 'Geben Sie "write max burst" in ops an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['networkSection'] = 'Netzwerk';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[networkModel]']['customconfigoption[networkModel]'] = 'Modell';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[networkModel]']['tip'] = 'Wählen Sie das Netzwerkmodell aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[oneNetworkDevice]']['customconfigoption[oneNetworkDevice]'] = 'Ein Netzwerkgerät';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[oneNetworkDevice]']['tip'] = 'Aktivieren Sie diese Option, wenn Sie kein zweites Netzwerkinterface erstellen wollen, sondern nur IP Einstellungen zu der IP Liste hinzufügen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[networkPrivateModel]']['customconfigoption[networkPrivateModel]'] = 'Privates Netzwerkmodell';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[networkPrivateModel]']['tip'] = 'Wählen Sie das Modell für das private Netzwerk aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[queues]']['customconfigoption[queues]'] = 'Multiqueue';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[queues]']['tip'] = 'Geben Sie die Nummer für multiqueuing an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[tagTo]']['customconfigoption[tagTo]'] = 'VLAN TAG Range maximale Nummer';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[tagTo]']['tip'] = 'Geben Sie die maximale Nummer für die VLAN TAG range an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['rightSection']['customconfigoption[bridge]']['customconfigoption[bridge]'] = 'Bridge';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['rightSection']['customconfigoption[bridge]']['tip'] = 'Wählen Sie die Netzwerkbridge aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['rightSection']['customconfigoption[privateBridge]']['customconfigoption[privateBridge]'] = 'Private Bridge';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['rightSection']['customconfigoption[privateBridge]']['tip'] = 'Wählen Sie die private Bridge aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['rightSection']['customconfigoption[networkFirewall]']['customconfigoption[networkFirewall]'] = 'Firewall';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['rightSection']['customconfigoption[networkFirewall]']['tip'] = 'Schalten Sie die Firewall auf einem Netzwerkgerät ein/aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['rightSection']['customconfigoption[tagFrom]']['customconfigoption[tagFrom]'] = 'VLAN TAG Range minimale Nummer';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['rightSection']['customconfigoption[tagFrom]']['tip'] = 'Geben Sie die minimale Nummer für die VLAN TAG range an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['bootSection']['bootSection'] = 'Boot';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['bootSection']['leftSection']['customconfigoption[bootDevice1]']['customconfigoption[bootDevice1]'] = 'Boot Gerät 1';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['bootSection']['leftSection']['customconfigoption[bootDevice1]']['tip'] = 'Wählen Sie das Gerät 1 aus um zu booten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['bootSection']['leftSection']['customconfigoption[bootDevice3]']['customconfigoption[bootDevice3]'] = 'Boot Gerät 3';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['bootSection']['leftSection']['customconfigoption[bootDevice3]']['tip'] = 'Wählen Sie das Gerät 3 aus um zu booten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['bootSection']['rightSection']['customconfigoption[bootDevice2]']['customconfigoption[bootDevice2]'] = 'Boot Gerät 2';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['bootSection']['rightSection']['customconfigoption[bootDevice2]']['tip'] = 'Wählen Sie das Gerät 2 aus um zu booten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['bootSection']['rightSection']['customconfigoption[bootdisk]']['customconfigoption[bootdisk]'] = 'Boot Festplatte';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['bootSection']['rightSection']['customconfigoption[bootdisk]']['tip'] = 'Geben Sie die Boot Festplatte an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['cloudInitSection'] = 'Cloud-Init';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['leftSection']['customconfigoption[cloudInit]']['customconfigoption[cloudInit]'] = 'Cloud-Init';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['leftSection']['customconfigoption[cloudInit]']['tip'] = 'Sofern aktiviert, wird Cloud-Init in einem Gastsystem beim Boot starten und für Konfigurationsdateien suchen, welche auf dem Gastsystem während der Initialisierung gespeichert werden können.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['leftSection']['customconfigoption[cloudInitServicePassword]']['customconfigoption[cloudInitServicePassword]'] = 'Service Passwort';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['leftSection']['customconfigoption[cloudInitServicePassword]']['tip'] = 'Sofern aktiviert, wird das Service Passwort verwendet.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['leftSection']['customconfigoption[searchdomain]']['customconfigoption[searchdomain]'] = 'DNS Domain';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['leftSection']['customconfigoption[searchdomain]']['tip'] = 'Geben Sie eine DNS Domain für den Container an. Während der Servererstellung wird die Einstellung vom Host automatisch verwendet wenn keine Such-Domain noch ein Nameserver gesetzt ist.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['rightSection']['customconfigoption[cloudInitServiceUsername]']['customconfigoption[cloudInitServiceUsername]'] = 'Service Benutzername';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['rightSection']['customconfigoption[cloudInitServiceUsername]']['tip'] = 'Sofern aktiviert, wird der Service Benutzername verwendet';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['rightSection']['customconfigoption[cloudInitServiceNameservers]']['customconfigoption[cloudInitServiceNameservers]'] = 'Service Nameserver';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['rightSection']['customconfigoption[cloudInitServiceNameservers]']['tip'] = 'Sofern aktiviert, wird der Service Nameserver verwendet';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['rightSection']['customconfigoption[ciuser]']['customconfigoption[ciuser]'] = 'Standard Benutzer';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['rightSection']['customconfigoption[ciuser]']['tip'] = 'Geben Sie den Benutzernamen an, um den SSH Key und das Passwort zu ändern, statt den konfigurierten Standard Benutzer des Abbilds zu verwenden';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['configurableOptionUnitsSection'] = 'Konfigurierbare Einheiten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['leftSection']['customconfigoption[memoryUnit]']['customconfigoption[memoryUnit]'] = 'RAM Einheit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['leftSection']['customconfigoption[memoryUnit]']['tip'] = 'Wählen Sie die RAM Einheit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['leftSection']['customconfigoption[additionalDiskUnit]']['customconfigoption[additionalDiskUnit]'] = 'Zusätzliche Fesplatten Einheit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['leftSection']['customconfigoption[additionalDiskUnit]']['tip'] = 'Wählen Sie die Einheit für zusätzliche Fesplatten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['rightSection']['customconfigoption[diskUnit]']['customconfigoption[diskUnit]'] = 'Festplatten Einheit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['rightSection']['customconfigoption[diskUnit]']['tip'] = 'Wählen Sie die Einheit für die Festplatte';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallSection']['firewallSection'] = 'Firewall';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallSection']['leftSection']['customconfigoption[firewallInterfaces][]']['customconfigoption[firewallInterfaces][]'] = 'Interfaces';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallSection']['leftSection']['customconfigoption[firewallInterfaces][]']['tip'] = 'Wählen Sie die Interfaces aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallSection']['leftSection']['customconfigoption[ipsetIpFilter]']['customconfigoption[ipsetIpFilter]'] = 'IPSet IP Filter';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallSection']['leftSection']['customconfigoption[ipsetIpFilter]']['tip'] = 'Sofern aktiviert, erlaubt IPSet nur die zugewiesenen IPs';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallSection']['rightSection']['customconfigoption[firewallMaxRules]']['customconfigoption[firewallMaxRules]'] = 'Firewall Regeln Limit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallSection']['rightSection']['customconfigoption[firewallMaxRules]']['tip'] = 'Geben Sie das Limit für Firewall Regeln ein';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['loadBalancerSection'] = 'Load Balancer';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['leftSection']['customconfigoption[loadBalancer]']['customconfigoption[loadBalancer]'] = 'Load Balancer aktivieren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['leftSection']['customconfigoption[loadBalancer]']['tip'] = 'Sofern aktiviert, wird der Server automatisch auf der Node mit dem niedrigsten Load erstellt';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['leftSection']['customconfigoption[loadBalancerShutdownOnUpgrade]']['customconfigoption[loadBalancerShutdownOnUpgrade]'] = 'Server bei Upgrade herunterfahren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['leftSection']['customconfigoption[loadBalancerShutdownOnUpgrade]']['tip'] = 'Sofern aktiviert, wird der Server bei einem Upgrade heruntergefahren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['rightSection']['customconfigoption[loadBalancerOnUpgrade]']['customconfigoption[loadBalancerOnUpgrade]'] = 'Aktion bei Upgrade';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['rightSection']['customconfigoption[loadBalancerOnUpgrade]']['tip'] = 'Wählen Sie die Aktion aus, welche bei einem Upgrade ausgeführt werden soll: «Nichts» - deaktiviert; «Blockieren» - der Upgrade Prozess ist blockiert, aufgrund von unzureichenden Ressourcen auf der Node; «Migrieren» - der Upgrade Prozess wird durchgeführt, nachdem der Server auf einen Server mit genügend Ressourcen migriert wurde';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['rightSection']['customconfigoption[loadBalancerStopOnUpgrade]']['customconfigoption[loadBalancerStopOnUpgrade]'] = 'Server stoppen falls Herunterfahren fehlsclägt';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['loadBalancerSection']['rightSection']['customconfigoption[loadBalancerStopOnUpgrade]']['tip'] = 'Sofern aktiviert, wird der Server gestoppt, sollte das Herunterfahren fehlschlagen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['backupSection']['backupSection'] = 'Backup';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['backupSection']['leftSection']['customconfigoption[backupStorage]']['customconfigoption[backupStorage]'] = 'Backup Speicher';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['backupSection']['leftSection']['customconfigoption[backupStorage]']['tip'] = 'Wählen Sie den Speicher für Backups aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['backupSection']['leftSection']['customconfigoption[backupStoreDays]']['customconfigoption[backupStoreDays]'] = 'Backup Speicher Periode';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['backupSection']['leftSection']['customconfigoption[backupStoreDays]']['tip'] = 'Jede Backupdatei, welche Älter als die angegebene Anzahl Tage ist, wird geölscht';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['backupSection']['rightSection']['customconfigoption[backupRouting]']['customconfigoption[backupRouting]'] = 'Backup Routing';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['backupSection']['rightSection']['customconfigoption[backupRouting]']['tip'] = 'Sofern aktiviert, werden alte Backups gelöscht, sollte das Limit erreicht sein';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['highAvailabilityClusterSection'] = 'Hochverfügbarkeitscluster';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['leftSection']['customconfigoption[clusterState]']['customconfigoption[clusterState]'] = 'Status';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['leftSection']['customconfigoption[clusterState]']['tip'] = 'Wählen Sie den Ressourcen Status, und der Cluster Ressourcen Manager wird sich entsprechend verhalten. Beachten Sie, dass «Aktiviert» nur ein Alias für «Gestartet» ist.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['leftSection']['customconfigoption[clusterMaxRestart]']['customconfigoption[clusterMaxRestart]'] = 'Maximale Anzahl an Neustarts';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['leftSection']['customconfigoption[clusterMaxRestart]']['tip'] = 'Geben Sie die maximale Anzahl an Startversuchen an, wenn der Server nicht starten konnte';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['rightSection']['customconfigoption[clusterGroup]']['customconfigoption[clusterGroup]'] = 'Gruppe';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['rightSection']['customconfigoption[clusterGroup]']['tip'] = 'Wählen Sie den HA Gruppenidentifizierer aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['rightSection']['customconfigoption[clusterMaxRelocate]']['customconfigoption[clusterMaxRelocate]'] = 'Maximale Anzahl von Migrationen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['highAvailabilityClusterSection']['rightSection']['customconfigoption[clusterMaxRelocate]']['tip'] = 'Geben Sie die maximale Anzahl an Migrationen an, wenn der Server nicht starten konnte.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['clientAreaSection'] = 'Kundenbereichfeatures';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionStart]']['customconfigoption[permissionStart]'] = 'Boot';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionStart]']['tip'] = 'Sofern aktiviert, kann der Kunde seinen Server starten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionStop]']['customconfigoption[permissionStop]'] = 'Stoppen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionStop]']['tip'] = 'Sofern aktiviert, kann der Kunde seinen Server stoppen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionNovnc]']['customconfigoption[permissionNovnc]'] = 'noVNC Konsole';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionNovnc]']['tip'] = 'Sofern aktiviert, kann der Kunde auf die VNC Konsole zugreifen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionXtermjs]']['customconfigoption[permissionXtermjs]'] = 'Xterm.js Konsole';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionXtermjs]']['tip'] = 'Sofern aktiviert, kann der Kunde auf die Xterm.js Konsole zugreifen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionOsTemplate]']['customconfigoption[permissionOsTemplate]'] = 'OS Template';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionOsTemplate]']['tip'] = 'Sofern aktiviert, kann der Kunde seinen Server mit OS Templates neu installieren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionIsoImages][]']['customconfigoption[permissionIsoImages][]'] = 'ISO Images';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionIsoImages][]']['tip'] = 'Wählen Sie die ISO Dateien aus, welche im Kundenbereich verfügbar sein sollen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionGraph]']['customconfigoption[permissionGraph]'] = 'MRTG Graifken';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionGraph]']['tip'] = 'Sofern aktiviert, sind die MRTG Grafiken im Kundenbereich verfügbar';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionBackupJob]']['customconfigoption[permissionBackupJob]'] = 'Geplante Backup Aufträge';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionBackupJob]']['tip'] = 'Sofern aktiviert, kann der Kunde geplante Backup Aufträge erstellen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionNetwork]']['customconfigoption[permissionNetwork]'] = 'Netzwerk';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionNetwork]']['tip'] = 'Sofern aktiviert, kann der Kunde private Netzwerk Interface-Geräte hinzufügen und entfernen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionFirewall]']['customconfigoption[permissionFirewall]'] = 'Firewall';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionFirewall]']['tip'] = 'Sofern aktiviert, kann der Kunde Firewall Regeln erstellen und eine Sicherheitsgruppe aktivieren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionDisk]']['customconfigoption[permissionDisk]'] = 'Festplatten Management';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionDisk]']['tip'] = 'Sofern aktiviert, kann der Kunde seine Festplatten einsehen und verfügbare hinzufügen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionReboot]']['customconfigoption[permissionReboot]'] = 'Neustarten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionReboot]']['tip'] = 'Sofern aktiviert, kann der Kunde seinen Server neustarten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionShutdown]']['customconfigoption[permissionShutdown]'] = 'Herunterfahren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionShutdown]']['tip'] = 'Sofern aktiviert, kann der Kunde seinen Server herunterfahren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionSpice]']['customconfigoption[permissionSpice]'] = 'Spice Konsole';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionSpice]']['tip'] = 'Sofern aktiviert, hat der Kunde Zugriff auf die Spice Konsole';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionReinstall]']['customconfigoption[permissionReinstall]'] = 'Neu installieren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionReinstall]']['tip'] = 'Sofern aktiviert, kann der Kunde seinen Server neu installieren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionOsTemplates][]']['customconfigoption[permissionOsTemplates][]'] = 'OS Templates';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionOsTemplates][]']['tip'] = 'Wählen Sie die OS Templates aus, welche im Kundenbereich verfügbar sein sollen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionIsoImage]']['customconfigoption[permissionIsoImage]'] = 'ISO Abbilder';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionIsoImage]']['tip'] = 'Sofern aktiviert, kann der Kunde das ISO Abbild wechseln';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionBackup]']['customconfigoption[permissionBackup]'] = 'Backup';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionBackup]']['tip'] = 'Sofern aktiviert, kann der Kunde Backups erstellen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionTaskHistory]']['customconfigoption[permissionTaskHistory]'] = 'Auftragsverlauf';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionTaskHistory]']['tip'] = 'Sofern aktiviert, kann der Kunde alle Aktionen seines Servers sehen, sowie deren Status';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionSnapshot]']['customconfigoption[permissionSnapshot]'] = 'Snapshot';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionSnapshot]']['tip'] = 'Sofern aktiviert, kann der Kunde Snapshots erstellen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionFirewallOption]']['customconfigoption[permissionFirewallOption]'] = 'Firewall Optionen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionFirewallOption]']['tip'] = 'Sofern aktiviert, hat der Kunde Zugriff auf die Firewall Optionen';
-$_LANG['serverAA']['product']['mainContainer']['optionsWidget']['optionsWidgetTitle'] ='Konfigurierbare Optionen';
-$_LANG['serverAA']['product']['mainContainer']['optionsWidget']['addOptionsButton']['button']['addOptionButtonsTitle']='Konfigurierbare Optionen erstellen';
-$_LANG['serverAA']['configOptions']['addOptionsModal']['modal']['addOptionsModalTitle'] = 'Konfigurierbare Optionen erstellen';
-$_LANG['serverAA']['configOptions']['addOptionsModal']['addOptionsForm']['configurableOptionsNameInfo'] = 'Hier können Sie auswählen, welche konfigurierbaren Optionen für dieses Produkt generiert werden sollen. Bitte beachten Sie, dass diese Optionen in zwei Teile getrennt werden, separiert mit einem | Symbol. Der Teil links davon, ist die Variable welche gesendet wird. Der Teil rechts, zeigt den Namen an, welcher dem Kunden angezeigt wird. Nach dem Generieren dieser Optionen können Sie den rechten Teil bearbeiten, aber nicht den Teil links. Mehr Informationen zu den konfigurierbaren Optionen und die Bearbeitung dessen, finden Sie unter: :configurableOptionsNameUrl:.';
-$_LANG['serverAA']['configOptions']['addOptionsModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverAA']['configOptions']['addOptionsModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['configurableOptionsCreated'] = 'Die konfigurierbaren Optionen wurden erfolgreich erstellt';
-$_LANG['configurableOptionsUpdated'] = 'Die konfigurierbaren Optionen wurden erfolgreich bearbeitet';
-$_LANG['serverAA']['configOptions']['virtualizationChangeModal']['modal']['virtualizationChangeModal'] = 'Virtualisierung bearbeiten';
-$_LANG['serverAA']['configOptions']['virtualizationChangeModal']['virtualizationChangeForm']['confirmVirtualizationChange'] = 'Die aktuelle Konfiguration wird gelöscht, möchten Sie wirklich die Virtualisierung ändern?';
-$_LANG['serverAA']['configOptions']['virtualizationChangeModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverAA']['configOptions']['virtualizationChangeModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverAA']['configOptions']['AMD64'] = 'AMD64';
-$_LANG['serverAA']['configOptions']['i386'] = 'I386';
-$_LANG['serverAA']['configOptions']['shell'] = 'Shell';
-$_LANG['serverAA']['configOptions']['console'] = 'Konsole';
-$_LANG['serverAA']['configOptions']['tty'] = 'TTY';
-$_LANG['serverAA']['configOptions']['Debian'] = 'Debian';
-$_LANG['serverAA']['configOptions']['centos'] = 'CentOS';
-$_LANG['serverAA']['configOptions']['Archlinux'] = 'Arch Linux';
-$_LANG['serverAA']['configOptions']['Centos 6 Default 20161207 Amd64'] = 'CentOS 6 Default 20161207 Amd64';
-$_LANG['serverAA']['configOptions']['Centos 7 Default 20171212 Amd64'] = 'CentOS 7 Default 20171212 Amd64';
-$_LANG['serverAA']['configOptions']['Default'] = 'Standard';
-$_LANG['serverAA']['configOptions']['On'] = 'An';
-$_LANG['serverAA']['configOptions']['Off'] = 'Aus';
-$_LANG['serverAA']['configOptions']['Static'] = 'Statisch';
-$_LANG['serverAA']['configOptions']['DHCP'] = 'DHCP';
-$_LANG['serverAA']['configOptions']['SLAAC'] = 'SLAAC';
-
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['lxcConfigurationSection'] = 'LXC Konfiguration';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[cmode]']['customconfigoption[cmode]'] = 'Konsole Modus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[cmode]']['tip'] = 'Wählen Sie den Konsolenmodus aus. Standardmässig versucht der Konsolenbefehl eine Verbindung mit einem verfügbaren TTY Gerät aufzubauen. Durch Verändern des Konsolenmodus zu «Konsole», versucht es zu /dev/console sich zu verbinden. Setzen Sie den Modus auf «Shell», ruft es Shell in einem Container auf (kein Login).';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[tty]']['customconfigoption[tty]'] = 'Anzahl an TTY für den Server';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[tty]']['tip'] = 'Geben Sie die Anzahl an TTY Geräten für den Server an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[sshKeyPairs]']['customconfigoption[sshKeyPairs]'] = 'SSH Key Paar';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[sshKeyPairs]']['tip'] = 'SSH Key Paar ein-/ausschalten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[arch]']['customconfigoption[arch]'] = 'OS Architektur';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[arch]']['tip'] = 'Wählen Sie den OS Architekturtyp aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[console]']['customconfigoption[console]'] = 'Konsole';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[console]']['tip'] = 'Sofern aktiviert, wird ein Konsolengerät (dev/console) zum Container verbunden';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[protection]']['customconfigoption[protection]'] = 'Schutz';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[protection]']['tip'] = 'Sofern aktiviert, wird die Schutz-Flag vom Container gesetzt, um Änderungen oder das Entfernen der Festplatte zu verhindern.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[startup]']['customconfigoption[startup]'] = 'Aufstarten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[startup]']['tip'] = '[[order=]\d+] [,up=\d+] [,down=\d+] Definieren Sie das Start und Stop Verhalten. Order ist eine nicht-negative Zahl, welche die Start-Reihenfolge definiert. Das Herunterfahren wird in umgekehrter Reihenfolge durchgeführt. Zusätzlich können Sie die \'up\’ oder \'down\' Verzögerung in Sekunden angeben, welche eine Verzögerung angibt, bevor der nächste Server gestartet oder gestoppt wird.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[unprivileged]']['customconfigoption[unprivileged]'] = 'Unberechtigt';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[unprivileged]']['tip'] = 'Sofern aktiviert, wird der Container mit einem unberechtigten Benutzer laufen (Sollte nicht manuell angepasst werden)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[sshDeletePrivateKey]']['customconfigoption[sshDeletePrivateKey]'] = 'Private Key löschen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[sshDeletePrivateKey]']['tip'] = 'Sofern aktiviert, wird der Private Key nach dem herunterladen gelöscht';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[ostype]']['customconfigoption[ostype]'] = 'OS Typ';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[ostype]']['tip'] = 'Wählen Sie den Standardtyp für das OS aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[pool]']['customconfigoption[pool]'] = 'Pool';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[pool]']['tip'] = 'Wählen Sie aus, zu welchem Pool der Server hinzugefügt werden soll';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[description]']['customconfigoption[description]'] = 'Container Notizen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[description]']['tip'] = 'Geben Sie hier Notizen ein, welche im Webinterface angezeigt werden sollen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[start]']['customconfigoption[start]'] = 'Server nach Erstellung starten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['leftSection']['customconfigoption[start]']['tip'] = 'Sofern aktiviert, wird der Server nach der Erstellung gestartet';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[onboot]']['customconfigoption[onboot]'] = 'Bei einschalten starten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[onboot]']['tip'] = 'Sofern aktiviert, wird der Server beim einschalten aufgestartet';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[description]']['customconfigoption[description]'] = 'Container Notizen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[description]']['tip'] = 'Geben Sie hier Notizen für den Container ein';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[storage]']['customconfigoption[storage]'] = 'Standard Speicher';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[storage]']['tip'] = 'Geben Sie den Standardspeicher für die Root Festplatte an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[diskSize]']['customconfigoption[diskSize]'] = 'Speicherplatz für den Server [GB]';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['leftSection']['customconfigoption[diskSize]']['tip'] = 'Geben Sie den standardmässigen Speicherplatz des Servers an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[swap]']['customconfigoption[swap]'] = 'SWAP für Server [MB]';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[swap]']['tip'] = 'Geben Sie die Anzahl an SWAP Dateien für den Server an';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[randomHostname]']['customconfigoption[randomHostname]'] = 'Zufällige(r) Domain/Hostname';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[randomHostname]']['tip'] = 'Zufällige(r) Domain/Hostname ein-/ausschalten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['mountPointSection'] = 'Mount Punkt';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['leftSection']['customconfigoption[mountPointStorage]']['customconfigoption[mountPointStorage]'] = 'Mount Punkt Speicher';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['leftSection']['customconfigoption[mountPointStorage]']['tip'] = 'Wählen Sie den Speicher für Mount Punkte aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['leftSection']['customconfigoption[mountPointRo]']['customconfigoption[mountPointRo]'] = 'Read-Only';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['leftSection']['customconfigoption[mountPointRo]']['tip'] = 'Read-Only Format ein-/ausschalten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['leftSection']['customconfigoption[mountPointReplicate]']['customconfigoption[mountPointReplicate]'] = 'Replizierung überspringen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['leftSection']['customconfigoption[mountPointReplicate]']['tip'] = 'Sofern aktiviert, wird die Replizierung übersprungen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['rightSection']['customconfigoption[mountPointAcl]']['customconfigoption[mountPointAcl]'] = 'ACLs';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['rightSection']['customconfigoption[mountPointAcl]']['tip'] = 'Wählen Sie den Status von ACLs';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['rightSection']['customconfigoption[mountPointQuota]']['customconfigoption[mountPointQuota]'] = 'Kontingent';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['rightSection']['customconfigoption[mountPointQuota]']['tip'] = 'Kontingent ein-/ausschalten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['rightSection']['customconfigoption[permissionMountPointBackup]']['customconfigoption[permissionMountPointBackup]'] = 'Backups auf Mount Punkten erlauben';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['rightSection']['customconfigoption[permissionMountPointBackup]']['tip'] = 'Sofern aktiviert, können Backups auf Mount Punkten erstellt werden';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[ipv4NetworkMode]']['customconfigoption[ipv4NetworkMode]'] = 'IPv4 Netzwerkmodus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[ipv4NetworkMode]']['tip'] = 'Wählen Sie den Netzwerkmodus für IPv4 aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[bridge]']['customconfigoption[bridge]'] = 'Bridge';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[bridge]']['tip'] = 'Wählen Sie die public Bridge aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[networkFirewall]']['customconfigoption[networkFirewall]'] = 'Firewall';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[networkFirewall]']['tip'] = 'Die Firewall für ein Netzwerkgerät ein-/ausschalten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['rightSection']['customconfigoption[ipv6NetworkMode]']['customconfigoption[ipv6NetworkMode]'] = 'IPv6 Netzwerkmodus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['rightSection']['customconfigoption[ipv6NetworkMode]']['tip'] = 'Wählen Sie den Netzwerkmodus für IPv6 aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['leftSection']['customconfigoption[swapUnit]']['customconfigoption[swapUnit]'] = 'SWAP Einheit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['leftSection']['customconfigoption[swapUnit]']['tip'] = 'Wählen Sie die Einheit für den SWAP aus';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['leftSection']['customconfigoption[diskUnit]']['customconfigoption[diskUnit]'] = 'Fesplatten Einheit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['leftSection']['customconfigoption[diskUnit]']['tip'] = 'Wählen Sie die Einheit für die Festplatte';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['rightSection']['customconfigoption[memoryUnit]']['customconfigoption[memoryUnit]'] = 'RAM Einheit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['rightSection']['customconfigoption[memoryUnit]']['tip'] = 'Wählen Sie die Einheit für den RAM';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['rightSection']['customconfigoption[additionalDiskUnit]']['customconfigoption[additionalDiskUnit]'] = 'Zusätzliche Festplatten Einheit';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurableOptionUnitsSection']['rightSection']['customconfigoption[additionalDiskUnit]']['tip'] = 'Wählen Sie die Einheit für zusätzliche Festplatten';
-$_LANG['serverAA']['adminServicesTabFields']['Hour'] = 'Stunde';
-$_LANG['serverAA']['adminServicesTabFields']['Day'] = 'Tag';
-$_LANG['serverAA']['adminServicesTabFields']['Week'] = 'Woche';
-$_LANG['serverAA']['adminServicesTabFields']['Month'] = 'Montag';
-$_LANG['serverAA']['adminServicesTabFields']['CPU Usage'] = 'CPU Auslastung';
-$_LANG['serverAA']['adminServicesTabFields']['Bytes/s'] = 'Byte/s';
-$_LANG['serverCA']['home']['serviceActions'] = 'Aktionen';
-$_LANG['buttons']['actions']['startButton'] = 'Start';
-$_LANG['serverCA']['iconTitle']['startButton'] = 'Start';
-$_LANG['buttons']['actions']['rebootButton'] = 'Neustart';
-$_LANG['serverCA']['iconTitle']['rebootButton'] = 'Neustart';
-$_LANG['buttons']['actions']['stopButton'] = 'Stop';
-$_LANG['serverCA']['iconTitle']['stopButton'] = 'Stop';
-$_LANG['buttons']['actions']['shutdownButton'] = 'Herunterfahren';
-$_LANG['serverCA']['iconTitle']['shutdownButton'] = 'Herunterfahren';
-$_LANG['buttons']['actions']['novnc'] = 'noVNC Konsole';
-$_LANG['serverCA']['iconTitle']['novnc'] = 'noVNC Konsole';
-$_LANG['buttons']['actions']['spice'] = 'Spice Jonsole';
-$_LANG['serverCA']['iconTitle']['spice'] = 'Spice Jonsole';
-$_LANG['buttons']['actions']['xtermjs'] = 'Xterm.js Jonsole';
-$_LANG['serverCA']['iconTitle']['xtermjs'] = 'Xterm.js Jonsole';
-$_LANG['buttons']['actions']['migrateButton'] = 'Migrieren';
-$_LANG['serverCA']['iconTitle']['migrateButton'] = 'Migrieren';
-$_LANG['serviceInformationDataTable'] = 'Information';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['updateeButton']['button']['baseModalDataTableActionButton'] = 'Bearbeiten';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Status'] = 'Status';
-$_LANG['serverAA']['adminServicesTabFields']['stopped']= 'Gestoppt';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Node'] = 'Node';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Hostname'] = 'Hostname';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Uptime'] = 'Betriebszeit';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['CPU Usage'] = 'CPU Auslastung';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['of'] = 'von';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Cores'] = 'Kerne';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['CPU Units'] = 'CPU Einheiten';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Memory'] = 'RAM';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Dedicated'] = 'Dediziert';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Burst'] = 'Burst';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Usage'] = 'Auslastung';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['SWAP'] = 'SWAP';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Boot Disk'] = 'Boot Festplatte';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Backups Files Limit'] = 'Backup Datei Limit';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Network Rate'] = 'Netzwerkgeschwindigkeit';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Unlimited'] = 'Unlimitiert';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['IP Adresses'] = 'IP Adressen';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['VLAN Tag'] = 'VLAN Tag';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['CD/DVD Disc Image File'] = 'CD/DVD Disc Abbild';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Boot Order'] = 'Boot Reihenfolge';
-$_LANG['serverAA']['adminServicesTabFields']['bootOrder']['c'] ='Festplatte';
-$_LANG['serverAA']['adminServicesTabFields']['bootOrder']['d'] ='CD-ROM';
-$_LANG['serverAA']['adminServicesTabFields']['bootOrder']['n'] ='Netzwerk';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['SSH Public Key'] = 'SSH Public Key';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['SSH Private Key'] = 'SSH Private Key';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['OS Info'] = 'OS Info';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Quemu Agent'] = 'QEMU Agent';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Kernel Release'] = 'Kernel Release';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['ipAddressDataTable'] = 'IP Adressen';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['createButton']['button']['createButton'] = 'IP Adresse hinzufügen';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['ip'] = 'IP Adresse';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['mac_address'] = 'MAC Adresse';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['subnet_mask'] = 'Subnetzmaske';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['gateway'] = 'Gateway';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['deleteButton']['button']['deleteButton'] = 'Löschen';
-$_LANG['serverAA']['adminServicesTabFields']['running']='Läuft';
-$_LANG['serverAA']['adminServicesTabFields']['startModal']['modal']['startModal'] = 'Server starten';
-$_LANG['serverAA']['adminServicesTabFields']['startModal']['startForm']['conforimStart'] = 'Möchten Sie den Server wirklich starten?';
-$_LANG['serverAA']['adminServicesTabFields']['startModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverAA']['adminServicesTabFields']['startModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverAA']['adminServicesTabFields']['rebootModal']['modal']['rebootModal'] = 'Server neustarten';
-$_LANG['serverAA']['adminServicesTabFields']['rebootModal']['rebootForm']['conforimReboot'] = 'Möchten Sie den Server wirklich neustarten?';
-$_LANG['serverAA']['adminServicesTabFields']['rebootModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverAA']['adminServicesTabFields']['rebootModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverAA']['adminServicesTabFields']['stopModal']['modal']['stopModal'] = 'Server stoppen';
-$_LANG['serverAA']['adminServicesTabFields']['stopModal']['stopForm']['conforimStop']  = 'Möchten Sie diesen Server wirklich stoppen?';
-$_LANG['serverAA']['adminServicesTabFields']['stopModal']['baseAcceptButton']['title']  = 'Bestätigen';
-$_LANG['serverAA']['adminServicesTabFields']['stopModal']['baseCancelButton']['title']  = 'Abbrechen';
-$_LANG['serverAA']['adminServicesTabFields']['shutdownModal']['modal']['shutdownModal'] = 'Server herunterfahren';
-$_LANG['serverAA']['adminServicesTabFields']['shutdownModal']['shutdownForm']['conforimShutdown'] = 'Möchten Sie den Server wirklich herunterfahren?';
-$_LANG['serverAA']['adminServicesTabFields']['shutdownModal']['baseAcceptButton']['title']  = 'Bestätigen';
-$_LANG['serverAA']['adminServicesTabFields']['shutdownModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverAA']['adminServicesTabFields']['migrateModal']['modal']['migrateModal'] = 'Server migrieren';
-$_LANG['serverAA']['adminServicesTabFields']['migrateModal']['migrateForm']['confirmMigrate'] = 'Möchten Sie den Server wirklich migrieren?';
-$_LANG['serverAA']['adminServicesTabFields']['migrateModal']['migrateForm']['target']['target'] = 'Ziel Node';
-$_LANG['serverAA']['adminServicesTabFields']['migrateModal']['migrateForm']['online']['online'] = 'Online';
-$_LANG['serverAA']['adminServicesTabFields']['migrateModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverAA']['adminServicesTabFields']['migrateModal']['baseCancelButton']['title']  = 'Abbrechen';
-$_LANG['Starting migration of VM :vmid: to :node:']='Migration des Servers :vmid: auf die Node :node: wird gestartet';
-$_LANG['serverAA']['adminServicesTabFields']['None'] = 'Nichts';
-$_LANG['serverAA']['adminServicesTabFields']['Disk'] = 'Festplatte';
-$_LANG['serverAA']['adminServicesTabFields']['CD-ROM'] = 'CD-ROM';
-$_LANG['serverAA']['adminServicesTabFields']['Network'] = 'Netzwerk';
-$_LANG['serverAA']['adminServicesTabFields']['updateModal']['modal']['updateModal'] = 'Server bearbeiten';
-$_LANG['serverAA']['adminServicesTabFields']['updateModal']['updateForm']['hostname']['hostname'] = 'Hostname';
-$_LANG['serverAA']['adminServicesTabFields']['updateModal']['updateForm']['iso']['iso'] = 'ISO Abbild';
-$_LANG['serverAA']['adminServicesTabFields']['updateModal']['updateForm']['bootOrder0']['bootOrder0'] = 'Boot Gerät 1';
-$_LANG['serverAA']['adminServicesTabFields']['updateModal']['updateForm']['bootOrder1']['bootOrder1'] = 'Boot Gerät 2';
-$_LANG['serverAA']['adminServicesTabFields']['updateModal']['updateForm']['bootOrder2']['bootOrder2'] = 'Boot Gerät 3';
-$_LANG['serverAA']['adminServicesTabFields']['updateModal']['updateForm']['sshkeys']['sshkeys'] = 'SSH Public Key';
-$_LANG['serverAA']['adminServicesTabFields']['updateModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverAA']['adminServicesTabFields']['updateModal']['baseCancelButton']['title']  = 'Abbrechen';
-$_LANG['Service information has been changed'] = 'Die Service Information wurde erfolgreich aktualisiert';
-$_LANG['serverAA']['adminServicesTabFields']['createModal']['modal']['createModal'] = 'Neue IP Adresse hinzufügen';
-$_LANG['serverAA']['adminServicesTabFields']['createModal']['createForm']['ip']['ip'] = 'IP Adresse';
-$_LANG['serverAA']['adminServicesTabFields']['createModal']['createForm']['mac_address']['mac_address'] = 'MAC Adresse';
-$_LANG['serverAA']['adminServicesTabFields']['createModal']['createForm']['subnet_mask']['subnet_mask'] = 'Subnetzmaske';
-$_LANG['serverAA']['adminServicesTabFields']['createModal']['createForm']['gateway']['gateway'] = 'Gateway';
-$_LANG['serverAA']['adminServicesTabFields']['createModal']['baseAcceptButton']['title'] = 'Änderungen speichern';
-$_LANG['serverAA']['adminServicesTabFields']['createModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverAA']['adminServicesTabFields']['deleteModal']['modal']['deleteModal'] = 'IP Adresse löschen';
-$_LANG['serverAA']['adminServicesTabFields']['deleteModal']['deleteForm']['conforimDelete'] = 'Möchten Sie die IP :ip: wirklich löschen?';
-$_LANG['serverAA']['adminServicesTabFields']['deleteModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverAA']['adminServicesTabFields']['deleteModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['ipSetDataTable'] = 'IPSet';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['name'] = 'IPSet';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['comment'] = 'Kommentar';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['ipCidr'] = 'IP/CIDR';
-$_LANG['serverAA']['home']['mainContainer']['reinstallTab']['reinstallTab'] = 'Neu installieren';
-$_LANG['serverAA']['home']['mainContainer']['reinstallTab']['templatDataTable'] = 'OS Templates';
-$_LANG['serverAA']['home']['mainContainer']['reinstallTab']['isoDataTable'] = 'ISO Abbilder';
-$_LANG['serverAA']['home']['mainContainer']['reinstallTab']['dataTable']['Select the template for reinstallation. If you proceed, all data located on the virtual machine will be lost.'] = 'Wählen Sie das Template für die Neuinstallation. Mit dem fortfahren gehen alle Daten auf dem Server verloren.';
-$_LANG['serverAA']['home']['mainContainer']['reinstallTab']['dataTable']['templateInstallButton']['button']['templateInstallButton'] = 'Neu installieren';
-$_LANG['serverAA']['home']['mainContainer']['reinstallTab']['dataTable']['table']['name'] =  'OS Template';
-$_LANG['serverAA']['home']['mainContainer']['reinstallTab']['dataTable']['isoInstallButton']['button']['isoInstallButton'] = 'ISO Abbild installieren';
-$_LANG['serverAA']['adminServicesTabFields']['templateInstallModal']['modal']['templateInstallModal'] = 'Server neu installieren';
-$_LANG['serverAA']['adminServicesTabFields']['templateInstallModal']['templateInstallForm']['confirmReinstall'] = 'Möchten Sie den Server wirklich neu installieren?';
-$_LANG['serverAA']['adminServicesTabFields']['templateInstallModal']['templateInstallForm']['password']['password'] = 'Passwort';
-$_LANG['serverAA']['adminServicesTabFields']['templateInstallModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverAA']['adminServicesTabFields']['templateInstallModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverAA']['adminServicesTabFields']['isoInstallModal']['modal']['isoInstallModal'] = 'ISO Abbild installieren';
-$_LANG['serverAA']['adminServicesTabFields']['isoInstallModal']['isoInstallForm']['confirmReinstall'] = 'Möchten Sie wirklich das ISO Abbild installieren? Mit dem fortfahren gehen alle Daten auf dem Server verloren.';
-$_LANG['serverAA']['adminServicesTabFields']['isoInstallModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverAA']['adminServicesTabFields']['isoInstallModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverAA']['home']['mainContainer']['cpuGraph']['title'] = 'CPU Auslastung %';
-$_LANG['serverAA']['home']['button']['settingButton'] = 'Einstellung';
-$_LANG['serverAA']['home']['mainContainer']['memoryGraph']['title'] = 'RAM Auslastung';
-$_LANG['serverAA']['adminServicesTabFields']['settingModal']['baseCancelButton']['title'] = 'Schliessen';
-$_LANG['serverAA']['adminServicesTabFields']['Memory Usage'] ='RAM Auslasstung';
-$_LANG['serverAA']['adminServicesTabFields']['Total'] ='Total';
-$_LANG['serverAA']['home']['mainContainer']['networkGraph']['title'] = 'Netzwerk Traffic';
-$_LANG['serverAA']['adminServicesTabFields']['Net In'] ='Net In';
-$_LANG['serverAA']['adminServicesTabFields']['Net Out'] ='Net Out';
-$_LANG['serverAA']['home']['mainContainer']['diskkGraph']['title'] = 'Disk IO';
-$_LANG['serverAA']['adminServicesTabFields']['Disk Read'] ='Festplatte lesen';
-$_LANG['serverAA']['adminServicesTabFields']['Disk Write'] ='Fesplatte schreiben';
-$_LANG['serverAA']['adminServicesTabFields']['settingModal']['modal']['settingModal'] = 'Einstellung';
-$_LANG['serverAA']['adminServicesTabFields']['settingModal']['settingForm']['timeframe']['timeframe'] = 'Zeitfenster';
-$_LANG['serverAA']['adminServicesTabFields']['settingModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['userDataTable'] = 'Benutzerdetails';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['username'] = 'Benutzername';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['realm'] = 'Realm';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['password'] = 'Passwort';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['enable'] = 'Aktivieren';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['expire'] = 'Ablauf';
-$_LANG['serverAA']['adminServicesTabFields']['Yes']='Ja';
-$_LANG['serverAA']['adminServicesTabFields']['No']='Nein';
-$_LANG['serverAA']['adminServicesTabFields']['Never']='Nie';
-$_LANG['serverAA']['adminServicesTabFields']['templateInstallModal']['templateInstallForm']['password']['tip'] = 'Geben Sie das Serverpasswort hier ein';
-/* * ********************************************************************************************************************
- *                                                    Templates                                                      *
- * ******************************************************************************************************************** */
-$_LANG['template']['Ubuntu'] = 'Ubuntu';
-$_LANG['template']['None'] = ' Nichts';
-$_LANG['template']['CentOS 7 X86 64 Minimal 1810'] = 'CentOS 7 X86 64 Minimal 1810';
-$_LANG['template']['Debian Live 9.4.0 Amd64 Cinnamon'] = 'Debian Live 9.4.0 Amd64 Cinnamon';
-$_LANG['template']['Centos 7 Default 20171212 Amd64'] = 'CentOS 7 Default 20171212 Amd64';
-$_LANG['template']['Debian 9.0 Standard 9.7 1 Amd64'] = 'Debian 9.0 Standard 9.7 1 Amd64';
-/* * ********************************************************************************************************************
- *                                                    CLIENT AREA                                                      *
- * ******************************************************************************************************************** */
-$_LANG['addonCA']['home']['Status'] ='Status';
-$_LANG['addonCA']['home']['table']['running']='Online';
-$_LANG['addonCA']['taskHistory']['infoModal']['infoForm']['error: :status:'] ='Fehler: :status:';
-$_LANG['OS Template require disk size :size:']='Dieses Template braucht :size: Speicher';
-$_LANG['The IP Address has been deleted successfully'] = 'Die IP Adresse wurde erfolgreich entfernt';
-$_LANG['The IP Address has been added successfully'] = 'Die IP Adresse wurde erfolgreich hinzugefügt';
-$_LANG['The container has been shut down successfully']='Der Container wurde erfolgreich heruntergefahren';
-$_LANG['The container has been stopped successfully']='Der Container wurde erfolgreich gestoppt';
-$_LANG['The container has been rebooted successfully']='Der Container wurde erfolgreich neugestartet';
-$_LANG['The container has been booted successfully'] = 'Der Container wurde erfolgreich gestartet';
-$_LANG['FormValidators']['The password is too short']='Dieses Passwort ist zu kurz';
-$_LANG['managementProxmoxVps'] = ' Weitere Tools';
-$_LANG['reinstall'] = 'Neu installieren';
-$_LANG['backup'] = 'Backups';
-$_LANG['backupJob'] = 'Backup Aufträge';
-$_LANG['graph'] = 'Statistiken';
-$_LANG['taskHistory'] = 'Auftragsverlauf';
-$_LANG['network'] = 'Netzwerk';
-$_LANG['snapshot'] = 'Snapshots';
-$_LANG['firewall'] = 'Firewall';
-$_LANG['firewallOption'] = 'Firewall Einstellungen';
-$_LANG['disk'] = 'Disks';
-$_LANG['addonCA']['breadcrumbs']['MG Demo'] = 'Proxmox VPS';
-$_LANG['serverCA']['home']['serviceManagement'] = 'Weitere Tools';
-$_LANG['serverCA']['home']['mainContainer']['serviceManagement']['button']['reinstall'] = 'Neu installieren';
-$_LANG['serverCA']['home']['mainContainer']['serviceManagement']['button']['backup'] = 'Backups';
-$_LANG['serverCA']['home']['mainContainer']['serviceManagement']['button']['backupJob'] = 'Backup Aufträge';
-$_LANG['serverCA']['home']['mainContainer']['serviceManagement']['button']['graph'] = 'Statistiken';
-$_LANG['serverCA']['home']['mainContainer']['serviceManagement']['button']['taskHistory'] = 'Auftragsverlauf';
-$_LANG['serverCA']['home']['mainContainer']['serviceManagement']['button']['network'] = 'Netzwerk';
-$_LANG['serverCA']['home']['mainContainer']['serviceManagement']['button']['snapshot'] = 'Snapshots';
-$_LANG['serverCA']['home']['mainContainer']['serviceManagement']['button']['firewall'] = 'Firewall';
-$_LANG['serverCA']['home']['mainContainer']['serviceManagement']['button']['firewallOption'] = 'Firewall Einstellungen';
-$_LANG['serverCA']['home']['mainContainer']['serviceManagement']['button']['disk'] = 'Disks';
-$_LANG['serverCA']['iconTitle']['reinstall'] = 'Neu installieren';
-$_LANG['serverCA']['iconTitle']['backup'] = 'Backup';
-$_LANG['serverCA']['iconTitle']['backupJob'] = 'Backup Aufträge';
-$_LANG['serverCA']['backupJob']['The maximum number of backup files has been exceeded. Please remove the old backup files.'] = 'Das Maximum an Backup Dateien wurde erreicht. Bitte löschen Sie alte Backups.';
-$_LANG['serverCA']['iconTitle']['graph'] = 'Statistiken';
-$_LANG['serverCA']['iconTitle']['taskHistory'] = 'Auftragsverlauf';
-$_LANG['serverCA']['iconTitle']['network'] = 'Netzwerk';
-$_LANG['serverCA']['iconTitle']['snapshot'] = 'Snapshots';
-$_LANG['serverCA']['iconTitle']['firewall'] = 'Firewall';
-$_LANG['serverCA']['iconTitle']['firewallOption'] = 'Firewall Einstellungen';
-$_LANG['serverCA']['iconTitle']['disk'] = 'Disks';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['updateeButton']['button']['baseModalDataTableActionButton'] = 'Server bearbeiten';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Status'] = 'Status';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Node'] = 'Node';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Hostname'] = 'Hostname';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Uptime'] = 'Laufzeit';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['CPU Usage'] = 'CPU Auslastung';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['of'] = 'von';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Cores'] = 'Kerne';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['CPU Units'] = 'CPU Einheiten';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Memory'] = 'RAM';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Dedicated'] = 'Dediziert';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Burst'] = 'Burst';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Usage'] = 'Auslastung';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['SWAP'] = 'SWAP';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Boot Disk'] = 'Boot Disk';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Backups Files Limit'] = 'Backups Limit';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Network Rate'] = 'Geschwindigkeit';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Unlimited'] = 'Unlimitiert';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['IP Adresses'] = 'IP Adressen';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['VLAN Tag'] = 'VLAN Tag';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['CD/DVD Disc Image File'] = 'CD/DVD Disc Image Datei';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Boot Order'] = 'Boot Reihenfolge';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['SSH Public Key'] = 'SSH Public Key';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['SSH Private Key'] = 'SSH Private Key';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['OS Info'] = 'OS Info';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Quemu Agent'] = 'QEMU Agent';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Kernel Release'] = 'Kernel Release';
-$_LANG['serverCA']['home']['mainContainer']['dataTable']['ipAddressDataTable'] = 'IP Adressen';
-$_LANG['serverCA']['home']['mainContainer']['dataTable']['table']['ip'] = 'IP Adresse';
-$_LANG['serverCA']['home']['mainContainer']['dataTable']['table']['mac_address'] = 'MAC Adresse';
-$_LANG['serverCA']['home']['mainContainer']['dataTable']['table']['subnet_mask'] = 'Subnetzmaske';
-$_LANG['serverCA']['home']['mainContainer']['dataTable']['table']['gateway'] = 'Gateway';
-$_LANG['serverCA']['home']['stopped']='Gestoppt';
-$_LANG['serverCA']['home']['bootOrder']['c'] ='Festplatte';
-$_LANG['serverCA']['home']['bootOrder']['d'] ='CD-ROM';
-$_LANG['serverCA']['home']['bootOrder']['n'] ='Netzwerk';
-$_LANG['serverCA']['home']['startModal']['modal']['startModal'] = 'Server starten';
-$_LANG['serverCA']['home']['startModal']['startForm']['conforimStart'] = 'Möchten Sie den Server wirklich starten?';
-$_LANG['serverCA']['home']['startModal']['baseAcceptButton']['title']  = 'Bestätigen';
-$_LANG['serverCA']['home']['startModal']['baseCancelButton']['title']  = 'Abbrechen';
-$_LANG['serverCA']['home']['rebootModal']['modal']['rebootModal']  = 'Server neustarten';
-$_LANG['serverCA']['home']['rebootModal']['rebootForm']['conforimReboot'] = 'Möchten Sie den Server wirklich neustarten?';
-$_LANG['serverCA']['home']['rebootModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['home']['rebootModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverCA']['home']['stopModal']['modal']['stopModal'] = 'Server stoppen';
-$_LANG['serverCA']['home']['stopModal']['stopForm']['conforimStop'] = 'Möchten Sie den Server wirklich stoppen?';
-$_LANG['serverCA']['home']['stopModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['home']['stopModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverCA']['home']['shutdownModal']['modal']['shutdownModal'] = 'Server herunterfahren';
-$_LANG['serverCA']['home']['shutdownModal']['shutdownForm']['conforimShutdown'] = 'Möchten Sie den Server wirklich herunterfahren?';
-$_LANG['serverCA']['home']['shutdownModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['home']['shutdownModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverCA']['home']['None'] = 'None';
-$_LANG['serverCA']['home']['CentOS 7 X86 64 Minimal 1810'] = 'CentOS 7 X86 64 Minimal 1810';
-$_LANG['serverCA']['home']['Debian Live 9.4.0 Amd64 Cinnamon'] = 'Debian Live 9.4.0 Amd64 Cinnamon';
-$_LANG['serverCA']['home']['Disk'] = 'Festplatte';
-$_LANG['serverCA']['home']['CD-ROM'] = 'CD-ROM';
-$_LANG['serverCA']['home']['Network'] = 'Netzwerk';
-$_LANG['serverCA']['home']['updateModal']['modal']['updateModal'] = 'Server bearbeiten';
-$_LANG['serverCA']['home']['updateModal']['updateForm']['hostname']['hostname'] = 'Hostname';
-$_LANG['serverCA']['home']['updateModal']['updateForm']['iso']['iso'] = 'ISO Datei';
-$_LANG['serverCA']['home']['updateModal']['updateForm']['bootOrder0']['bootOrder0'] = 'Boot Gerät 1';
-$_LANG['serverCA']['home']['updateModal']['updateForm']['bootOrder1']['bootOrder1'] = 'Boot Gerät 2';
-$_LANG['serverCA']['home']['updateModal']['updateForm']['bootOrder2']['bootOrder2'] = 'Boot Gerät 3';
-$_LANG['serverCA']['home']['updateModal']['updateForm']['sshkeys']['sshkeys'] = 'SSH Public Key';
-$_LANG['serverCA']['home']['updateModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['home']['updateModal']['baseCancelButton']['title']  = 'Abbrechen';
-$_LANG['serverCA']['reinstall']['mainContainer']['reinstallTab']['reinstallTab'] = 'Neu installieren';
-$_LANG['serverCA']['reinstall']['mainContainer']['reinstallTab']['templatDataTable'] = 'OS Templates';
-$_LANG['serverCA']['reinstall']['mainContainer']['reinstallTab']['isoDataTable'] = 'ISO Dateien';
-$_LANG['serverCA']['reinstall']['mainContainer']['reinstallTab']['dataTable']['Select the template for reinstallation. If you proceed, all data located on the virtual machine will be lost.'] = 'Wählen Sie das Template für die Neuinstallation. Mit dem fortfahren gehen alle Daten auf dem Server verloren.';
-$_LANG['serverCA']['reinstall']['mainContainer']['reinstallTab']['dataTable']['templateInstallButton']['button']['templateInstallButton'] = 'Neu installieren';
-$_LANG['serverCA']['reinstall']['mainContainer']['reinstallTab']['dataTable']['table']['name'] =  'OS Template';
-$_LANG['serverCA']['reinstall']['templateInstallModal']['modal']['templateInstallModal'] = 'Server neu installieren';
-$_LANG['serverCA']['reinstall']['templateInstallModal']['templateInstallForm']['confirmReinstall'] = 'Möchten Sie den Server wirklich neu installieren?';
-$_LANG['serverCA']['reinstall']['templateInstallModal']['templateInstallForm']['password']['password'] = 'Passwort';
-$_LANG['serverCA']['reinstall']['templateInstallModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['reinstall']['templateInstallModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverCA']['reinstall']['isoInstallModal']['modal']['isoInstallModal'] = 'ISO Datei installieren';
-$_LANG['serverCA']['reinstall']['isoInstallModal']['isoInstallForm']['confirmReinstall'] = 'Möchten Sie das ISO Abbild wirklich installieren? Mit dem fortfahren gehen alle Daten auf dem Server verloren.';
-$_LANG['serverCA']['reinstall']['isoInstallModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['reinstall']['isoInstallModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverCA']['reinstall']['mainContainer']['reinstallTab']['dataTable']['isoInstallButton']['button']['isoInstallButton'] = 'Neu installieren';
-$_LANG['serverCA']['backup']['Your routing backup limit is :backupFilesLimit:. When you exceed this limit, the last backup will be replaced with a new one.'] = 'Ihr Backup limit ist :backupFilesLimit:. Sobald dieses erreicht wurde, wird jeweils das älteste Backup gelöscht.';
-$_LANG['serverCA']['backup']['mainContainer']['dataTable']['backupDataTable'] = 'Backups';
-$_LANG['serverCA']['backup']['mainContainer']['dataTable']['deleteMassButton']['button']['deleteMassButton'] = 'Löschen';
-$_LANG['serverCA']['backup']['mainContainer']['dataTable']['table']['date'] = 'Datum';
-$_LANG['serverCA']['backup']['mainContainer']['dataTable']['table']['format'] = 'Format';
-$_LANG['serverCA']['backup']['mainContainer']['dataTable']['table']['size'] = 'Grösse';
-$_LANG['serverCA']['backup']['mainContainer']['dataTable']['restoreButton ']['button']['restoreButton'] = 'Wiederherstellen';
-$_LANG['serverCA']['backup']['mainContainer']['dataTable']['deleteButton']['button']['deleteButton'] = 'Löschen';
-$_LANG['serverCA']['backup']['mainContainer']['dataTable']['createButton']['button']['createButton'] = 'Neues Backup';
-$_LANG['serverCA']['backup']['None'] = 'None';
-$_LANG['serverCA']['backup']['LZO (fast)'] = 'LZO (schnell)';
-$_LANG['serverCA']['backup']['GZIP (good)'] = 'GZIP (gut)';
-$_LANG['serverCA']['backup']['Snapshot'] = 'Snapshot';
-$_LANG['serverCA']['backup']['Suspend'] = 'Suspend';
-$_LANG['serverCA']['backup']['Stop'] = 'Stop';
-$_LANG['serverCA']['backup']['createModal']['modal']['createModal'] = 'Neues Backup';
-$_LANG['serverCA']['backupJob']['Your routing backup limit is :backupFilesLimit:. When you exceed this limit, the last backup will be replaced with a new one.'] = 'Ihr Backup limit ist :backupFilesLimit:. Sobald dieses erreicht wurde, wird jeweils das älteste Backup gelöscht';
-$_LANG['serverCA']['backup']['createModal']['createForm']['compress']['compress'] = 'Kompression';
-$_LANG['serverCA']['backup']['createModal']['createForm']['mode']['mode'] = 'Modus';
-$_LANG['serverCA']['backup']['createModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['backup']['createModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The backup creation is in progress'] = 'Es wird aktuell ein Backup erstellt';
-$_LANG['serverCA']['backup']['restoreModal']['modal']['restoreModal'] = 'Server wiederherstellen';
-$_LANG['serverCA']['backup']['restoreModal']['restoreForm']['confirmRestore'] = 'Möchten Sie den Server wirklich wiederherstellen?';
-$_LANG['serverCA']['backup']['restoreModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['backup']['restoreModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The virtual machine restore is in progress'] = 'Der Server wird aktuell wiederhergestellt';
-$_LANG['serverCA']['backup']['deleteModal']['modal']['deleteModal'] = 'Backup löschen';
-$_LANG['serverCA']['backup']['deleteModal']['deleteForm']['conforimDelete'] = 'Möchten Sie dieses Backup wirklich löschen??';
-$_LANG['serverCA']['backup']['deleteModal']['baseAcceptButton']['title']  = 'Bestätigen';
-$_LANG['serverCA']['backup']['deleteModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The backup has been deleted successfully'] = 'Das Backup wurde erfolgreich gelöscht';
-$_LANG['serverCA']['backup']['deleteMassModal']['modal']['deleteMassModal'] = 'Backups löschen';
-$_LANG['serverCA']['backup']['deleteMassModal']['deleteMassForm']['conforimDeleteMass'] = 'Möchten Sie die ausgewählten Backups wirklich löschen?';
-$_LANG['serverCA']['backup']['deleteMassModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['backup']['deleteMassModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The backups have been deleted successfully'] = 'Die ausgewählten Backups wurden erfolgreich gelöscht';
-$_LANG['serverCA']['backupJob']['mainContainer']['dataTable']['dackupJobDataTable'] = 'Backup Aufträge';
-$_LANG['serverCA']['backupJob']['mainContainer']['dataTable']['createButton']['button']['createButton'] = 'Neuer Auftrag';
-$_LANG['serverCA']['backupJob']['mainContainer']['dataTable']['table']['displayId'] = 'ID';
-$_LANG['serverCA']['backupJob']['mainContainer']['dataTable']['table']['starttime'] = 'Startzeit';
-$_LANG['serverCA']['backupJob']['mainContainer']['dataTable']['table']['dow'] = 'Wochentag';
-$_LANG['serverCA']['backupJob']['mainContainer']['dataTable']['table']['compress'] = 'Kompressionstyp';
-$_LANG['serverCA']['backupJob']['mainContainer']['dataTable']['table']['mode'] = 'Backup Modus';
-$_LANG['serverCA']['backupJob']['mainContainer']['dataTable']['table']['mailto'] = 'E-Mail Benachrichtigung';
-$_LANG['serverCA']['backupJob']['mainContainer']['dataTable']['updateButton']['button']['updateButton'] = 'Bearbeiten';
-$_LANG['serverCA']['backupJob']['mainContainer']['dataTable']['deleteButton']['button']['deleteButton'] = 'Löschen';
-$_LANG['serverCA']['backupJob']['mon'] =  'Montag';
-$_LANG['serverCA']['backupJob']['tue'] = 'Dienstag';
-$_LANG['serverCA']['backupJob']['wed'] = 'Mittwoch';
-$_LANG['serverCA']['backupJob']['thu'] = 'Donnerstag';
-$_LANG['serverCA']['backupJob']['fri'] ='Freitag';
-$_LANG['serverCA']['backupJob']['sat'] =  'Samstag';
-$_LANG['serverCA']['backupJob']['sun'] = 'Sonntag';
-$_LANG['serverCA']['backupJob']['0']="None";
-$_LANG['serverCA']['backupJob']['lzo'] = 'LZO (schnell)';
-$_LANG['serverCA']['backupJob']['gzip'] =  'GZIP (gut)';
-$_LANG['serverCA']['backupJob']['snapshot'] = 'Snapshot';
-$_LANG['serverCA']['backupJob']['suspend'] = 'Suspend';
-$_LANG['serverCA']['backupJob']['stop'] = 'Stop';
-$_LANG['serverCA']['backupJob']['createModal']['modal']['createModal'] = 'Backup Auftrag hinzufügen';
-$_LANG['serverCA']['backupJob']['createModal']['createForm']['Your routing backup limit is :backupFilesLimit:. When you exceed this limit, the last backup will be replaced with a new one.'] = 'Ihr Backup limit ist :backupFilesLimit:. Sobald dieses erreicht wurde, wird jeweils das älteste Backup gelöscht';
-$_LANG['serverCA']['backupJob']['createModal']['createForm']['starttime']['starttime'] = 'Startzeit';
-$_LANG['serverCA']['backupJob']['createModal']['createForm']['dow']['dow'] = 'Wochentag';
-$_LANG['serverCA']['backupJob']['createModal']['createForm']['compress']['compress'] = 'Kompressionstyp';
-$_LANG['serverCA']['backupJob']['createModal']['createForm']['mode']['mode'] = 'Backup Modus';
-$_LANG['serverCA']['backupJob']['createModal']['createForm']['mailto']['mailto'] = 'E-Mail Benachrichtigung';
-$_LANG['serverCA']['backupJob']['createModal']['baseAcceptButton']['title']  = 'Bestätigen';
-$_LANG['serverCA']['backupJob']['createModal']['baseCancelButton']['title']  = 'Abbrechen';
-$_LANG['The backup job has been created successfully'] = 'Der Backup Auftrag wurde erfolgreich erstellt';
-$_LANG['serverCA']['backupJob']['deleteModal']['modal']['deleteModal'] = 'Backup Auftrag entfernen';
-$_LANG['serverCA']['backupJob']['deleteModal']['deleteForm']['conforimDelete'] = 'Möchten Sie diesen Backup Auftrag wirklich löschen?';
-$_LANG['serverCA']['backupJob']['deleteModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['backupJob']['deleteModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['FormValidators']['PleaseProvideAStartTimeValue']= 'Bitte geben Sie eine Startzeit an';
-$_LANG['serverCA']['backupJob']['updateModal']['modal']['updateModal'] = 'Backup Auftrag bearbeiten';
-$_LANG['serverCA']['backupJob']['updateModal']['updateForm']['Your routing backup limit is :backupFilesLimit:. When you exceed this limit, the last backup will be replaced with a new one.'] = 'Ihr Backup limit ist :backupFilesLimit:. Sobald dieses erreicht wurde, wird jeweils das älteste Backup gelöscht';
-$_LANG['serverCA']['backupJob']['updateModal']['updateForm']['starttime']['starttime'] = 'Startzeit';
-$_LANG['serverCA']['backupJob']['updateModal']['updateForm']['dow']['dow'] = 'Wochentag';
-$_LANG['serverCA']['backupJob']['updateModal']['updateForm']['compress']['compress'] = 'Kompressionstyp';
-$_LANG['serverCA']['backupJob']['updateModal']['updateForm']['mode']['mode'] = 'Backup Modus';
-$_LANG['serverCA']['backupJob']['updateModal']['updateForm']['mailto']['mailto'] =  'E-Mail Benachrichtigung';
-$_LANG['serverCA']['backupJob']['updateModal']['baseAcceptButton']['title']  = 'Bestätigen';
-$_LANG['serverCA']['backupJob']['updateModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The backup job has been updated successfully'] = 'Der Backup Auftrag wurde erfolgreich bearbeitet';
-$_LANG['The backup job has been deleted successfully'] = 'Der Backup Auftrag wurde erfolgreich gelöscht';
-$_LANG['serverCA']['graph']['Hour'] = 'Stunde';
-$_LANG['serverCA']['graph']['Day'] = 'Tag';
-$_LANG['serverCA']['graph']['Week'] = 'Woche';
-$_LANG['serverCA']['graph']['Month'] = 'Monat';
-$_LANG['serverCA']['graph']['CPU Usage'] = 'CPU Auslastung';
-$_LANG['serverCA']['graph']['Bytes/s'] = 'Byte/s';
-$_LANG['serverCA']['graph']['mainContainer']['cpuGraph']['title'] = 'CPU Auslastung %';
-$_LANG['serverCA']['graph']['button']['settingButton'] = 'Einstellungen';
-$_LANG['serverCA']['graph']['mainContainer']['memoryGraph']['title'] = 'RAM Auslastung';
-$_LANG['serverCA']['graph']['mainContainer']['networkGraph']['title'] = 'Netzwerk Traffic';
-$_LANG['serverCA']['graph']['mainContainer']['diskkGraph']['title'] = 'Disk IO';
-$_LANG['serverCA']['graph']['Memory Usage'] ='RAM Auslastung';
-$_LANG['serverCA']['graph']['Total'] ='Total';
-$_LANG['serverAA']['home']['mainContainer']['networkGraph']['title'] = 'Netzwerk Traffic';
-$_LANG['serverCA']['graph']['Net In'] ='Net In';
-$_LANG['serverCA']['graph']['Net Out'] ='Net Out';
-$_LANG['serverAA']['home']['mainContainer']['diskkGraph']['title'] = 'Disk IO';
-$_LANG['serverCA']['graph']['Disk Read'] ='Disk Read';
-$_LANG['serverCA']['graph']['Disk Write'] ='Disk Write';
-$_LANG['serverCA']['graph']['settingModal']['modal']['settingModal'] = 'Einstellung';
-$_LANG['serverCA']['graph']['settingModal']['settingForm']['timeframe']['timeframe'] = 'Time Frame';
-$_LANG['serverCA']['graph']['settingModal']['baseAcceptButton']['title'] ='Bestätigen';
-$_LANG['serverCA']['graph']['settingModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverCA']['taskHistory']['mainContainer']['dataTable']['taskHistoryDataTable'] = 'Auftragsverlauf';
-$_LANG['serverCA']['taskHistory']['mainContainer']['dataTable']['table']['starttime'] = 'Startzeit';
-$_LANG['serverCA']['taskHistory']['mainContainer']['dataTable']['table']['endtime'] = 'Endzeit';
-$_LANG['serverCA']['taskHistory']['mainContainer']['dataTable']['table']['type'] = 'Beschreibung';
-$_LANG['serverCA']['taskHistory']['mainContainer']['dataTable']['table']['status'] = 'Status';
-$_LANG['serverCA']['taskHistory']['mainContainer']['dataTable']['infoButton ']['button']['infoButton'] = 'Fehler Details';
-$_LANG['serverCA']['taskHistory']['vzdump'] = 'Backup';
-$_LANG['serverCA']['taskHistory']['OK'] = 'OK';
-$_LANG['serverCA']['taskHistory']['qmrestore'] ='Wiederherstellen';
-$_LANG['serverCA']['taskHistory']['qmstop'] ="Stoppen";
-$_LANG['serverCA']['taskHistory']['vncproxy']= 'VNC Proxy';
-$_LANG['serverCA']['taskHistory']['qmsnapshot']= 'Snapshot';
-$_LANG['serverCA']['taskHistory']['qmdelsnapshot']= 'Snapshot';
-$_LANG['serverCA']['taskHistory']['qmrollback']= 'Rollback';
-$_LANG['serverCA']['taskHistory']['qmstart'] ='Starten';
-$_LANG['serverCA']['taskHistory']['Error']= 'Fehler';
-$_LANG['serverCA']['taskHistory']['qmdestroy'] = 'Destroy';
-$_LANG['serverCA']['taskHistory']['qmigrate'] = 'Migrieren';
-$_LANG['serverCA']['taskHistory']['qmcreate'] = 'Erstellen';
-$_LANG['serverCA']['taskHistory']['infoModal']['modal']['infoModal'] = 'Fehler Details';
-$_LANG['serverCA']['taskHistory']['infoModal']['infoForm']['error: :status:'] = 'Fehler: :status:';
-$_LANG['serverCA']['taskHistory']['infoModal']['baseCancelButton']['title'] = 'Schliessen';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['networkQemuDataTable'] = 'Netzwerk';
-$_LANG['serverCA']['taskHistory']['vzcreate'] ='Erstellen';
-$_LANG['serverCA']['taskHistory']['vzdestroy'] = 'Destroy';
-$_LANG['serverCA']['taskHistory']['resize'] ='Resize';
-$_LANG['serverCA']['taskHistory']['vzstart'] = 'Starten';
-$_LANG['serverCA']['taskHistory']['spiceproxy'] = 'Spice Konsole';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['table']['id'] = 'ID';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['table']['bridge'] = 'Bridge';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['table']['firewall'] = 'Firewall';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['table']['macAddress'] = 'MAC Adresse';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['table']['tag'] = 'Tag';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['deleteButton']['button']['deleteButton'] = 'Löschen';
-$_LANG['serverCA']['network']['Active']= 'Aktiv';
-$_LANG['serverCA']['network']['Disabled'] = 'Deaktiviert';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['createButton']['button']['createButton'] = 'Privates Netzwerk erstellen';
-$_LANG['serverCA']['network']['createModal']['modal']['createModal'] = 'Privates Netzwerk erstellen';
-$_LANG['serverCA']['network']['createModal']['createForm']['confirmCreate'] = 'Möchten Sie wirklich ein privates Netzwerk erstellen?';
-$_LANG['serverCA']['network']['createModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['network']['createModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverCA']['network']['deleteModal']['modal']['deleteModal'] = 'Privates Netzwerk löschen';
-$_LANG['serverCA']['network']['deleteModal']['deleteForm']['conforimDelete'] = 'Möchten Sie dieses private Netzwerk wirklich löschen?';
-$_LANG['serverCA']['network']['deleteModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['network']['deleteModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The Network Device has been deleted successfully'] = 'Das Netzwerkgerät wurde erfolgreich gelöscht';
-$_LANG['The Network Device has been created successfully'] = 'Das Netzwerkgerät wurde erfolgreich erstellt';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['networkLxcDataTable'] = 'Netzwerk';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['table']['name'] = 'Name';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['table']['hwaddr'] = 'MAC Adresse';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['table']['ip'] = ' 	IP Adresse';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['table']['gw'] = ' 	Gateway';
-$_LANG['serverCA']['snapshot']['The maximum number of snapshots has been exceeded. Please remove the old snapshots.'] = 'Das Maximum an Snapshots wurde erreicht, bitte entfernen Sie alte Snapshots.';
-$_LANG['serverCA']['snapshot']['mainContainer']['dataTable']['snapshotDataTable'] = 'Snapshots';
-$_LANG['serverCA']['snapshot']['mainContainer']['dataTable']['deleteMassButton']['button']['deleteMassButton'] = 'Löschen';
-$_LANG['serverCA']['snapshot']['mainContainer']['dataTable']['table']['name'] = 'Name';
-$_LANG['serverCA']['snapshot']['mainContainer']['dataTable']['table']['status'] = 'Status';
-$_LANG['serverCA']['snapshot']['mainContainer']['dataTable']['table']['vmstate'] = 'RAM';
-$_LANG['serverCA']['snapshot']['mainContainer']['dataTable']['table']['snaptime'] = 'Daten/Status';
-$_LANG['serverCA']['snapshot']['mainContainer']['dataTable']['table']['description'] = 'Beschreibung';
-$_LANG['serverCA']['snapshot']['mainContainer']['dataTable']['rollbackButton ']['button']['rollbackButton'] = 'Rollback';
-$_LANG['serverCA']['snapshot']['mainContainer']['dataTable']['updateButton']['button']['updateButton'] = 'Bearbeiten';
-$_LANG['serverCA']['snapshot']['mainContainer']['dataTable']['deleteButton']['button']['deleteButton'] = 'Löschen';
-$_LANG['serverCA']['snapshot']['mainContainer']['dataTable']['createButton']['button']['createButton'] = 'Snapshot erstellen';
-$_LANG['serverCA']['snapshot']['createModal']['modal']['createModal'] = 'Snapshot erstellen';
-$_LANG['serverCA']['snapshot']['createModal']['createForm']['confirmCreate'] = 'Möchten Sie wirklich einen Snapshot erstellen?';
-$_LANG['serverCA']['snapshot']['createModal']['createForm']['name']['name'] = 'Name';
-$_LANG['serverCA']['snapshot']['createModal']['createForm']['vmstate']['vmstate'] = 'RAM inkludieren';
-$_LANG['serverCA']['snapshot']['createModal']['createForm']['description']['description'] = 'Beschreibung';
-$_LANG['serverCA']['snapshot']['createModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['snapshot']['createModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The snapshot has been created successfully'] = 'Der Snapshot wurde erfolgreich erstellt';
-$_LANG['serverCA']['snapshot']['Active'] = 'Aktiv';
-$_LANG['serverCA']['snapshot']['Disabled'] = 'Deaktiviert';
-$_LANG['serverCA']['snapshot']['No'] = 'Nein';
-$_LANG['serverCA']['snapshot']['rollbackModal']['modal']['rollbackModal'] = 'Rollback';
-$_LANG['serverCA']['snapshot']['rollbackModal']['rollbackForm']['confirmRestore'] = 'Möchten Sie wirklich zurück zu diesem Snapshot?';
-$_LANG['serverCA']['snapshot']['rollbackModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['snapshot']['rollbackModal']['baseCancelButton']['title']  = 'Abbrechen';
-$_LANG['The snapshot has been rolled back successfully'] = 'The snapshot has been rolled back successfully';
-$_LANG['serverCA']['snapshot']['updateModal']['modal']['updateModal'] = 'Bearbeiten';
-$_LANG['serverCA']['snapshot']['updateModal']['updateForm']['description']['description'] = 'Beschreibung';
-$_LANG['serverCA']['snapshot']['updateModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['snapshot']['updateModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The snapshot has been updated successfully'] = 'Der Snapshot wurde erfolgreich bearbeitet';
-$_LANG['serverCA']['snapshot']['deleteModal']['modal']['deleteModal'] = 'Snapshot entfernen';
-$_LANG['serverCA']['snapshot']['deleteModal']['deleteForm']['conforimDelete'] = 'Möchten Sie diesen Snapshot wirklich löschen?';
-$_LANG['serverCA']['snapshot']['deleteModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['snapshot']['deleteModal']['baseCancelButton']['title']  = 'Abbrechen';
-$_LANG['FormValidators']['PleaseProvideASnapshotValue'] = 'Bitte geben Sie einen Namen ohne Abstände oder Sonderzeichen an, nur grosse Buchstaben und Zahlen sind erlaubt';
-$_LANG['serverCA']['snapshot']['deleteMassModal']['modal']['deleteMassModal'] = 'Snapshots löschen';
-$_LANG['serverCA']['snapshot']['deleteMassModal']['deleteMassForm']['conforimDeleteMass'] = 'Möchten Sie wirklich die ausgewählten Snapshots löschen?';
-$_LANG['serverCA']['snapshot']['deleteMassModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['snapshot']['deleteMassModal']['baseCancelButton']['title']  = 'Abbrechen';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Total'] = 'Total';
-$_LANG['serverCA']['taskHistory']['vzsnapshot'] = 'Snapshot';
-$_LANG['The snapshots have been deleted successfully'] = 'Die Snapshots wurden erfolgreich gelöscht';
-$_LANG['The snapshot has been deleted successfully'] = 'Der Snapshot wurde erfolgreich gelöscht';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['firewallDataTable'] = 'Firewall';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['createRuleButton']['button']['createRuleButton'] = 'Erstellen';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['buttonBase']['More Actions'] = 'Mehr Aktionen';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['buttonBase']['Additional Actions'] = 'Weitere Aktionen';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['buttonBase']['createGroupButton']['button']['createGroupButton'] = 'Sicherheitsgruppe hinzufügen';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['table']['enable'] = 'Aktivieren';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['table']['type'] = 'Typ';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['table']['action'] = 'Aktion';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['table']['macro'] = 'Makro';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['table']['iface'] = 'Interface';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['table']['source'] = 'Ursprung';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['table']['dest'] = 'Ziel';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['table']['proto'] = 'Protokoll';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['table']['dport'] = 'Zielport';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['table']['sport'] = 'Ursprungsport';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['table']['comment'] = 'Kommentar';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['updateButton']['button']['updateButton'] = 'Bearbeiten';
-$_LANG['serverCA']['firewall']['mainContainer']['dataTable']['deleteButton']['button']['deleteButton'] = 'Löschen';
-$_LANG['serverCA']['firewall']['The maximum number of firewall rules has been exceeded. Please remove the old firewall rules.'] = 'Das Maximum an Firewall Regeln wurde erreicht. Bitte entfernen Sie alte Regeln.';
-$_LANG['serverCA']['firewall']['in'] = 'in';
-$_LANG['serverCA']['firewall']['out'] = 'out';
-$_LANG['serverCA']['firewall']['ACCEPT'] = 'ACCEPT';
-$_LANG['serverCA']['firewall']['DROP'] = 'DROP';
-$_LANG['serverCA']['firewall']['REJECT'] = 'REJECT';
-$_LANG['serverCA']['firewall']['None'] = 'None';
-$_LANG['serverCA']['firewall']['createRuleModal']['modal']['createRuleModal'] = 'Firewall Regel hinzufügen';
-$_LANG['serverCA']['firewall']['6 Transmission Control Protocol'] = '6 Transmission Control Protocol';
-$_LANG['serverCA']['firewall']['createRuleModal']['createRuleForm']['mainSection']['topSection']['enable']['enable'] = 'Aktivieren';
-$_LANG['serverCA']['firewall']['createRuleModal']['createRuleForm']['mainSection']['leftSection']['type']['type'] = 'Tye';
-$_LANG['serverCA']['firewall']['createRuleModal']['createRuleForm']['mainSection']['leftSection']['iface']['iface'] = 'Interface';
-$_LANG['serverCA']['firewall']['createRuleModal']['createRuleForm']['mainSection']['leftSection']['dest']['dest'] = 'Ziel';
-$_LANG['serverCA']['firewall']['createRuleModal']['createRuleForm']['mainSection']['leftSection']['proto']['proto'] = 'Protokoll';
-$_LANG['serverCA']['firewall']['createRuleModal']['createRuleForm']['mainSection']['leftSection']['dport']['dport'] = 'Ziel Port';
-$_LANG['serverCA']['firewall']['createRuleModal']['createRuleForm']['mainSection']['rightSection']['action']['action'] = 'Aktion';
-$_LANG['serverCA']['firewall']['createRuleModal']['createRuleForm']['mainSection']['rightSection']['source']['source'] = 'Herkunft';
-$_LANG['serverCA']['firewall']['createRuleModal']['createRuleForm']['mainSection']['rightSection']['macro']['macro'] = 'Makro';
-$_LANG['serverCA']['firewall']['createRuleModal']['createRuleForm']['mainSection']['rightSection']['sport']['sport'] = 'Herkunftsport';
-$_LANG['serverCA']['firewall']['createRuleModal']['createRuleForm']['bottomSection']['comment']['comment'] = 'Kommentar';
-
-$_LANG['serverCA']['firewall']['createRuleModal']['baseAcceptButton']['title'] = 'Hinzufügen';
-$_LANG['serverCA']['firewall']['createRuleModal']['baseCancelButton']['title'] = 'Abbrechen';
-
-$_LANG['serverCA']['firewall']['venet'] = 'Venet';
-$_LANG['serverCA']['firewall']['Microsoft Remote Desktop Protocol traffic'] = 'Microsoft Remote Desktop Protocol traffic';
-$_LANG['serverCA']['firewall']['Razor Antispam System'] = 'Razor Anti-spam System';
-$_LANG['serverCA']['firewall']['BitTorrent traffic for BitTorrent 3.2 and later'] = 'BitTorrent traffic for BitTorrent 3.2 and later';
-$_LANG['serverCA']['firewall']['Internet Relay Chat traffic'] = 'Internet Relay Chat traffic';
-$_LANG['serverCA']['firewall']['WWW traffic (HTTP and HTTPS)'] = 'WWW traffic (HTTP and HTTPS)';
-$_LANG['serverCA']['firewall']['VNC traffic for VNC display\'s 0 - 99'] = 'VNC traffic for VNC display\'s 0 - 99';
-$_LANG['serverCA']['firewall']['MySQL server'] = 'MySQL server';
-$_LANG['serverCA']['firewall']['RFC 868 Time protocol'] = 'RFC 868 Time protocol';
-$_LANG['serverCA']['firewall']['Symantec PCAnywere (tm)'] = 'Symantec PCAnywere (tm)';
-$_LANG['serverCA']['firewall']['Layer 2 Tunneling Protocol traffic'] = 'Layer 2 Tunneling Protocol traffic';
-$_LANG['serverCA']['firewall']['IPIP capsulation traffic'] = 'IPIP capsulation traffic';
-$_LANG['serverCA']['firewall']['Encrypted NNTP traffic (Usenet)'] = 'Encrypted NNTP traffic (Usenet)';
-$_LANG['serverCA']['firewall']['Microsoft Notification Protocol'] = 'Microsoft Notification Protocol';
-$_LANG['serverCA']['firewall']['Telnet traffic'] = 'Telnet traffic';
-$_LANG['serverCA']['firewall']['Encrypted POP3 traffic'] = 'Encrypted POP3 traffic';
-$_LANG['serverCA']['firewall']['Forwarded DHCP traffic'] = 'Forwarded DHCP traffic';
-$_LANG['serverCA']['firewall']['Auth (identd) traffic'] = 'Auth (identd) traffic';
-$_LANG['serverCA']['firewall']['Citrix/ICA traffic (ICA, ICA Browser, CGP)'] = 'Citrix/ICA traffic (ICA, ICA Browser, CGP)';
-$_LANG['serverCA']['firewall']['HP Jetdirect printing'] = 'HP Jetdirect printing';
-$_LANG['serverCA']['firewall']['Hypertext Transfer Protocol (WWW)'] = 'Hypertext Transfer Protocol (WWW)';
-$_LANG['serverCA']['firewall']['Amanda Backup'] = 'Amanda Backup';
-$_LANG['serverCA']['firewall']['Squid web proxy traffic'] = 'Squid web proxy traffic';
-$_LANG['serverCA']['firewall']['Ceph Storage Cluster traffic (Ceph Monitors, OSD & MDS Deamons)'] = 'Ceph Storage Cluster traffic (Ceph Monitors, OSD & MDS Daemons)';
-$_LANG['serverCA']['firewall']['GNUnet secure peer-to-peer networking traffic'] = 'GNUnet secure peer-to-peer networking traffic';
-$_LANG['serverCA']['firewall']['Digital Audio Access Protocol traffic (iTunes, Rythmbox daemons)'] = 'Digital Audio Access Protocol traffic (iTunes, Rythmbox daemons)';
-$_LANG['serverCA']['firewall']['DHCPv6 traffic'] = 'DHCPv6 traffic';
-$_LANG['serverCA']['firewall']['Whois (nicname, RFC 3912) traffic'] = 'Whois (nicname, RFC 3912) traffic';
-$_LANG['serverCA']['firewall']['Internet Message Access Protocol'] = 'Internet Message Access Protocol';
-$_LANG['serverCA']['firewall']['Concurrent Versions System pserver traffic'] = 'Concurrent Versions System pserver traffic';
-$_LANG['serverCA']['firewall']['Distributed Checksum Clearinghouse spam filtering mechanism'] = 'Dist ributed Checksum Clearinghouse spam filtering mechanism';
-$_LANG['serverCA']['firewall']['VNC traffic from Vncservers to Vncviewers in listen mode'] = 'VNC traffic from VNC servers to VNC viewers in listen mode';
-$_LANG['serverCA']['firewall']['OpenVPN traffic'] = 'OpenVPN traffic';
-$_LANG['serverCA']['firewall']['OSPF multicast traffic'] = 'OSPF multicast traffic';
-$_LANG['serverCA']['firewall']['ICMP echo request'] = 'ICMP echo request';
-$_LANG['serverCA']['firewall']['SixXS IPv6 Deployment and Tunnel Broker'] = 'SixXS IPv6 Deployment and Tunnel Broker';
-$_LANG['serverCA']['firewall']['Spam Assassin SPAMD traffic'] = 'Spam Assassin SPAMD traffic';
-$_LANG['serverCA']['firewall']['Git distributed revision control traffic'] = 'Git distributed revision control traffic';
-$_LANG['serverCA']['firewall']['Domain Name System traffic (upd and tcp)'] = 'Domain Name System traffic (UPD and TCP)';
-$_LANG['serverCA']['firewall']['Border Gateway Protocol traffic'] = 'Border Gateway Protocol traffic';
-$_LANG['serverCA']['firewall']['17 User Datagram Protocol'] = '17 User Datagram Protocol';
-$_LANG['serverCA']['firewall']['1 Internet Control Message Protocol'] = '1 Internet Control Message Protocol';
-$_LANG['serverCA']['firewall']['2 Internet Group Management'] = '2 Internet Group Management';
-$_LANG['serverCA']['firewall']['3 gateway-gateway protocol'] = '3 gateway-gateway protocol';
-$_LANG['serverCA']['firewall']['4 IP encapsulated in IP'] = '4 IP encapsulated in IP';
-$_LANG['serverCA']['firewall']['5 ST datagram mode'] = '5 ST datagram mode';
-$_LANG['serverCA']['firewall']['8 exterior gateway protocol'] = '8 exterior gateway protocol';
-$_LANG['serverCA']['firewall']['9 any private interior gateway (Cisco)'] = '9 any private interior gateway (Cisco)';
-$_LANG['serverCA']['firewall']['12 PARC universal packet protocol'] = '12 PARC universal packet protocol';
-$_LANG['serverCA']['firewall']['20 host monitoring protocol'] = '20 host monitoring protocol';
-$_LANG['serverCA']['firewall']['22 Xerox NS IDP'] = '22 Xerox NS IDP';
-$_LANG['serverCA']['firewall']['27 "reliable datagram" protocol'] = '27 "reliable datagram" protocol';
-$_LANG['serverCA']['firewall']['29 ISO Transport Protocol class 4 [RFC905]'] = '29 ISO Transport Protocol class 4 [RFC905]';
-$_LANG['serverCA']['firewall']['33 Datagram Congestion Control Prot.'] = '33 Datagram Congestion Control Protocol';
-$_LANG['serverCA']['firewall']['33 Xpress Transfer Protocol'] = '33 Xpress Transfer Protocol';
-$_LANG['serverCA']['firewall']['37 Datagram Delivery Protocol'] = '37 Datagram Delivery Protocol';
-$_LANG['serverCA']['firewall']['38 IDPR Control Message Transport'] = '38 IDPR Control Message Transport';
-$_LANG['serverCA']['firewall']['41 Internet Protocol, version 6'] = '41 Internet Protocol, version 6';
-$_LANG['serverCA']['firewall']['43 Routing Header for IPv6'] = '43 Routing Header for IPv6';
-$_LANG['serverCA']['firewall']['44 Fragment Header for IPv6'] = '44 Fragment Header for IPv6';
-$_LANG['serverCA']['firewall']['45 Inter-Domain outing Protocol'] = '45 Inter-Domain outing Protocol';
-$_LANG['serverCA']['firewall']['46 Reservation Protocol'] = '46 Reservation Protocol';
-$_LANG['serverCA']['firewall']['47 General Routing Encapsulation'] = '47 General Routing Encapsulation';
-$_LANG['serverCA']['firewall']['50 Encap Security Payload [RFC2406]'] = '50 Encap Security Payload [RFC2406]';
-$_LANG['serverCA']['firewall']['51 Authentication Header [RFC2402]'] = '51 Authentication Header [RFC2402]';
-$_LANG['serverCA']['firewall']['57 SKIP'] = '57 SKIP';
-$_LANG['serverCA']['firewall']['58 ICMP for IPv6'] = '58 ICMP for IPv6';
-$_LANG['serverCA']['firewall']['59 No Next Header for IPv6'] = '59 No Next Header for IPv6';
-$_LANG['serverCA']['firewall']['60 Destination Options for IPv6'] = '60 Destination Options for IPv6';
-$_LANG['serverCA']['firewall']['81 Versatile Message Transport'] = '81 Versatile Message Transport';
-$_LANG['serverCA']['firewall']['88 Enhanced Interior Routing Protocol (Cisco)'] = '88 Enhanced Interior Routing Protocol (Cisco)';
-$_LANG['serverCA']['firewall']['89 Open Shortest Path First IGP'] = '89 Open Shortest Path First IGP';
-$_LANG['serverCA']['firewall']['93 AX.25 frames'] = '93 AX.25 frames';
-$_LANG['serverCA']['firewall']['94 Ip-within-IP Encapsulation Protocol'] = '94 IP-within-IP Encapsulation Protocol';
-$_LANG['serverCA']['firewall']['97 IP-within-IP Encapsulation [RFC3378]'] = '97 IP-within-IP Encapsulation [RFC3378]';
-$_LANG['serverCA']['firewall']['103 Protocol Independent Multicast'] = '103 Protocol Independent Multicast';
-$_LANG['serverCA']['firewall']['108 IP Payload Compression Protocol'] = '108 IP Payload Compression Protocol';
-$_LANG['serverCA']['firewall']['112 Virtual Router Redundancy Protocol'] = '112 Virtual Router Redundancy Protocol';
-$_LANG['serverCA']['firewall']['115 Layer Two Tunneling Protocol [RFC2661]'] = '115 Layer Two Tunneling Protocol [RFC2661]';
-$_LANG['serverCA']['firewall']['124 IS-IS over IPv4'] = '124 IS-IS over IPv4';
-$_LANG['serverCA']['firewall']['132 Stream Control Transmission Protocol'] = '132 Stream Control Transmission Protocol';
-$_LANG['serverCA']['firewall']['133 Fibre Channel'] = '133 Fibre Channel';
-$_LANG['serverCA']['firewall']['135 Mobility Support for Ipv6 [RFC3775]'] = '135 Mobility Support for Ipv6 [RFC3775]';
-$_LANG['serverCA']['firewall']['136 UDP-Lite [RFC3828]'] = '136 UDP-Lite [RFC3828]';
-$_LANG['serverCA']['firewall']['139 Host Identity Protocol'] = '139 Host Identity Protocol';
-$_LANG['serverCA']['firewall']['139 Shim6 Protocol [RFC5533]'] = '139 Shim6 Protocol [RFC5533]';
-$_LANG['serverCA']['firewall']['141 Wrapped Encapsulating Security Payload'] = '141 Wrapped Encapsulating Security Payload';
-$_LANG['serverCA']['firewall']['142 Robust Header Compression'] = '142 Robust Header Compression';
-$_LANG['serverCA']['firewall']['Traceroute (for up to 30 hops) traffic'] = 'Traceroute (for up to 30 hops) traffic';
-$_LANG['serverCA']['firewall']['Microsoft SQL Server'] = 'Microsoft SQL Server';
-$_LANG['serverCA']['firewall']['SANE network scanning'] = 'SANE network scanning';
-$_LANG['serverCA']['firewall']['Internet Cache Protocol V2 (Squid) traffic'] = 'Internet Cache Protocol V2 (Squid) traffic';
-$_LANG['serverCA']['firewall']['IPsec traffic and Nat-Traversal'] = 'IPsec traffic and Nat-Traversal';
-$_LANG['serverCA']['firewall']['BIND remote management protocol'] = 'BIND remote management protocol';
-$_LANG['serverCA']['firewall']['Secure shell traffic'] = 'Secure shell traffic';
-$_LANG['serverCA']['firewall']['Webmin traffic'] = 'Webmin traffic';
-$_LANG['serverCA']['firewall']['Rsync server'] = 'Rsync server';
-$_LANG['serverCA']['firewall']['Distributed Compiler service'] = 'Distributed Compiler service';
-$_LANG['serverCA']['firewall']['File Transfer Protocol'] = 'File Transfer Protocol';
-$_LANG['serverCA']['firewall']['OpenPGP HTTP keyserver protocol traffic'] = 'OpenPGP HTTP keyserver protocol traffic';
-$_LANG['serverCA']['firewall']['Internet Message Access Protocol over SSL'] = 'Internet Message Access Protocol over SSL';
-$_LANG['serverCA']['firewall']['Simple Network Management Protocol'] = 'Simple Network Management Protocol';
-$_LANG['serverCA']['firewall']['Generic Routing Encapsulation tunneling protocol'] = 'Generic Routing Encapsulation tunneling protocol';
-$_LANG['serverCA']['firewall']['BitTorrent traffic for BitTorrent 3.1 and earlier'] = 'BitTorrent traffic for BitTorrent 3.1 and earlier';
-$_LANG['serverCA']['firewall']['Finger protocol (RFC 742)'] = 'Finger protocol (RFC 742)';
-$_LANG['serverCA']['firewall']['Point-to-Point Tunneling Protocol'] = 'Point-to-Point Tunneling Protocol';
-$_LANG['serverCA']['firewall']['Subversion server (svnserve)'] = 'Subversion server (svnserve)';
-$_LANG['serverCA']['firewall']['AOL Instant Messenger traffic'] = 'AOL Instant Messenger traffic';
-$_LANG['serverCA']['firewall']['IPsec traffic'] = 'IPsec traffic';
-$_LANG['serverCA']['firewall']['Simple Mail Transfer Protocol'] = 'Simple Mail Transfer Protocol';
-$_LANG['serverCA']['firewall']['Remote time retrieval (rdate)'] = 'Remote time retrieval (rdate)';
-$_LANG['serverCA']['firewall']['Line Printer protocol printing'] = 'Line Printer protocol printing';
-$_LANG['serverCA']['firewall']['Secure Lightweight Directory Access Protocol traffic'] = 'Secure Lightweight Directory Access Protocol traffic';
-$_LANG['serverCA']['firewall']['Syslog protocol (RFC 5424) traffic'] = 'Syslog protocol (RFC 5424) traffic';
-$_LANG['serverCA']['firewall']['PostgreSQL server'] = 'PostgreSQL server';
-$_LANG['serverCA']['firewall']['Mail message submission traffic'] = 'Mail message submission traffic';
-$_LANG['serverCA']['firewall']['Munin networked resource monitoring traffic'] = 'Munin networked resource monitoring traffic';
-$_LANG['serverCA']['firewall']['Samba Web Administration Tool'] = 'Samba Web Administration Tool';
-$_LANG['serverCA']['firewall']['POP3 traffic'] = 'POP3 traffic';
-$_LANG['serverCA']['firewall']['Web Cache/Proxy traffic (port 8080)'] = 'Web Cache/Proxy traffic (port 8080)';
-$_LANG['serverCA']['firewall']['Network Time Protocol (ntpd)'] = 'Network Time Protocol (ntpd)';
-$_LANG['serverCA']['firewall']['NNTP traffic (Usenet).'] = 'NNTP traffic (Usenet).';
-$_LANG['serverCA']['firewall']['Encrypted Simple Mail Transfer Protocol'] = 'Encrypted Simple Mail Transfer Protocol';
-$_LANG['serverCA']['firewall']['Routing Information Protocol (bidirectional)'] = 'Routing Information Protocol (bidirectional)';
-$_LANG['serverCA']['firewall']['Lightweight Directory Access Protocol traffic'] = 'Lightweight Directory Access Protocol traffic';
-$_LANG['serverCA']['firewall']['Multicast DNS'] = 'Multicast DNS';
-$_LANG['serverCA']['firewall']['Mail traffic (SMTP, SMTPS, Submission)'] = 'Mail traffic (SMTP, SMTPS, Submission)';
-$_LANG['serverCA']['firewall']['Hypertext Transfer Protocol (WWW) over SSL'] = 'Hypertext Transfer Protocol (WWW) over SSL';
-$_LANG['serverCA']['firewall']['Telnet over SSL'] = 'Telnet over SSL';
-$_LANG['serverCA']['firewall']['IPsec authentication (AH) traffic'] = 'IPsec authentication (AH) traffic';
-$_LANG['serverCA']['firewall']['Microsoft SMB traffic'] = 'Microsoft SMB traffic';
-$_LANG['serverCA']['firewall']['IPv6 neighbor solicitation, neighbor and router advertisement'] = 'IPv6 neighbor solicitation, neighbor and router advertisement';
-$_LANG['serverCA']['firewall']['Trivial File Transfer Protocol traffic'] = 'Trivial File Transfer Protocol traffic';
-$_LANG['The firewall rule has been created successfully'] = 'Die Firewall Regel wurde erfolgreich erstellt';
-$_LANG['serverCA']['firewall']['updateModal']['modal']['updateModal'] = 'Firewall Regel bearbeiten';
-$_LANG['serverCA']['firewall']['updateModal']['updateForm']['bottomSection']['comment']['comment'] = 'Kommentar';
-$_LANG['serverCA']['firewall']['updateModal']['updateForm']['mainSection']['topSection']['enable']['enable'] = 'Aktivieren';
-$_LANG['serverCA']['firewall']['updateModal']['updateForm']['mainSection']['leftSection']['type']['type'] = 'Typ';
-$_LANG['serverCA']['firewall']['updateModal']['updateForm']['mainSection']['leftSection']['iface']['iface'] = 'Interface';
-$_LANG['serverCA']['firewall']['updateModal']['updateForm']['mainSection']['leftSection']['dest']['dest'] = 'Ziel';
-$_LANG['serverCA']['firewall']['updateModal']['updateForm']['mainSection']['leftSection']['proto']['proto'] = 'Protokoll';
-$_LANG['serverCA']['firewall']['updateModal']['updateForm']['mainSection']['leftSection']['dport']['dport'] = 'Zielport';
-$_LANG['serverCA']['firewall']['updateModal']['updateForm']['mainSection']['rightSection']['action']['action'] = 'Aktion';
-$_LANG['serverCA']['firewall']['updateModal']['updateForm']['mainSection']['rightSection']['source']['source'] = 'Herkunft';
-$_LANG['serverCA']['firewall']['updateModal']['updateForm']['mainSection']['rightSection']['macro']['macro'] = 'Makro';
-$_LANG['serverCA']['firewall']['updateModal']['updateForm']['mainSection']['rightSection']['sport']['sport'] = 'Herkunftsport';
-$_LANG['serverCA']['firewall']['updateModal']['baseAcceptButton']['title'] = 'Änderungen speichern';
-$_LANG['serverCA']['firewall']['updateModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The firewall rule has been updated successfully'] = 'Die Firewall Regel wurde erfolgreich bearbeitet';
-$_LANG['serverCA']['firewall']['deleteModal']['modal']['deleteModal'] = 'Regel löschen';
-$_LANG['serverCA']['firewall']['deleteModal']['deleteForm']['conforimDelete'] = 'Möchten Sie diese Firewall Regel wirklich löschen? ';
-$_LANG['serverCA']['firewall']['deleteModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['firewall']['deleteModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The firewall rule has been deleted successfully'] = 'Die Firewall Regel wurde erfolgreich gelöscht';
-$_LANG['serverCA']['firewall']['ssh'] = 'SSH';
-$_LANG['serverCA']['firewall']['webserver'] = 'Webserver';
-$_LANG['serverCA']['firewall']['createGroupModal']['modal']['createGroupModal'] = 'Sicherheitsgruppe hinzufügen';
-$_LANG['serverCA']['firewall']['createGroupModal']['createGroupForm']['action']['action'] = 'Aktion';
-$_LANG['serverCA']['firewall']['createGroupModal']['createGroupForm']['iface']['iface'] = 'Interface';
-$_LANG['serverCA']['firewall']['createGroupModal']['createGroupForm']['comment']['comment'] = 'Kommentar';
-$_LANG['serverCA']['firewall']['createGroupModal']['createGroupForm']['enable']['enable'] = 'Aktivieren';
-$_LANG['serverCA']['firewall']['createGroupModal']['baseAcceptButton']['title'] = 'Hinzufügen';
-$_LANG['serverCA']['firewall']['createGroupModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverCA']['firewall']['updateGroupModal']['modal']['updateGroupModal'] = 'Sicherheitsgruppe bearbeiten';
-$_LANG['serverCA']['firewall']['updateGroupModal']['createGroupForm']['action']['action'] = 'Aktion';
-$_LANG['serverCA']['firewall']['updateGroupModal']['createGroupForm']['iface']['iface'] = 'Interface';
-$_LANG['serverCA']['firewall']['updateGroupModal']['createGroupForm']['comment']['comment'] = 'Kommentar';
-$_LANG['serverCA']['firewall']['updateGroupModal']['createGroupForm']['enable']['enable'] = 'Aktivieren';
-$_LANG['serverCA']['firewall']['updateGroupModal']['baseAcceptButton']['title'] = 'Änderungen speichern';
-$_LANG['serverCA']['firewall']['updateGroupModal']['baseCancelButton']['title']  = 'Abbrechen';
-$_LANG['serverCA']['firewallOption']['0'] ="Nein";
-$_LANG['serverCA']['firewallOption']['1'] = "Ja";
-$_LANG['serverCA']['firewallOption']['enable'] 	='Firewall aktivieren';
-$_LANG['serverCA']['firewallOption']['dhcp'] ="DHCP aktivieren";
-$_LANG['serverCA']['firewallOption']['ndp'] ="NDP aktivieren";
-$_LANG['serverCA']['firewallOption']['radv'] = "Allow Router Advertisement";
-$_LANG['serverCA']['firewallOption']['macfilter'] = "MAC Filter";
-$_LANG['serverCA']['firewallOption']['ipfilter'] = "IP Filter";
-$_LANG['serverCA']['firewallOption']['log_level_in'] = "log_level_in";
-$_LANG['serverCA']['firewallOption']['log_level_out'] = "log_level_out";
-$_LANG['serverCA']['firewallOption']['policy_in'] = "Input Policy";
-$_LANG['serverCA']['firewallOption']['policy_out'] = "Output Policy";
-$_LANG['serverCA']['firewallOption']['nolog'] ="nolog";
-$_LANG['serverCA']['firewallOption']['DROP']= 'DROP';
-$_LANG['serverCA']['firewallOption']['ACCEPT'] ='ACCEPT';
-$_LANG['serverCA']['firewallOption']['mainContainer']['firewallOption']['updateButton']['button']['updateButton']="Edit";
-$_LANG['serverCA']['firewallOption']['info'] = 'Info';
-$_LANG['serverCA']['firewallOption']['err'] = 'Fehler';
-$_LANG['serverCA']['firewallOption']['warning'] = 'Warnung';
-$_LANG['serverCA']['firewallOption']['crit'] = 'Kritisch';
-$_LANG['serverCA']['firewallOption']['alert'] = 'Alert';
-$_LANG['serverCA']['firewallOption']['emerg'] = 'Emerg';
-$_LANG['serverCA']['firewallOption']['debug'] = 'Debug';
-$_LANG['serverCA']['firewallOption']['REJECT'] = 'REJECT';
-$_LANG['serverCA']['firewallOption']['updateModal']['modal']['updateModal'] = 'Firewall Optionen bearbeiten';
-$_LANG['serverCA']['firewallOption']['updateModal']['updateForm']['enable']['enable'] = 'Firewall aktivieren';
-$_LANG['serverCA']['firewallOption']['updateModal']['updateForm']['dhcp']['dhcp'] = 'DHCP aktivieren';
-$_LANG['serverCA']['firewallOption']['updateModal']['updateForm']['ndp']['ndp'] = 'NDP aktivieren';
-$_LANG['serverCA']['firewallOption']['updateModal']['updateForm']['radv']['radv'] = 'Allow Router Advertisement';
-$_LANG['serverCA']['firewallOption']['updateModal']['updateForm']['macfilter']['macfilter'] = 'MAC Filter';
-$_LANG['serverCA']['firewallOption']['updateModal']['updateForm']['ipfilter']['ipfilter'] = 'IP Filter';
-$_LANG['serverCA']['firewallOption']['updateModal']['updateForm']['log_level_in']['log_level_in'] = 'Log Level In';
-$_LANG['serverCA']['firewallOption']['updateModal']['updateForm']['log_level_out']['log_level_out'] = 'Log Level Out';
-$_LANG['serverCA']['firewallOption']['updateModal']['updateForm']['policy_in']['policy_in'] = 'Input Policy';
-$_LANG['serverCA']['firewallOption']['updateModal']['updateForm']['policy_out']['policy_out'] = 'Output Policy';
-$_LANG['serverCA']['firewallOption']['updateModal']['baseAcceptButton']['title'] = 'Änderungen speichern';
-$_LANG['serverCA']['firewallOption']['updateModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The firewall options has been updated successfully'] = 'Die Firewall Optionen wurden erfolgreich bearbeitet';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['diskDataTable'] = 'Disks';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['table']['name'] = 'Name';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['table']['bus'] = 'Bus/Gerät';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['table']['format'] = 'Format';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['table']['backup'] = 'Backup';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['table']['bytes'] = 'Grösse';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['table']['mp']  = 'Pfad';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['updateButton']['button']['updateButton'] = 'Bearbeiten';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['deleteButton']['button']['deleteButton'] = 'Löschen';
-$_LANG['serverCA']['disk']['disk-0'] = 'Disk 1';
-$_LANG['serverCA']['disk']['disk-1'] = 'Disk 2';
-$_LANG['serverCA']['disk']['disk-2'] = 'Disk 3';
-$_LANG['serverCA']['disk']['disk-4'] = 'Disk 4';
-$_LANG['serverCA']['disk']['disk-5'] = 'Disk 5';
-$_LANG['serverCA']['disk']['disk-6'] = 'Disk 6';
-$_LANG['serverCA']['disk']['ide1'] = 'ide1';
-$_LANG['serverCA']['disk']['ide2'] = 'ide2';
-$_LANG['serverCA']['disk']['ide3'] = 'ide3';
-$_LANG['serverCA']['disk']['scsi0'] = 'scsi0';
-$_LANG['serverCA']['disk']['unused0'] = 'unused0';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['createButton']['button']['createButton'] = 'Festplatte hinzufügen';
-$_LANG['serverCA']['disk']['ide'] =  'IDE';
-$_LANG['serverCA']['disk']['sata'] = 'SATA';
-$_LANG['serverCA']['disk']['virtio'] = 'VIRTIO';
-$_LANG['serverCA']['disk']['scsi'] =  'SCSI';
-$_LANG['serverCA']['disk']['raw'] =  'Raw disk image (raw)';
-$_LANG['serverCA']['disk']['qcow2'] =  'QEMU image format (qcow2)';
-$_LANG['serverCA']['disk']['vmdk'] =  'VM image format (VMDK)';
-$_LANG['serverCA']['disk']['createModal']['modal']['createModal'] = 'Festplatte hinzufügen';
-$_LANG['serverCA']['disk']['createModal']['createForm']['confirmCreate'] = 'Möchten Sie wirklich eine Fesplatte hinzufügen?';
-$_LANG['serverCA']['disk']['createModal']['createForm']['size']['size'] = 'Grösse [GB]';
-$_LANG['serverCA']['disk']['createModal']['createForm']['bus']['bus'] = 'Bus';
-$_LANG['serverCA']['disk']['createModal']['createForm']['format']['format'] = 'Format';
-$_LANG['serverCA']['disk']['createModal']['baseAcceptButton']['title'] = 'Hinzufügen';
-$_LANG['serverCA']['disk']['createModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The hard disk has been created successfully'] = 'Die Festplatte wurde erfolgreich erstellt';
-$_LANG['serverCA']['disk']['No access to additional disk backup'] = 'Kein Zugriff auf ein zusätzliches Backup';
-$_LANG['serverCA']['disk']['updateModal']['modal']['updateModal'] = 'Festplatte bearbeiten';
-$_LANG['serverCA']['disk']['updateModal']['updateForm']['confirmUpdate'] = 'Möchten Sie diese Festplatte wirklich bearbeiten?';
-$_LANG['serverCA']['disk']['updateModal']['updateForm']['size']['size'] = 'Grösse [GB]';
-$_LANG['serverCA']['disk']['updateModal']['updateForm']['backup']['backup'] = 'Backup';
-$_LANG['serverCA']['disk']['updateModal']['baseAcceptButton']['title'] = 'Änderungen speichern';
-$_LANG['serverCA']['disk']['updateModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The hard disk has been updated successfully'] = 'Die Festplatte wurde erfolgreich bearbeitet';
-$_LANG['serverCA']['disk']['deleteModal']['modal']['deleteModal'] = 'Festplatte löschen';
-$_LANG['serverCA']['disk']['deleteModal']['deleteForm']['conforimDelete'] = 'Möchten Sie diese Festplatte wirklich löschen? ';
-$_LANG['serverCA']['disk']['deleteModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['disk']['deleteModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['The hard disk has been deleted successfully'] = 'Die Festplatte wurde erfolgreich gelöscht';
-$_LANG['serverCA']['reinstall']['mainContainer']['dataTable']['templatDataTable'] = 'Neu installieren';
-$_LANG['serverCA']['reinstall']['mainContainer']['dataTable']['table']['name'] = 'OS Template';
-$_LANG['serverCA']['reinstall']['mainContainer']['dataTable']['templateInstallButton']['button']['templateInstallButton'] = 'Neu installieren';
-$_LANG['The virtual server is being reinstalled'] = 'Der Server wird momentan neu installiert';
-$_LANG['serverCA']['reinstall']['mainContainer']['dataTable']['isoDataTable'] =  'Neu installieren';
-$_LANG['serverCA']['reinstall']['mainContainer']['dataTable']['isoInstallButton']['button']['isoInstallButton'] = 'Neu installieren';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['mountPointDataTable'] = 'Disks';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['table']['id'] = 'ID';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['table']['path'] = 'Pfad';
-$_LANG['serverCA']['disk']['Root Disk'] = 'Root Disk';
-$_LANG['serverCA']['disk']['createModal']['createForm']['mp']['mp'] = 'Pfad';
-$_LANG['serverCA']['disk']['createModal']['createForm']['backup']['backup'] = 'Backup';
-$_LANG['serverCA']['disk']['Disk 1'] = 'Disk 1';
-$_LANG['serverCA']['disk']['Disk 2'] = 'Disk 2';
-$_LANG['serverCA']['disk']['Disk 3'] = 'Disk 3';
-$_LANG['serverCA']['disk']['Disk 4'] = 'Disk 4';
-$_LANG['serverCA']['disk']['Disk 5'] = 'Disk 5';
-$_LANG['serverCA']['disk']['Disk 6'] = 'Disk 6';
-$_LANG['serverCA']['disk']['Disk 7'] = 'Disk 7';
-$_LANG['serverCA']['disk']['virtio0']   ='virtio0';
-$_LANG['serverCA']['disk']['scsi1']  ='scsi1';
-$_LANG['serverCA']['disk']['sata0']	='sata0';
-$_LANG['serverCA']['disk']['ide0']	='ide0';
-
-$_LANG['Creating VM in progress. Please try again later.'] = 'Der Server wird momentan erstellt. Bitte versuchen Sie es später erneut.';
-$_LANG['Rebuild VM in progress. Please try again later.'] = 'Der Server wird momentan neu erstellt. Bitte versuchen Sie es später erneut.';
-$_LANG['Upgrading VM in progress. Please try again later.'] = 'Der Server wird momentan geupgradet. Bitte versuchen Sie es später erneut.';
-$_LANG['serverCA']['home']['running'] ='Online';
-$_LANG['serverAA']['configOptions']['Stop VM'] = 'Server stoppen';
-$_LANG['serverAA']['configOptions']['Shutdown VM'] = 'Server herunterfahren';
-$_LANG['serverAA']['configOptions']['Pause VM'] = 'Server pausieren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[start]']['customconfigoption[start]'] = 'Server nach Erstellung starten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[start]']['tip'] = 'Sofern aktiviert, wird der Server nach der Erstellung gestartet';
-$_LANG['Rebooting container in progress'] = 'Der Container wird aktuell neugestartet';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Total'] = 'Total';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['table']['rate'] = 'Rate';
-$_LANG['serverCA']['network']['infoModal']['modal']['infoModal'] = 'Netzwerk Details';
-$_LANG['serverCA']['network']['infoModal']['ID'] = 'ID';
-$_LANG['serverCA']['network']['infoModal']['Name'] = 'Name';
-$_LANG['serverCA']['network']['infoModal']['Bridge'] = 'Bridge';
-$_LANG['serverCA']['network']['infoModal']['Firewall'] = 'Firewall';
-$_LANG['serverCA']['network']['infoModal']['MAC Address'] = 'MAC Adresse';
-$_LANG['serverCA']['network']['infoModal']['IP Address'] = 'IP Adresse';
-$_LANG['serverCA']['network']['infoModal']['Gateway'] = 'Gateway';
-$_LANG['serverCA']['network']['infoModal']['Tag'] = 'Tag';
-$_LANG['serverCA']['network']['infoModal']['Rate'] = 'Rate';
-$_LANG['serverCA']['network']['infoModal']['Unlimited'] = 'Unlimitiert';
-$_LANG['serverCA']['network']['infoModal']['baseCancelButton']['title'] = 'Schliessen';
-$_LANG['serverCA']['network']['mainContainer']['dataTable']['infoButton']['button']['infoButton'] = 'Mehr Details anzeigen';
-$_LANG['serverCA']['network']['infoModal']['Disabled'] = 'Deaktiviert';
-$_LANG['serverCA']['network']['infoModal']['Active'] = 'Aktiv';
-$_LANG['Unlimited'] ='Unlimitiert';
-$_LANG['Custom field VMID is empty.'] = 'Das Feld VMID ist leer.';
-$_LANG['serverCA']['backup']['The maximum size set for a backup has been exceeded. Please remove the old backup files.'] = 'Die maximale Grösse für Backups wurde erreicht. Bitte entfernen Sie alte Backups.';
-$_LANG["Disk downgrading is not possible until you remove additional disks."]="Das verkleinern von Festplatten ist nicht möglich, bis Sie andere Festplatten entfernt haben";
-$_LANG['FormValidators']['IP Address is not valid'] ='IP Adresse ist nicht gültig';
-$_LANG['errorCodeMessage']['No spice port'] ='Kein Spice port';
-$_LANG['serverCA']['backupJob']['The maximum size set for a backup has been exceeded. Please remove the old backup files.'] = 'Die maximale Grösse für Backups wurde erreicht. Bitte entfernen Sie alte Backups.';
-$_LANG['serverCA']['reinstall']['templateInstallModal']['templateInstallForm']['password']['tip'] = 'Server Passwort hier eingeben';
-$_LANG['snapshot feature is not available'] = 'Snapshots sind nicht verfügbar';
-$_LANG["You are not able to set %s of Disk Size. Current Disk Size: %s. Disk downgrading is not supported."] = "Sie können die Fesplatte nicht auf %s ändern. Die aktuelle Grösse beträgt: %s. Das verkleinern von Festplatten wird nicht unterstützt.";
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['leftSection']['customconfigoption[cicustom]']['customconfigoption[cicustom]'] = 'Eigene Cloud-Init Konfiguration';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['leftSection']['customconfigoption[cicustom]']['tip'] = "Geben Sie eigene Dateien an, durch welche die automatisch generierten ersetzt werden sollen.";
-
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['rightSection']['customconfigoption[tags][]']['ip_manager_integration_tag'] = 'Die angegebenen Tags funktionieren nicht mit dem IP Manager Modul.';
-$_LANG['serverCA']['disk']['mainContainer']['dataTable']['Adding, editing or removing disk will reboot the virtual machine.'] ='Mit dem hinzufügen, bearbeiten oder entfernen von Festplatten wird der Server neugestartet.';
-$_LANG['Your machine will be migrated to another server'] = 'Ihr Server wird auf einen anderen Server migriert';
-$_LANG["Task 'MigrateVm' already exist"] = "Der Server wird aktuell migriert";
-$_LANG['serverAA']['configOptions']['network'] = 'Netzwerk';
-$_LANG['serverAA']['configOptions']['disk'] = 'Festplatte';
-$_LANG['serverAA']['configOptions']['usb'] = 'USB';
-$_LANG['serverAA']['configOptions']['cpu'] = 'CPU';
-$_LANG['serverAA']['configOptions']['memory'] = 'RAM';
-$_LANG["Task 'Reinstall' already exist"]   = "Der Server wird aktuell neu installiert";
-$_LANG['The master hard disk cannot be deleted']='Die Hauptfestplatte kann nicht gelöscht werden';
-$_LANG['errorCodeMessage']['Private IP Adresses are not available.'] ='Private IP Adressen sind nicht verfügbar.';
-$_LANG['serverAA']['adminServicesTabFields']['migrateModal']['migrateForm']['online']['tip'] = 'Sofern aktiviert, wird der Server ohne herunterzufahren migriert.';
-$_LANG['serverCA']['reinstall']['mainContainer']['dataTable']['Select the template for reinstallation. If you proceed, all data located on the virtual machine will be lost.'] = 'Wählen Sie das Template für die Neuinstallation aus. Durch das Fortfahren, werden alle Dateien auf dem Server verloren gehen.';
-$_LANG['serverCA']['taskHistory']['vzdelsnapshot'] = "Snapshot löschen";
-$_LANG['serverCA']['taskHistory']['vzrollback']= "Rollback Snapshot";
-$_LANG['serverCA']['taskHistory']['hastop']	= 'Stop HA';
-$_LANG['serverCA']['taskHistory']['vzshutdown']  ="Server herunterfahren";
-$_LANG['serverCA']['taskHistory']['qmshutdown'] ="Server herunterfahren";
-$_LANG['serverCA']['taskHistory']['qmpause']  ="Sever pausieren";
-$_LANG['serverCA']['taskHistory']['qmresume'] ="Server fortsetzen";
-$_LANG['serverCA']['taskHistory']['hastart'] = 'Start HA';
-$_LANG['serverAA']['adminServicesTabFields']['year'] = 'Jahr';
-$_LANG['serverCA']['adminServicesTabFields']['year'] = 'Jahr';
-$_LANG['serverAA']['configOptions']['Hibernate VM'] = 'Hibernate VM';
-$_LANG['errorCodeMessage']['ProxmoxAddon is not installed or activated'] = 'Proxmox Modul ist nicht installiert oder aktiviert';
-$_LANG['Remove the snapshots before reinstallation.'] = 'Snapshots vor der Neuinstallation löschen.';
-$_LANG['Installation is now processing. The login information will be available in the noVNC console.'] = 'Die Installation wird aktuell durchgeführt. Die Logindaten werden in der VNC Konsole verfügbar sein.';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['sshPublicKeyDownloadButton']['button']['sshPublicKeyDownloadButton'] = 'Download SSH Public Key';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['sshPrivateKeyDownloadButton']['button']['sshPrivateKeyDownloadButton'] = 'Download SSH Private Key';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['sshPublicKeyDownloadButton']['button']['sshPublicKeyDownloadButton'] = 'Download SSH Public Key';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['sshPrivateKeyDownloadButton']['button']['sshPrivateKeyDownloadButton'] = 'Download SSH Private Key';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionSshkeys]']['customconfigoption[permissionSshkeys]'] = 'SSH Public Key';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionSshkeys]']['tip'] = 'Sofern aktiviert, kann der Kunde den "SSH Public Key" auf seinem Server bearbeiten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[snapshotJobs]']['customconfigoption[snapshotJobs]'] = 'Snapshot Aufgaben';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['containerSection']['rightSection']['customconfigoption[snapshotJobs]']['tip'] =' Geben Sie die maximale Anzahl für Snapshots ein oder "-1" um das Limit zu deaktivieren.';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['networkInterfacesDataTable'] = 'Netzwerk Interfaces';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['interfaceName'] = 'Name';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['hardwareAddress'] = 'Hardware Adresse';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['ipAdresses'] = 'IP Adressen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['guestAgentSection']['guestAgentSection'] = 'Gast Agent';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['guestAgentSection']['leftSection']['customconfigoption[agent]']['customconfigoption[agent]'] = 'Gast Agent';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['guestAgentSection']['leftSection']['customconfigoption[agent]']['tip'] = 'Sofern aktiviert, wird der Gast Agent in der Gastmaschine beim Start laufen und für Konfigurationsdaten suchen, welche auf dem Gastsystem bei der Initialisierung gespeichert werden können';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['guestAgentSection']['leftSection']['customconfigoption[agentServicePassword]']['customconfigoption[agentServicePassword]'] = 'Service Passwort ';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['guestAgentSection']['leftSection']['customconfigoption[agentServicePassword]']['tip'] = 'Sofern atkiviert, wird das Service Passwort verwendet';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['guestAgentSection']['rightSection']['customconfigoption[agentTemplateUser]']['customconfigoption[agentTemplateUser]'] = 'Template Nutzer';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['guestAgentSection']['rightSection']['customconfigoption[agentTemplateUser]']['tip'] = 'Sofern aktiviert, wird der erste Service Nutzer benutzt';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['guestAgentSection']['rightSection']['customconfigoption[agentConfigureNetwork]']['customconfigoption[agentConfigureNetwork]'] = 'Netzwerk konfigurieren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['guestAgentSection']['rightSection']['customconfigoption[agentConfigureNetwork]']['tip'] = 'Netzwerk automatisch konfigurieren (nur Windows)';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionSnapshotJob]']['customconfigoption[permissionSnapshotJob]'] = 'Snapshot Aufgaben';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionSnapshotJob]']['tip'] = 'Sofern aktiviert, kann der Kunde Snapshot Aufgaben erstellen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionSnapshotJobPeriod][]']['customconfigoption[permissionSnapshotJobPeriod][]'] = 'Snapshot Aufgabenperiode';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['rightSection']['customconfigoption[permissionSnapshotJobPeriod][]']['tip'] = 'Wähle die Snapshot Aufgabenperiode, welche für den Kunden verfügbar sein soll.';
-$_LANG['serverAA']['configOptions']['hourly'] = 'Stündlich';
-$_LANG['serverAA']['configOptions']['daily'] = 'Täglich';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['snapshotDataTable'] = 'Snapshots';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['jobDataTable'] = 'Aufgaben';
-$_LANG['serverCA']['snapshot']['mainContainer']['dataTable']['table']['vmstate']  = 'RAM inkludieren';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['createButton']['button']['createButton'] = 'Snapshot erstellen';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['deleteMassButton']['button']['deleteMassButton'] = 'Löschen';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['table']['name'] = 'Name';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['table']['status'] = 'Status';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['table']['vmstate'] = 'RAM inkludieren';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['table']['snaptime'] = 'Erstellt am';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['table']['description'] = 'Beschreibung';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['rollbackButton ']['button']['rollbackButton'] = 'Rollback';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['updateButton']['button']['updateButton'] = 'Bearbeiten';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['deleteButton']['button']['deleteButton'] = 'Löschen';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['createJobButton']['button']['createJobButton'] = 'Neuer Auftrag';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['deleteJobMassButton']['button']['deleteJobMassButton'] = 'Löschen';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['table']['days'] = 'Zeit';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['table']['created_at'] = 'Erstellt am';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['updateJobButton']['button']['updateJobButton'] = 'Bearbeiten';
-$_LANG['serverCA']['snapshot']['mainContainer']['snapshotTab']['dataTable']['deleteJobButton']['button']['deleteJobButton'] = 'Löschen';
-$_LANG['serverCA']['snapshot']['hourly'] = 'Stündlich';
-$_LANG['serverCA']['snapshot']['daily'] = 'Täglich';
-$_LANG['serverCA']['snapshot']['Monday'] = 'Montag';
-$_LANG['serverCA']['snapshot']['Tuesday'] = 'Dienstag';
-$_LANG['serverCA']['snapshot']['Wednesday'] = 'Mittwoch';
-$_LANG['serverCA']['snapshot']['Thursday'] = 'Donnerstag';
-$_LANG['serverCA']['snapshot']['Friday'] = 'Freitag';
-$_LANG['serverCA']['snapshot']['Saturday'] = 'Samstag';
-$_LANG['serverCA']['snapshot']['Sunday'] = 'Sonntag';
-$_LANG['serverCA']['snapshot']['createJobModal']['modal']['createJobModal'] = 'Neuer Snapshot Auftrag';
-$_LANG['serverCA']['snapshot']['createJobModal']['createJobForm']['period']['period'] = 'Periode';
-$_LANG['serverCA']['snapshot']['createJobModal']['createJobForm']['run_every']['run_every'] = 'Ausführen alle';
-$_LANG['serverCA']['snapshot']['createJobModal']['createJobForm']['name']['name'] = 'Name';
-$_LANG['serverCA']['snapshot']['createJobModal']['createJobForm']['vmstate']['vmstate'] = 'RAM inkludieren';
-$_LANG['serverCA']['snapshot']['createJobModal']['createJobForm']['description']['description'] = 'Beschreibung';
-$_LANG['serverCA']['snapshot']['createJobModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['snapshot']['createJobModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverCA']['snapshot']['createJobModal']['hourly'] = 'Stündlich';
-$_LANG['serverCA']['snapshot']['createJobModal']['daily'] = 'Täglich';
-$_LANG['serverCA']['snapshot']['createJobModal']['Monday'] = 'Montag';
-$_LANG['serverCA']['snapshot']['createJobModal']['Tuesday'] = 'Dienstag';
-$_LANG['serverCA']['snapshot']['createJobModal']['Wednesday'] = 'Mittwoch';
-$_LANG['serverCA']['snapshot']['createJobModal']['Thursday'] = 'Donnerstag';
-$_LANG['serverCA']['snapshot']['createJobModal']['Friday'] = 'Freitag';
-$_LANG['serverCA']['snapshot']['createJobModal']['Saturday'] = 'Samstag';
-$_LANG['serverCA']['snapshot']['createJobModal']['Sunday'] = 'Sonntag';
-$_LANG['serverCA']['snapshot']['createJobModal']['createJobForm']['days']['days'] = 'Tage';
-$_LANG['serverCA']['snapshot']['createJobModal']['createJobForm']['start_time']['start_time'] = 'Startzeit';
-$_LANG['Snapshot Job :name: has been created successfully']='Der Snapshot Auftrag :name: wurde erfolgreich erstellt';
-$_LANG['serverCA']['snapshot']['Every :run_every: hour']='Jede :run_every: Stunde';
-$_LANG['serverCA']['snapshot']['Every :run_every: hours']='Alle :run_every: Stunden';
-$_LANG['serverCA']['snapshot']['updateJobModal']['modal']['updateJobModal'] = 'Snapshot Auftrag bearbeiten';
-$_LANG['serverCA']['snapshot']['updateJobModal']['updateJobForm']['period']['period'] = 'Periode';
-$_LANG['serverCA']['snapshot']['updateJobModal']['updateJobForm']['run_every']['run_every'] = 'Ausführen alle';
-$_LANG['serverCA']['snapshot']['updateJobModal']['updateJobForm']['name']['name'] = 'Name';
-$_LANG['serverCA']['snapshot']['updateJobModal']['updateJobForm']['vmstate']['vmstate'] = 'RAM inkludieren';
-$_LANG['serverCA']['snapshot']['updateJobModal']['updateJobForm']['description']['description'] = 'Beschreibung';
-$_LANG['serverCA']['snapshot']['updateJobModal']['baseAcceptButton']['title'] = 'Bestätigen';
-$_LANG['serverCA']['snapshot']['updateJobModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverCA']['snapshot']['updateJobModal']['updateJobForm']['days']['days'] = 'Tage';
-$_LANG['serverCA']['snapshot']['updateJobModal']['updateJobForm']['start_time']['start_time'] = 'Startzeit';
-$_LANG['Snapshot Job :name: has updated successfully']='Der Snapshot Auftrag :name: wurde erfolgreich bearbeitet';
-$_LANG['serverCA']['snapshot']['deleteJobModal']['modal']['deleteJobModal'] = 'Snapshot Auftrag löschen';
-$_LANG['serverCA']['snapshot']['deleteJobModal']['deleteJobForm']['conforimJobDelete'] = 'Möchten Sie den Snapshot Auftrag :name: wirklich löschen?';
-$_LANG['serverCA']['snapshot']['deleteJobModal']['baseAcceptButton']['title'] =  'Bestätigen';
-$_LANG['serverCA']['snapshot']['deleteJobModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['Snapshot Job :name: has been deleted successfully']='Der Snapshot Auftrag :name: wurde erfolgreich gelöscht';
-$_LANG['serverCA']['snapshot']['The maximum number of snapshot jobs has been exceeded. Please remove the old snapshot jobs.'] = 'Das Maximum an Snapshot Aufträgen wurde erreicht. Bitte entfernen Sie alte Aufträge.';
-$_LANG['serverCA']['snapshot']['Your snapshot limit is :snapshotFilesLimit:. When you exceed this limit, the last snapshot will be replaced with a new one.'] = 'Ihr Snapshot Limit ist :snapshotFilesLimit:. Wenn Sie dieses Limit erreichen, wird der letzte Snapshot überschrieben.';
-$_LANG['FormValidators']['PleaseProvideASshPublicKey'] = 'Bitte geben Sie den SSH Public Key im OpenSSH Format an.';
-$_LANG['serverCA']['snapshot']['Yes'] = 'Ja';
-$_LANG['Private network limit exceeded']  ='Das Limit für private Netzwerk wurde erreicht';
-$_LANG['serverAA']['adminServicesTabFields']['createModal']['createForm']['cidr']['cidr']='CIDR';
-$_LANG['serverCA']['taskHistory']['qmclone']='Klinen';
-$_LANG['serverCA']['snapshot']['deleteJobMassModal']['modal']['deleteJobMassModal'] = 'Aufträge löschen';
-$_LANG['serverCA']['snapshot']['deleteJobMassModal']['deleteJobMassForm']['conforimDeleteJobMass'] = 'Möchten Sie die ausgewählten Snapshot Aufträge wirklich löschen?';
-$_LANG['serverCA']['snapshot']['deleteJobMassModal']['baseAcceptButton']['title'] =  'Bestätigen';
-$_LANG['serverCA']['snapshot']['deleteJobMassModal']['baseCancelButton']['title'] =  'Abbrechen';
-$_LANG['The selected snapshot jobs have been deleted successfully'] = 'Die ausgewählten Snapshot Aufträge wurden erfolgreich gelöscht';
-$_LANG['serverAA']['taskHistory']['qmreboot'] = 'Neustarten';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['templatDataTable'] = 'Neu installieren';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['templateInstallButton']['button']['templateInstallButton']  = 'Neu installieren';
-$_LANG['serverCA']['taskHistory']['vzstop'] ='Stop';
-$_LANG['serverAA']['configOptions']['PVESDNAdmin']='PVESDNAdmin';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[cloneOnTheSameStorage]']['customconfigoption[cloneOnTheSameStorage]'] = 'Auf demselben Speicher wie die Quelle klonen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[cloneOnTheSameStorage]']['tip'] = 'Aktivieren Sie diese Option, wenn Sie wollen, dass der Server auf demselben Speicher wie das Template geklont wird.';
-$_LANG['Disk :id:']='Festplatte :id:';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[featureKeyctl]']['customconfigoption[featureKeyctl]'] = 'Keyctl';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[featureKeyctl]']['tip'] = 'Container Zugriff zum erweiterten Feature keyctl erlauben';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[featureNesting]']['customconfigoption[featureNesting]'] = 'Nesting';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[featureNesting]']['tip'] = 'Container Zugriff zum erweiterten Feature nesting erlauben';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[featureNfs]']['customconfigoption[featureNfs]'] = 'NFS';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[featureNfs]']['tip'] = 'Container Zugriff zum erweiterten Feature NFS erlauben';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[featureCifs]']['customconfigoption[featureCifs]'] = 'CIFS';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[featureCifs]']['tip'] = 'Container Zugriff zum erweiterten Feature CIFS erlauben';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[featureFuse]']['customconfigoption[featureFuse]'] = 'FUSE';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[featureFuse]']['tip'] = 'Container Zugriff zum erweiterten Feature FUSE erlauben';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[featureMknod]']['customconfigoption[featureMknod]'] = ' Create Device Nodes';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['lxcConfigurationSection']['rightSection']['customconfigoption[featureMknod]']['tip'] = 'Container Zugriff zum erweiterten Feature device nodes erlauben';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['Features'] = 'Funktionen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[md-clear]']['customconfigoption[md-clear]'] = 'MD-CLEAR';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[md-clear]']['tip'] = 'Benötigt um dem Gast OS mitzuteilen ob MDS korrekt gelindert wurde';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[ibpb]']['customconfigoption[ibpb]'] = 'IBPB';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[ibpb]']['tip'] = 'Erlaubt verbesserte Spectre Linderung mit AMD CPUs';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[amd-ssbd]']['customconfigoption[amd-ssbd]'] = 'AMD-SSDB';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[amd-ssbd]']['tip'] = 'Verbessert die Spectre Linderungs Performance mit AMD CPUs, funktioniert am besten mit "virt-ssbd"';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[pdpe1gb]']['customconfigoption[pdpe1gb]'] = 'PDPE1GB';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[pdpe1gb]']['tip'] = 'Dem Gast OS 1GB Seiten erlauben, sofern von der Host Hardware unterstützt';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[hv-evmcs]']['customconfigoption[hv-evmcs]'] = 'HV-EVMCS';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[hv-evmcs]']['tip'] = 'Performance für Nested Virtualisierung verbessern. Funktioniert nur mit Intel CPUs.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[ssbd]']['customconfigoption[ssbd]'] = 'SSDB';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[ssbd]']['tip'] = 'Schutz für "Speculative Store Bypass" für Intel Modelle';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[virt-ssbd]']['customconfigoption[virt-ssbd]'] = 'VIRT-SSDB';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[virt-ssbd]']['tip'] = 'Basis für "Speculative Store Bypass" Schutz für AMD Modelle';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[amd-no-ssb]']['customconfigoption[amd-no-ssb]'] = 'AMD-NO-SSB';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[amd-no-ssb]']['tip'] = 'Benachrichtigt Gast OS, dass der Host nicht anfällig für Spectre ist bei AMD CPUs';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[hv-tlbflush]']['customconfigoption[hv-tlbflush]'] = 'HV-TLBFLUSH';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[hv-tlbflush]']['tip'] = 'Performance bei überbeanspruchtem Windows Gast OS verbessern. Kann zu Gast Bluescreens führen bei alten CPUs';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[aes]']['customconfigoption[aes]'] = 'AES';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['rightSection']['customconfigoption[aes]']['tip'] = 'AES Instruction set aktivieren für Hardware Beschleunigung.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['rightSection']['customconfigoption[ssd]']['customconfigoption[ssd]'] = 'SSD Emulation';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['diskSection']['rightSection']['customconfigoption[ssd]']['tip'] = 'SSD emulation ein-/ausschalten';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[additionalDiskSsd]']['customconfigoption[additionalDiskSsd]'] = 'SSD Emulation';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[additionalDiskSsd]']['tip'] = 'SSD emulation ein-/ausschalten';
-$_LANG['Default (LSI 53C895A)'] = 'Default (LSI 53C895A)';
-$_LANG['LSI 53C895A'] = 'LSI 53C895A';
-$_LANG['LSI 53C810'] = 'LSI 53C810';
-$_LANG['VirtIO SCSI'] = 'VirtIO SCSI';
-$_LANG['VirtIO SCSI single'] = 'VirtIO SCSI single';
-$_LANG['MegaRAID SAS 8708EM2'] = 'MegaRAID SAS 8708EM2';
-$_LANG['VMware PVSCSI'] = 'VMware PVSCSI';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[privateNetwork]']['customconfigoption[privateNetwork]'] = 'Privates Netzwerk';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['networkSection']['leftSection']['customconfigoption[privateNetwork]']['tip'] = 'Aktivieren Sie das, sofern Sie private Netzwerke automatisch erstellen lassen wollen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallOptionSection']['firewallOptionSection'] = 'Firewall Einstellungen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallOptionSection']['leftSection']['customconfigoption[firewalOptionEnable]']['customconfigoption[firewalOptionEnable]'] = 'Firewall aktivieren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallOptionSection']['leftSection']['customconfigoption[firewalOptionNdp]']['customconfigoption[firewalOptionNdp]'] = 'NDP aktivieren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallOptionSection']['leftSection']['customconfigoption[firewalOptionMacfilter]']['customconfigoption[firewalOptionMacfilter]'] = 'MAC Filter';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallOptionSection']['rightSection']['customconfigoption[firewalOptionDhcp]']['customconfigoption[firewalOptionDhcp]'] = 'DHCP aktivieren';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallOptionSection']['rightSection']['customconfigoption[firewalOptionRadv]']['customconfigoption[firewalOptionRadv]'] = 'Allow Router Advertisement';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['firewallOptionSection']['rightSection']['customconfigoption[firewalOptionIpfilter]']['customconfigoption[firewalOptionIpfilter]'] = 'IP Filter';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionFirewalOptions][]']['customconfigoption[permissionFirewalOptions][]'] = 'Firewall Einstellungen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['clientAreaSection']['leftSection']['customconfigoption[permissionFirewalOptions][]']['description'] = 'Wählen Sie die Firewall Einstellungen aus, welche im Kundenbereich verfügbar sein sollen.';
-$_LANG['Enable/Disable Firewall'] = 'Firewall aktivieren/deaktivieren';
-$_LANG['DHCP'] = 'DHCP';
-$_LANG['Allow Router Advertisement'] = 'Router Advertisement erlauben';
-$_LANG['NDP'] = 'NDP';
-$_LANG['MAC Filter'] = 'MAC Filter';
-$_LANG['IP Filter'] = 'IP Filter';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[bwlimit]']['customconfigoption[bwlimit]'] = 'Bandbreiten Limit klonen ';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[bwlimit]']['tip'] = 'I/O Bandbreitenlimit übersteuern (in KiB/s)';
-$_LANG['serverAA']['configOptions']['Linux 5.x - 2.6 Kernel'] = 'Linux 5.x - 2.6 Kernel';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['leftSection']['customconfigoption[checkResources]']['customconfigoption[checkResources]'] = 'Verfügbare Resourcen überprüfen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['leftSection']['customconfigoption[checkResources]']['tip'] = 'Wenn aktiviert, das Module prüft automatisch auf verfügbaren Resourcen, bevor die virtuelle Maschine erstellt wird';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['rightSection']['customconfigoption[resetUsageFirstDayOfMonth]']['customconfigoption[resetUsageFirstDayOfMonth]'] = 'Bandbreitendaten am ersten Tag des Monats zurücksetzen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mainSection']['rightSection']['customconfigoption[resetUsageFirstDayOfMonth]']['tip'] = 'Bandbreitendaten am ersten Tag des Monats zurücksetzen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[vgaMemory]']['customconfigoption[vgaMemory]'] = 'Grafikkartenspeicher';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['configurationSection']['leftSection']['customconfigoption[vgaMemory]']['tip'] = 'MiB';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['rightSection']['customconfigoption[cloudInitScript]']['customconfigoption[cloudInitScript]'] = 'Cloud-Init Script';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['cloudInitSection']['rightSection']['customconfigoption[cloudInitScript]']['tip'] = 'Das Cloud-init-Script auswählen, welches für die Erstellung der VM benutzt werden soll';
-$_LANG['serverAA']['adminServicesTabFields']['Percentage (%)'] = 'Prozentual (%)';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['IP Addresses'] = 'IP Addressen';
-$_LANG['serverAA']['home']['mainContainer']['serviceInformationDataTable']['sshPrivateKeyDownloadButton']['button']['baseModalDataTableActionButton'] = 'SSH private key herunterladen ';
-$_LANG['serverAA']['adminServicesTabFields']['sshPublicKeyDownloadModal']['modal']['sshPublicKeyDownloadModal'] = 'SSH Private Key herunterladen';
-$_LANG['serverAA']['adminServicesTabFields']['sshPublicKeyDownloadModal']['sshPublicKeyDownloadForm']['SSH Key you can download only once.'] = 'Der SSH Key kann nur einmal heruntergeladen werden.';
-$_LANG['serverAA']['adminServicesTabFields']['sshPublicKeyDownloadModal']['sshPrivateKeyDownloadButton']['button']['sshPrivateKeyDownloadButton'] = 'Bestätigen';
-$_LANG['serverAA']['adminServicesTabFields']['sshPublicKeyDownloadModal']['baseCancelButton']['title'] = 'Abbbrechen';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['sshPrivateKeyDownloadButton']['button']['baseModalDataTableActionButton'] = 'SSH private key herunterladen';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Features'] = 'Features';
-$_LANG['serverCA']['home']['sshPublicKeyDownloadModal']['modal']['sshPublicKeyDownloadModal'] = 'SSH Private Key herunterladen';
-$_LANG['serverCA']['home']['sshPublicKeyDownloadModal']['sshPublicKeyDownloadForm']['SSH Key you can download only once.'] = 'Der SSH Key kann nur einmal heruntergeladen werden.';
-$_LANG['serverCA']['home']['sshPublicKeyDownloadModal']['sshPrivateKeyDownloadButton']['button']['sshPrivateKeyDownloadButton'] = 'Bestätigen';
-$_LANG['serverCA']['home']['sshPublicKeyDownloadModal']['baseCancelButton']['title'] = 'Abbrechen';
-$_LANG['serverAA']['home']['mainContainer']['ipSetDataTable']['ipSetDataTable'] = 'IPSet';
-$_LANG['serverAA']['home']['mainContainer']['ipSetDataTable']['table']['name'] = 'Name';
-$_LANG['serverAA']['home']['mainContainer']['ipSetDataTable']['table']['comment'] = 'Beschreibung';
-$_LANG['serverAA']['home']['mainContainer']['ipSetDataTable']['table']['ipCidr'] = 'IP/CIDR';
-$_LANG['serverAA']['adminServicesTabFields']['createModal']['createForm']['network']['network'] = 'Netzwerk erstellen';
-$_LANG['serverAA']['adminServicesTabFields']['createModal']['createForm']['network']['description'] = 'VM Netzwerk erstellen';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['Percentage (%)'] = 'Prozentual (%)';
-$_LANG['serverCA']['home']['mainContainer']['serviceInformationDataTable']['IP Addresses'] = 'IP Addressen';
-$_LANG['ZSTD (fast and good)'] = 'ZSTD (schnell und gut)';
-$_LANG['serverCA']['backupJob']['zstd']= 'ZSTD (schnell und gut)';
-$_LANG['serverCA']['taskHistory']['qmconfig'] = 'Konfigurieren';
-$_LANG['Update the master disk size is restricted'] = 'Die Master-Disk-Grösse darf nicht geändert werden';
-$_LANG['errorCodeMessage']['Private IP Addresses are not available.'] ='Private IP addressen sind nicht verfügbar';
-$_LANG['serverAA']['home']['mainContainer']['dataTable']['table']['ipAddresses'] = 'IP Addressen';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[additionalDisk]']['customconfigoption[additionalDisk]'] = 'Zusätzliche Festplatte';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['additonalDisk']['rightSection']['customconfigoption[additionalDisk]']['tip'] = 'Aktivieren, wenn Sie die zusätzliche Festplatte automatisch generieren lassen wollen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['leftSection']['customconfigoption[mountPoint]']['customconfigoption[mountPoint]'] = 'Mount Point';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['mountPointSection']['leftSection']['customconfigoption[mountPoint]']['tip'] = 'Aktivieren, wenn der Mount-Point automatisch erstellt werden soll.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[bios]']['customconfigoption[bios]'] = 'BIOS';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['rightSection']['customconfigoption[bios]']['tip'] = 'BIOS auswählen.';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[machine]']['customconfigoption[machine]'] = 'Qemu Machine Typ';
-$_LANG['serverAA']['product']['mainContainer']['mainForm']['advancedSection']['leftSection']['customconfigoption[machine]']['tip'] = 'Qemu Machine-Typ angeben (pc|pc(-i440fx)?-\d+(\.\d+)+(\+pve\d+)?(\.pxe)?|q35|pc-q35-\d+(\.\d+)+(\+pve\d+)?(\.pxe)?|virt(?:-\d+(\.\d+)+)?(\+pve\d+)?)';
-$_LANG['serverAA']['configOptions']['SeaBIOS'] = 'SeaBIOS';
-$_LANG['serverAA']['configOptions']['OVMF (UEFI)'] = 'OVMF (UEFI)';
-$_LANG['Delete public network is restricted']= 'Public Netzwerke dürfen nicht gelöscht werden';

+ 0 - 33
langs/match.php

@@ -1,33 +0,0 @@
-#!/usr/bin/php
-<?php
-$germanContent = file("german.php");
-$germanLang = splitToLang($germanContent);
-$englishContent = file("english.php");
-$englishLang = splitToLang($englishContent);
-
-
-foreach ($englishContent as $line) {
-    $langs = explode("=", $line);
-    $lang = rtrim($langs[0]);
-    //echo $lang[0];
-    if (!in_array($lang,$germanLang)) {
-	echo "$line";
-    }
-}
-
-
-
-
-function splitToLang($content) {
-    $result = array();
-    foreach ($content as $line) {
-	$langs = explode("=", $line);
-	$lang = rtrim($langs[0]);
-	$result[] = $lang;
-    }
-    return $result;
-}
-
-
-
-?>

+ 2 - 2
logo.png


+ 15 - 0
packages/Provisioning/Config/PackageConfiguration.php

@@ -193,3 +193,18 @@ function proxmoxVPS_ClientArea($params)
     return $appContext->runApp('clientarea', $params);
 }
 
+function proxmoxVPS_GetLicenseData($force = false)
+{
+    $class  = '';
+
+    if(!class_exists($class ))
+    {
+        return [];
+    }
+    $class = '\\'.$class;
+
+    return $class::getLicenseData($force);
+}
+
+
+

+ 4 - 1
storage/.htaccess

@@ -360,4 +360,7 @@
 #layers .selectize-control.single .selectize-dropdown.single .option {
     white-space: normal;
 }
-/* end of add multiline for long selectize option values(dropdown)*/
+/* end of add multiline for long selectize option values(dropdown)*/
+form[name='frm2'] .selectize-control {
+    height: inherit!important;
+}

+ 2 - 1
templates/admin/assets/fonts/icons/Material-Design-Iconic-Font.eot

@@ -175,7 +175,7 @@ function mgVuePageControler(controlerId) {
 
     //close modal on background click
     this.closeModal = function(event){
-        var clickedEl = document.elementFromPoint(event.clientX, event.clientY);
+        /*var clickedEl = document.elementFromPoint(event.clientX, event.clientY);
         if ($(clickedEl).hasClass('lu-modal') && $(clickedEl).hasClass('show')) {
             //ff
             if (typeof event.explicitOriginalTarget !== 'undefined' && $(event.explicitOriginalTarget).hasClass('lu-modal') && $(event.explicitOriginalTarget).hasClass('show')) {
@@ -185,5 +185,6 @@ function mgVuePageControler(controlerId) {
                 this.destructModal();
             }
         }
+         */
     }
 }

+ 1 - 11
templates/admin/assets/js/defaultComponents/__vhook_integration.js

@@ -1152,16 +1152,6 @@
   padding-left: 8px;
 }
 
-@media (min-width: 514px) {
-  .lu-col-sm-16p {
-    -webkit-box-flex: 0;
-    flex: 0 0 16.66667%;
-    max-width: 16.66667%;
-    padding-right: 8px;
-    padding-left: 8px;
-  }
-}
-
 @media (min-width: 514px) {
   .lu-col-sm-20p {
     -webkit-box-flex: 0;
@@ -24548,6 +24538,6 @@ table.lu-dataTable {
     width: 56px;
     border-width: 4px;
 }
-#layers .table.dataTable>thead .sorting:before, table.dataTable>thead .sorting_asc:before, table.dataTable>thead .sorting_asc_disabled:before, table.dataTable>thead .sorting_desc:before, table.dataTable>thead .sorting_desc_disabled:before {
+#layers .lu-table.dataTable>thead .sorting:before, table.dataTable>thead .sorting_asc:before, table.dataTable>thead .sorting_asc_disabled:before, table.dataTable>thead .sorting_desc:before, table.dataTable>thead .sorting_desc_disabled:before {
   content: "" !important;
 }

+ 2 - 1
templates/client/default/assets/css/mg_styles.css

@@ -175,7 +175,7 @@ function mgVuePageControler(controlerId) {
 
     //close modal on background click
     this.closeModal = function(event){
-        var clickedEl = document.elementFromPoint(event.clientX, event.clientY);
+      /*  var clickedEl = document.elementFromPoint(event.clientX, event.clientY);
         if ($(clickedEl).hasClass('lu-modal') && $(clickedEl).hasClass('show')) {
             //ff
             if (typeof event.explicitOriginalTarget !== 'undefined' && $(event.explicitOriginalTarget).hasClass('lu-modal') && $(event.explicitOriginalTarget).hasClass('show')) {
@@ -185,5 +185,6 @@ function mgVuePageControler(controlerId) {
                 this.destructModal();
             }
         }
+       */
     }
 }

+ 9 - 3
templates/client/default/assets/js/defaultComponents/__vhook_integration.js

@@ -465,7 +465,7 @@ var mgDefauleVueObject = {
                         console.log('Action Failed');
                     }
                 },
-                ajaxAction : function(event, targetId, namespace, index, postData) {
+                ajaxAction : function(event, targetId, namespace, index, postData, addSpinner=false) {
                     var self = this;
                     self.refreshUrl();
                     self.initRefreshActions(event, targetId);
@@ -474,8 +474,14 @@ var mgDefauleVueObject = {
                     self.addUrlComponent('index', index);
                     self.getActionId(event);
                     self.addUrlComponent('ajax', '1');
+                    if (addSpinner) {
+                        self.showSpinner(event);
+                    }
                     $.post(self.targetUrl, postData)
                         .done(function( data ) {
+                            if (addSpinner) {
+                                self.hideSpinner(event);
+                            }
                             data = data.data;
                             self.addAlert(data.status, data.message);
                             self.$nextTick(function() {
@@ -483,8 +489,8 @@ var mgDefauleVueObject = {
                                     window[data.callBackFunction](data, targetId, event);
                                 }
                             });
-                            if(data.status === 'success'){
-
+                            if(data.status === 'success' &&  data.refreshIds !== undefined){
+                                self.runRefreshActions((data && typeof data.refreshIds !== undefined) ? data.refreshIds : null, data);
                             }
                     }, 'json');
                     self.refreshUrl();               

+ 3 - 0
templates/client/default/assets/js/defaultComponents/ajaxFieldForDataTable.js

@@ -289,6 +289,9 @@ mgJsComponentHandler.addDefaultComponent('mg-datatable', {
         },
         getFilters: function () {
             return this.$store.getters.getComponentData(this.component_id, 'filters');
+        },
+        buttonAction: function(event, targetId){
+            mgPageControler.vueLoader.ajaxAction(event, targetId, getItemNamespace(targetId), getItemIndex(targetId),null,true);
         }
     }
 });

+ 11 - 351
templates/client/default/assets/js/defaultComponents/dataTableSelectFilter.js

@@ -1,358 +1,18 @@
-{if $currentPageName == 'Home'}
-    {if $modulecustombuttonresult}
-        {if $modulecustombuttonresult == "success"}
-            {include file="$template/includes/alert.tpl" type="success" msg=$LANG.moduleactionsuccess textcenter=true idname="alertModuleCustomButtonSuccess"}
-        {else}
-            {include file="$template/includes/alert.tpl" type="error" msg=$LANG.moduleactionfailed|cat:' ':$modulecustombuttonresult textcenter=true idname="alertModuleCustomButtonFailed"}
-        {/if}
-    {/if}
-    {if $pendingcancellation}
-        {include file="$template/includes/alert.tpl" type="error" msg=$LANG.cancellationrequestedexplanation textcenter=true idname="alertPendingCancellation"}
-    {/if}
-    {if $unpaidInvoice}
-        <div class="alert alert-{if $unpaidInvoiceOverdue}danger{else}warning{/if}" id="alert{if $unpaidInvoiceOverdue}Overdue{else}Unpaid{/if}Invoice">
-            <div class="pull-right">
-                <a href="viewinvoice.php?id={$unpaidInvoice}" class="btn btn-xs btn-default">
-                    {lang key='payInvoice'}
-                </a>
-            </div>
-            {$unpaidInvoiceMessage}
-        </div>
-    {/if}
-    <div class="tab-content margin-bottom">
-        <div class="tab-pane fade show active" id="tabOverview">
-            {if $tplOverviewTabOutput}
-                    {$tplOverviewTabOutput}
-            {else}
-            <div class="section">
-                <div class="product-details">
-                    <div class="row row-eq-height row-eq-height-sm">
-                        <div class="col-md-6">
-                            <div class="product-holder product-status-{$rawstatus|strtolower}" style="min-height: unset; height: 210px;">
-                                <div class="product-content">
-                                    <div class="product-image">
-                                        <div class="feature-icon">
-                                            <img src="/templates/croster/thurdata/logoVPS-color.svg" class="img-fluid" style="height:100px;">
-                                        </div>
-                                    </div>
-                                    <h4>{$domain}</h4>
-                                    <div class="status-sticker-wrapper">
-                                        <div class="status-sticker product-status-{$rawstatus|strtolower}">
-                                            {$status}
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                        <div class="col-md-6">
-                            <div class="product-info" style="min-height: unset; height: 210px;">
-				<table width="100%" border="0">
-					<tr>
-						<td class="list-heading" style="font-size: 85%;">{$LANG.clientareahostingregdate}</td>
-						<td class="list-text"  style="font-size: 85%;">{$regdate}</td>
-					</tr>
-					{if $billingcycle != 'Gratis-Account'}
-						<tr>
-							<td class="list-heading" style="font-size: 85%;">{$LANG.firstpaymentamount}</td>
-							<td class="list-text"  style="font-size: 85%;">{$firstpaymentamount}</td>
-						</tr>
-						<tr>
-							<td class="list-heading" style="font-size: 85%;">{$LANG.recurringamount}</td>
-							<td class="list-text"  style="font-size: 85%;">{$recurringamount}</td>
-						</tr>
-						<tr>
-							<td class="list-heading" style="font-size: 85%;">{$LANG.orderbillingcycle}</td>
-							<td class="list-text"  style="font-size: 85%;">{$billingcycle}</td>
-						</tr>
-						<tr>
-							<td class="list-heading" style="font-size: 85%;">{$LANG.clientareahostingnextduedate}</td>
-							<td class="list-text"  style="font-size: 85%;">{$nextduedate}</td>
-						</tr>
-						<tr>
-							<td class="list-heading" style="font-size: 85%;">{$LANG.orderpaymentmethod}</td>
-							<td class="list-text"  style="font-size: 85%;">{$paymentmethod}</td>
-						</tr>
-					{else}
-						<tr>
-							<td class="list-heading" style="font-size: 85%;"><strong>Trial Account</strong></td>
-							    {if ($smarty.now - ($regdate|@strtotime)) > 950400} {* wenn Heute - RegisterDatum > 11 Tage *}
-									<td class="list-text" style="color:yellow;font-size:85%;">Endet in {(14 - (($smarty.now - ($regdate|@strtotime)) / 86400)|round)} Tagen</td>
-								{elseif ($smarty.now - ($regdate|@strtotime)) > 1123200} {* wenn Heute - RegisterDatum > 13 Tage *}
-									<td class="list-text" style="color:red;font-size:85%;">Letzter Tag der Trial Periode</td>
-								{else}
-									<td class="list-text" style="font-size: 85%;">Endet in {(14 - (($smarty.now - ($regdate|@strtotime)) / 86400)|round)} Tagen</td>
-								{/if}
-							</tr>
-							<tr>
-								<td colspan="2"><br /><br /></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td><a href="/upgrade.php?type=package&id={$id}" class="btn btn-block btn-primary">Jetzt upgraden</a></td>
-							</tr>
-					{/if}
-				    </table>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            {*
-                {if $showcancelbutton || $packagesupgrade}
-                    <div class="row">
-                        {if $packagesupgrade}
-                            <div class="col-xs-{if $showcancelbutton}6{else}12{/if}">
-                                <a href="upgrade.php?type=package&amp;id={$id}" class="btn btn-block btn-primary">{$LANG.upgrade}</a>
-                            </div>
-                        {/if}
-                        {if $showcancelbutton}
-                            <div class="col-xs-{if $packagesupgrade}6{else}12{/if}">
-                                <a href="clientarea.php?action=cancel&amp;id={$id}" class="btn btn-block btn-danger {if $pendingcancellation}disabled{/if}">{if $pendingcancellation}{$LANG.cancellationrequested}{else}{$LANG.clientareacancelrequestbutton}{/if}</a>
-                            </div>
-                        {/if}
-                    </div>
-                {/if}
-            *}
-            {if $systemStatus == 'Active'}
-                {foreach $hookOutput as $output}
-                    <div class="section">
-                        <div>
-                            {$output}
-                        </div>
-                        <div class=" clearfix"></div>
-                    </div>
-                {/foreach}
-                {if $domain || $moduleclientarea || $configurableoptions || $customfields || $lastupdate}
-                    <div class="section">
-                        <div class="card panel panel-tabs">
-                            <div class="card-header">
-                                <ul class="nav nav-pills card-header-pills flex-column flex-md-row">
-                                    {if $domain}
-                                        <li class="nav-item">
-                                            <a href="#domain" data-toggle="tab" class="nav-link active"><i class="fas fa-globe fa-fw"></i> {lang key='manage'}</a>
-                                        </li>
-                                    {/if}
-                                    {if $configurableoptions}
-                                        <li class="nav-item">
-                                            <a href="#configoptions" data-toggle="tab" class="nav-link{if !$domain && !$moduleclientarea} active{/if}"><i class="fas fa-cubes fa-fw"></i>Details</a>
-                                        </li>
-                                    {/if}
-                                    {if $metricStats}
-                                        <li class="nav-item">
-                                            <a href="#metrics" data-toggle="tab" class="nav-link{if !$domain && !$moduleclientarea && !$configurableoptions} active{/if}"><i class="fas fa-chart-line fa-fw"></i> {lang key='metrics.title'}</a>
-                                        </li>
-                                    {/if}
-                                    {if $customfields}
-                                        <li class="nav-item">
-                                            <a href="#additionalinfo" data-toggle="tab" class="nav-link{if !$domain && !$moduleclientarea && !$metricStats && !$configurableoptions} active{/if}"><i class="fas fa-info fa-fw"></i>Zugangsdaten</a>
-                                        </li>
-                                    {/if}
-                                    <!--
-                                    {if $lastupdate}
-                                        <li class="nav-item">
-                                            <a href="#resourceusage" data-toggle="tab" class="nav-link{if !$domain && !$moduleclientarea && !$configurableoptions && !$customfields} active{/if}"><i class="fas fa-inbox fa-fw"></i> {lang key='resourceUsage'}</a>
-                                        </li>
-                                    {/if}
-                                    -->
-                                </ul>
-                            </div>
-                            <div class="card-body">
-                                <div class="tab-content">
-                                    {if $configurableoptions}
-                                        <div class="tab-pane fade{if !$domain && !$moduleclientarea} show active{/if}" role="tabpanel" id="configoptions">
-                                        <table width="100%" cellspacing="0" cellpadding="0" class="frame">
-                                            <tr>
-                                            <td>
-                                                <table width="100%" border="0" cellpadding="10" cellspacing="0" class="table table-striped table-framed">
-                                                <tr>
-                                                    <td align='left'>Servername</td>
-                                                    <td align="left">{$domain}</td>
-                                                </tr>
-                                                <tr>
-                                                    <td align='left'>IP Adresse</td>
-                                                    <td align="left">{$dedicatedip}</td>
-                                                </tr>
-{* bug, VM Template Change are ignored by changepackeage & reinstall
-                                                <tr>
-                                                    <td align='left'>VM Template</td>
-                                                    <td align="left">{$moduleParams.configoptions['VM Template']}</td>
-                                                </tr>
-*}                                            
-                                                <tr>
-                                                    <td align='left'>CPU Cores</td>
-                                                    <td align="left">{$moduleParams.configoptions['The number of cores per socket']}</td>
-                                                </tr>
-                                                <tr>
-                                                    <td align='left'>Hautspeicher</td>
-                                                    <td align="left">{$moduleParams.configoptions['Amount of RAM']} GB</td>
-                                                </tr>
-                                                <tr>
-                                                    <td align='left'>Festplattenplatz</td>
-                                                    <td align="left">{$moduleParams.configoptions['Disk Space']} GB</a></td>
-                                                </tr>
-                                                </table>
-                                            </td>
-                                            </tr>
-                                        </table>
-                                        </div>
-                                    {/if}
-                                    {if $metricStats}
-                                        <div class="tab-pane fade{if !$domain && !$moduleclientarea && !$configurableoptions} show active{/if}" role="tabpanel" id="metrics">
-                                            <p>{lang key='metrics.explanation'}</p>
-                                            <table class="table table-striped mb-1 table-solid-bottom-border-light-gray">
-                                                <tr>
-                                                    <th>{lang key='metrics.metric'}</th>
-                                                    <th>{lang key='metrics.currentUsage'}</th>
-                                                    <th>{lang key='metrics.pricing'}</th>
-                                                    <th>{lang key='metrics.lastUpdated'}</th>
-                                                </tr>
-                                                {foreach $metricStats as $metric}
-                                                    <tr>
-                                                        <td>{$metric.displayName}</td>
-                                                        <td>{$metric.currentValue|round:1}</td>
-                                                        <td>
-                                                            {if count($metric.pricing) > 1}
-                                                                {lang key='metrics.startingFrom'} {$metric.lowestPrice} / {if $metric.unitName}{$metric.unitName}{else}{lang key='metrics.unit'}{/if}
-                                                                <br>
-                                                                <button type="button" class="btn btn-default btn-xs" data-toggle="modal" data-target="#modalMetricPricing-{$metric.systemName}">
-                                                                    {lang key='metrics.viewPricing'}
-                                                                </button>
-                                                            {elseif count($metric.pricing) == 1}
-                                                                {$metric.lowestPrice} / {if $metric.unitName}{$metric.unitName}{else}{lang key='metrics.unit'}{/if}
-                                                                {if $metric.includedQuantity > 0} ({$metric.includedQuantity|round:1} {lang key='metrics.includedNotCounted'}){/if}
-                                                            {else}
-                                                                &mdash;
-                                                            {/if}
-                                                            {include file="$template/usagebillingpricing.tpl"}
-                                                        </td>
-                                                        <td>{if is_string($metric.lastUpdated)}{$metric.lastUpdated}{else}{$metric.lastUpdated->diffForHumans()}{/if}</td>
-                                                    </tr>
-                                                {/foreach}
-                                            </table>
-                                        </div>
-                                    {/if}
-                                    {if $domain}
-                                        <div class="tab-pane fade show active" role="tabpanel" id="domain">
-                                            <table width="100%" cellspacing="0" cellpadding="0" class="frame">
-                                                <tr>
-                                                    <td align='center'>
-                                                        <div class="mg-wrapper body" data-target=".body" data-spy="scroll" data-twttr-rendered="true">
-                                                            <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet">
-                                                            <link rel="stylesheet" href="{$assetsURL}/css/layers-ui.css">
-                                                            <link rel="stylesheet" href="{$assetsURL}/css/mg_styles.css">
-                                                            {if $isCustomModuleCss}
-                                                                <link rel="stylesheet" href="{$customAssetsURL}/css/module_styles.css">
-                                                            {/if}
-                                                            <div class="full-screen-module-container" id="layers">
-                                                                <div class="lu-app">
-                                                                    {$content}
-                                                                </div>
-                                                            </div>
-                                                        </div>
-                                                    </td>
-                                                </tr>
-                                            </table>
-                                        </div>
-                                    {/if}
-                                    {if $customfields}
-                                        <div class="tab-pane fade{if !$domain && !$moduleclientarea && !$configurableoptions && !$metricStats} show active{/if}" role="tabpanel" id="additionalinfo">
-                                            <table width="100%" cellspacing="0" cellpadding="0" class="frame">
-                                                <tr>
-                                                    <td>
-                                                        <table width="100%" border="0" cellpadding="10" cellspacing="0" class="table table-striped table-framed">
-                                                            <tr>
-                                                                <td align='left'>Admin Username</td>
-                                                                <td align='left'>{if $moduleParams.customfields['ciuser']}{$moduleParams.customfields['ciuser']}{else}root{/if}</td>
-                                                            </tr>
-                                                            <tr>
-                                                                <td align='left'>SSH-Key</td>
-                                                                <td align="left">{assign var=keyName value=' '|explode:$moduleParams.customfields['sshkeys']}{$keyName[2]}</td>
-                                                            </tr>
-                                                        </table>
-                                                    </td>
-                                                </tr>
-                                            </table>
-                                        </div>
-                                    {/if}
-                                    {if $lastupdate}
-                                        <div class="tab-pane fade" role="tabpanel" id="resourceusage" align="center">
-                                            <table width="100%" cellspacing="0" cellpadding="0" class="frame">
-                                                <tr>
-                                                    <td align="center">
-                                                        <div class="col-sm-10">
-                                                                <h4>{lang key='diskSpace'} %</h4>
-                                                                <input type="text" value="{$diskpercent|substr:0:-1}" class="dial-usage" data-width="100" data-height="100" data-min="0" data-readOnly="true" />
-                                                                <p>{($diskusage / 1024)|round:1} GB / {($disklimit / 1024)|round:1} GB</p>
-                                                        </div>
-                                                        <div class="clearfix"></div>
-                                                        <p class="text-muted">{lang key='clientarealastupdated'}: {$lastupdate}</p>
-                                                    </td>
-                                                    <td align="center">
-                                                        <div class="col-sm-10">
-                                                                <h4>{lang key='bandwidth'} %</h4>
-                                                                <input type="text" value="{$bwpercent|substr:0:-1}" class="dial-usage" data-width="100" data-height="100" data-min="0" data-readOnly="true" />
-                                                                <p>{($bwusage / 1024)|round:1} GB / {if $bwlimit == 'Unbegrenzt'}{$bwlimit}{else}{($bwlimit / 1024)|round:1} GB{/if}</p>
-                                                        </div>
-                                                        <div class="clearfix"></div>
-                                                        <p class="text-muted">{lang key='clientarealastupdated'}: {$lastupdate}</p>
-                                                    </td>
-                                                </tr>
-                                            </table>
-                                            <script src="{$BASE_PATH_JS}/jquery.knob.js"></script>
-                                            <script>
-                                                jQuery(function() {
-                                                    jQuery(".dial-usage").knob({
-                                                        'format': function(v) {
-                                                            alert(v);
-                                                        }
-                                                    });
-                                                });
-                                            </script>
-                                        </div>
-                                    {/if}
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                {/if}
-            {else}
-                <div class="alert-lg no-data">
-                    <div class="icon">
-                        <i class="fas fa-exclamation-triangle"></i>
-                    </div>
-                    <div class="text">
-                        {if $suspendreason}
-                            <strong>{$suspendreason}</strong><br />
-                        {/if}
-                        {$LANG.cPanel.packageNotActive} {$status}.<br />
-                        {if $systemStatus eq "Pending"}
-                            {$LANG.cPanel.statusPendingNotice}
-                        {elseif $systemStatus eq "Suspended"}
-                            {$LANG.cPanel.statusSuspendedNotice}
-                        {/if}
-                    </div>
-                </div>
-            {/if}
-        {/if}
-    </div>
-</div>
-{else}
-    <div class="mg-wrapper body" data-target=".body" data-spy="scroll" data-twttr-rendered="true">
+<div class="mg-wrapper body" data-target=".body" data-spy="scroll" data-twttr-rendered="true">
 
-        <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet">
-        <link rel="stylesheet" href="{$assetsURL}/css/layers-ui.css">
-        <link rel="stylesheet" href="{$assetsURL}/css/mg_styles.css">
-        {if $isCustomModuleCss}
-            <link rel="stylesheet" href="{$customAssetsURL}/css/module_styles.css">
-        {/if}
+    <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet">
+    <link rel="stylesheet" href="{$assetsURL}/css/layers-ui.css">
+    <link rel="stylesheet" href="{$assetsURL}/css/mg_styles.css">
+    {if $isCustomModuleCss}
+        <link rel="stylesheet" href="{$customAssetsURL}/css/module_styles.css">
+    {/if}
 
-        <div class="full-screen-module-container" id="layers">
-            <div class="lu-app">
-                {$content}
-            </div>
+    <div class="full-screen-module-container" id="layers">
+        <div class="lu-app">
+            {$content}
         </div>
     </div>
-{/if}
+</div>
 
 {if $isDebug}
     <script type="text/javascript" src="https://unpkg.com/vue"></script>

+ 36 - 0
templates/client/default/controlers/pageNotFound.tpl

@@ -0,0 +1,36 @@
+{**********************************************************************
+* ProxmoxVps product developed. (2017-10-30)
+* *
+*
+*  CREATED BY MODULESGARDEN       ->       http://modulesgarden.com
+*  CONTACT                        ->       contact@modulesgarden.com
+*
+*
+* This software is furnished under a license and may be used and copied
+* only  in  accordance  with  the  terms  of such  license and with the
+* inclusion of the above copyright notice.  This software  or any other
+* copies thereof may not be provided or otherwise made available to any
+* other person.  No title to and  ownership of the  software is  hereby
+* transferred.
+*
+*
+**********************************************************************}
+
+{**
+* @author Sławomir Miśkowicz <slawomir@modulesgarden.com>
+*}
+
+<div class="lu-form-group">
+    <label class="lu-form-label">
+        {if $rawObject->isRawTitle()}{$rawObject->getRawTitle()}{elseif $rawObject->getTitle()}{$MGLANG->T($rawObject->getTitle())}{/if}
+        {if $rawObject->getDescription()}
+            <i data-title="{$MGLANG->T($rawObject->getDescription())}" data-toggle="lu-tooltip" class="lu-i-c-2x lu-zmdi lu-zmdi-help-outline lu-form-tooltip-helper"></i>
+        {/if}
+    </label>
+    <input class="lu-form-control" type="file" placeholder="{$rawObject->getPlaceholder()}" name="{$rawObject->getName()}"
+           id="{$rawObject->getId()}"
+           value="{$rawObject->getValue()}" {if $rawObject->isDisabled()}disabled="disabled"{/if}
+           {foreach $htmlAttributes as $aValue} {$aValue@key}="{$aValue}" {/foreach}>
+    <div class="lu-form-feedback lu-form-feedback--icon" hidden="hidden">
+    </div>    
+</div>

+ 1 - 1
templates/client/default/ui/core/default/widget/forms/fields/hidden.tpl

@@ -27,7 +27,7 @@ class ResponseHeaderBagTest extends TestCase
             'ETag' => 'xyzzy',
             'Content-MD5' => 'Q2hlY2sgSW50ZWdyaXR5IQ==',
             'P3P' => 'CP="CAO PSA OUR"',
-            'WWW-Authenticate' => 'Basic realm="WallyWorld"',
+            'WWW-ApiAuthenticate' => 'Basic realm="WallyWorld"',
             'X-UA-Compatible' => 'IE=edge,chrome=1',
             'X-XSS-Protection' => '1; mode=block',
         );

+ 2 - 2
vendor/symfony/http-foundation/Tests/ResponseTest.php

@@ -5,10 +5,10 @@
   "license": "proprietary",
   "category": "provisioning",
   "description": {
-    "name": "Proxmox VPS",
+    "name": "Proxmox VE VPS",
     "tagline": "Let your clients remotely access consoles, view usage graphs, manage backups and much more right in WHMCS.",
     "short": "Let your clients remotely access consoles, view usage graphs, manage backups and much more right in WHMCS.",
-    "long": "ModulesGarden Proxmox VPS For WHMCS is an innovatory module that will automate all stages of provisioning virtual servers, from delivery to close management. Owing to clear configuration, you will quickly and capably set up ready products in your WHMCS, then offer them directly to customers!\nWith the mass of components implemented straight into the client area, your customers will be able to handle all crucial elements of their virtual machines, including backups and firewall, as well as access noVNC, SPICE, or Xterm.js console, study graphs and statistics, and so much more. A further point worthy of your note is support for Cloud-Init for the KVM virtualization type, enabling the automatic application of user data to your cloud instances. The module also features an incredible Proxmox Addon that will help you take close control over your servers, IP addresses and clusters - without ever needing to leave WHMCS."
+    "long": "ModulesGarden Proxmox VE VPS For WHMCS is an innovatory module that will automate all stages of provisioning virtual servers, from delivery to close management. Owing to clear configuration, you will quickly and capably set up ready products in your WHMCS, then offer them directly to customers!\nWith the mass of components implemented straight into the client area, your customers will be able to handle all crucial elements of their virtual machines, including backups and firewall, as well as access noVNC, SPICE, or Xterm.js console, study graphs and statistics, and so much more. A further point worthy of your note is support for Cloud-Init for the KVM virtualization type, enabling the automatic application of user data to your cloud instances. The module also features an incredible Proxmox Addon that will help you take close control over your servers, IP addresses and clusters - without ever needing to leave WHMCS."
   },
   "logo": {
     "filename": "logo.png"