Initial commit

This commit is contained in:
2018-07-22 11:16:48 +08:00
commit f5ecf0622b
417 changed files with 50664 additions and 0 deletions
+647
View File
@@ -0,0 +1,647 @@
<html>
<head>
<link rel="stylesheet" type="text/css" href="../../lib/css/themes/jquery-ui/redmond/jquery-ui.min.css"/>
<script type="text/javascript" src="../../lib/js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="../../socket.io/socket.io.js"></script>
<script type="text/javascript" src="../../lib/js/jquery-ui-1.10.3.full.min.js"></script>
<link rel="stylesheet" type="text/css" href="../../css/adapter.css"/>
<script type="text/javascript" src="../../js/translate.js"></script>
<script type="text/javascript" src="../../js/adapter-settings.js"></script>
<script type="text/javascript" src="words.js"></script>
<style>
.number {
width: 70px
}
</style>
<script type="text/javascript">
var supportedSockets = ['socketio'];
function showHideSettings() {
if ($('#secure').prop('checked')) {
$('#_certPublic').show();
$('#_certPrivate').show();
$('#_certChained').show();
$('.le-settings').show();
if ($('#leEnabled').prop('checked')) {
$('.le-sub-settings').show();
if ($('#leUpdate').prop('checked')) {
$('.le-sub-settings-update').show();
} else {
$('.le-sub-settings-update').hide();
}
} else {
$('.le-sub-settings').hide();
}
} else {
$('#_certPublic').hide();
$('#_certPrivate').hide();
$('#_certChained').hide();
$('#auth').prop('checked', false);
$('.le-settings').hide();
}
if ($('#auth').prop('checked')) {
$('#secure').prop('checked', true);
$('#defaultUser').val('admin');
$('.defaultUser').hide();
$('#_ttl').show();
} else {
$('.defaultUser').show();
$('#_ttl').hide();
}
if ($('#whiteListEnabled').prop('checked')) {
$('.white-list-settings').show();
} else {
$('.white-list-settings').hide();
}
}
// the function loadSettings has to exist ...
function load(settings, onChange) {
$('#tabs').tabs();
if (!settings) return;
if (!settings.lePort) settings.lePort = 80;
if (settings.whiteListEnabled === undefined) settings.whiteListEnabled = false;
getIPs(function(ips) {
for (var i = 0; i < ips.length; i++) {
$('#bind').append('<option value="' + ips[i].address + '">' + ips[i].name + '</option>');
}
$('#bind.value').val(settings.bind);
});
$('#socketio')
.append('<option value="none">' + _('none') + '</option>')
.append('<option value="">' + _('integrated') + '</option>');
var count = 0;
for (var i = 0; i < supportedSockets.length; i++) {
count++;
getAdapterInstances(supportedSockets[i], function (res) {
if (!res) return;
for (var t = 0; t < res.length; t++) {
$('#socketio').append('<option value="' + res[t]._id + '">' + res[t].common.name + ' [' + res[t]._id.replace('system.adapter.', '') + ']</option>');
}
if (!--count) {
var $socketio = $('#socketio');
$socketio.val(settings.socketio);
if (settings.socketio !== '') {
$('.socketio').hide();
}
$socketio.change(function () {
if ($(this).val() === '') {
$('.socketio').show();
} else {
$('.socketio').hide();
}
});
}
});
}
$('.value').each(function () {
var key = $(this).attr('id');
var $value = $('#' + key + '.value');
if ($value.attr('type') === 'checkbox') {
$value.prop('checked', settings[key]).change(function() {
showHideSettings();
onChange();
});
} else {
$value.val(settings[key]).change(function() {
onChange();
}).keyup(function() {
$(this).trigger('change');
});
}
});
onChange(false);
fillSelectCertificates('#certPublic', 'public', settings.certPublic);
fillSelectCertificates('#certPrivate', 'private', settings.certPrivate);
fillSelectCertificates('#certChained', 'chained', settings.certChained);
fillUsers('#defaultUser', settings.defaultUser);
showHideSettings();
$('#auth').change(function () {
if ($(this).prop('checked')) {
$('#secure').prop('checked', true);
showHideSettings();
}
updateNameSelects();
setDefaultIpUserToDefaultUser();
});
$('#defaultUser').change(function () {
setDefaultIpUserToDefaultUser();
});
applyWhiteListSettings(settings, onChange);
}
function save(callback) {
var obj = {};
$('.value').each(function () {
var $this = $(this);
if ($this.attr('type') === 'checkbox') {
obj[$this.attr('id')] = $this.prop('checked');
} else {
obj[$this.attr('id')] = $this.val();
}
});
if ($('#secure').prop('checked') && (!$('#certPrivate').val() || !$('#certPublic').val())) {
showMessage(_('Set certificates or load it first in the system settings (right top).'));
return;
}
obj['whiteListSettings'] = getWhiteListSettings();
callback(obj);
}
var ips = {};
var inputIndex = 0;
function addWhiteListTableRow(change) {
var table = document.getElementById('whiteListTable');
var row = table.insertRow(2);
var rowCount = table.rows.length;
var defaultRowIndex = rowCount - 1;
var colCount = table.rows[defaultRowIndex].cells.length;
for (var i = 0; i < colCount; i++) {
var newCell = row.insertCell(i);
var cellClass = $(table.rows[defaultRowIndex].cells[i]).attr('class');
if (cellClass.indexOf('defaultUserName') !== -1) {
newCell.innerHTML = '<select class="select-username" />';
} else {
$(newCell).addClass(cellClass);
newCell.innerHTML = table.rows[defaultRowIndex].cells[i].innerHTML;
}
if (newCell.innerHTML === 'default') {
var id = 'input_' + inputIndex++;
var ip = '192.168.0.1';
ips[id] = ip;
newCell.innerHTML = '<input name="ip" size="15" maxlength="255" id="' + id + '" value="' + ip + '"/>';
}
if (newCell.childNodes[0].type === 'checkbox') {
newCell.childNodes[0].checked = false;
}
}
$('.select-username:not(:has(option))').each(function () {
fillNameSelect($(this));
});
if (change && changedCallback) changedCallback();
defaultHandling();
return row;
}
function deleteWhiteListTableRow(index) {
try {
changedCallback && changedCallback();
var table = document.getElementById('whiteListTable');
var rowCount = table.rows.length;
if (index === rowCount - 1) return;
table.deleteRow(index);
} catch (e) {
alert(e);
}
}
function getWhiteListSettings() {
var settings = {};
try {
var table = document.getElementById('whiteListTable');
var rowCount = table.rows.length;
for (var i = 2; i < rowCount; i++) {
var row = table.rows[i];
var ip = (i === (rowCount - 1)) ? 'default' : row.cells[1].childNodes[0].value;
var userSelected = (i === (rowCount - 1)) ? $(row.cells[2]).html().toLowerCase() : $(row.cells[2].childNodes[0]).val();
settings[ip] = {
user: userSelected,
object: {},
state: {},
file: {}
};
for (var c = 2; c < row.cells.length; c++) {
var $cell = $(row.cells[c].childNodes[0]);
var permobject = $cell.attr('permobject');
var perm = $cell.attr('perm');
if (permobject && perm && settings[ip].hasOwnProperty(permobject)) {
settings[ip][permobject][perm] = $cell.prop('checked');
}
}
}
} catch (e) {
alert(e);
}
return settings;
}
function validateIp(ip) {
if (ip.indexOf('*') !== -1 && ip.lastIndexOf('.') > ip.indexOf('*')) {
return false;
}
var expression = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$|^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;
return expression.test(ip.replace('*', '111'));
}
function createWhiteListTable(whiteListSettings) {
var table = document.getElementById("whiteListTable");
var rowCount = table.rows.length;
for (var i = rowCount - 2; i > 1; i--) {
table.deleteRow(i);
}
if (whiteListSettings) {
Object.keys(whiteListSettings).forEach(function (key) {
rowCount = table.rows.length;
if (key !== 'default') {
addWhiteListTableRow(false);
}
});
}
}
var changedCallback = null;
var whiteListSettings = null;
function applyWhiteListSettings(settings, onChange) {
try {
whiteListSettings = settings['whiteListSettings'];
createWhiteListTable(whiteListSettings);
fillNameSelects(whiteListSettings);
changedCallback = onChange;
} catch (e) {
alert(e);
}
}
function handleIpChange() {
var ip = $(this).val();
var id = $(this).attr('id');
if (ip && !validateIp(ip)) {
showMessage(_('The provided IP is not valid'));
// alert('The provided IP ' + ip + ' is not valid');
if (ips.hasOwnProperty(id)) {
$(this).val(ips[id]);
}
} else {
ips[id] = ip;
}
changedCallback && changedCallback();
}
function wireClickEvents() {
$('.delete-btn-clmn')
.off('click')
.click(function () {
var rowIndex = $(this).parent().parent().children().index($(this).parent());
deleteWhiteListTableRow(rowIndex + 2);
});
}
function wireChangeEvents() {
var table = document.getElementById('whiteListTable');
var rowCount = table.rows.length;
for (var i = 2; i < rowCount; i++) {
var row = table.rows[i];
if (i !== rowCount - 1) {
var $input = $(row.cells[1].childNodes[0]);
$input.off('change');
$input.change(handleIpChange);
}
for (var c = 2; c < row.cells.length; c++) {
var $cell = $(row.cells[c].childNodes[0]);
$cell.off('change');
$cell.change(function () {
changedCallback && changedCallback();
});
}
}
$('.select-username')
.off('change')
.change(function () {
changedCallback && changedCallback();
});
}
function hideDefaultDeleteBtn() {
$('.delete-btn').css({
display: 'block'
});
$('.delete-btn:last').css({
display: 'none'
});
}
function addOptionIfAbsent($e, value, valueText, defaultUser) {
if (!$e.find('option[value="' + value + '"]').length) {
$e.append('<option value="' + value + '" ' + ((defaultUser === value) ? 'selected' : '') + '>' + valueText + '</option>');
}
}
function fillNameSelect($this, defaultUser) {
for (var u in users) {
var value = users[u].common.name;
var valueText = users[u].common.name[0].toUpperCase() + users[u].common.name.substring(1);
addOptionIfAbsent($this, value, valueText, defaultUser);
}
}
var users = {};
function fillNameSelects(whiteListSettings) {
if (!whiteListSettings) return;
getUsers(function (err, response) {
users = response;
$('.select-username')
.off('change')
.each(function () {
fillNameSelect($(this));
});
applyRowSettings(whiteListSettings);
defaultHandling();
});
}
function applyRowSettings(whiteListSettings) {
if (!whiteListSettings) return;
var table = document.getElementById('whiteListTable');
var rowCount = table.rows.length;
var i = 2;
Object.keys(whiteListSettings).forEach(function (key) {
var row = key === 'default' ? table.rows[rowCount - 1] : table.rows[i++];
setRowSettings(row, key, whiteListSettings[key]);
});
}
function setRowSettings(row, ip, ipSettings) {
var $ip = $(row.cells[1].childNodes[0]);
$ip.val(ip);
for (var c = 2; c < row.cells.length; c++) {
var $cell = $(row.cells[c].childNodes[c === 2 ? 1 : 0]);
if (c > 2) {
var permobject = $cell.attr('permobject');
var perm = $cell.attr('perm');
if (ipSettings.hasOwnProperty(permobject) && ipSettings[permobject].hasOwnProperty(perm)) {
$cell.prop('checked', ipSettings[permobject][perm]);
}
} else {
$(row.cells[2].childNodes[0]).val(ipSettings.user).change();
}
}
}
function setDefaultIpUserToDefaultUser() {
var auth = $('#auth').prop('checked');
var defaultUser = auth ? 'Auth' : $('#defaultUser').find('option:selected').text();
$('.defaultUserName').html(defaultUser);
}
function updateNameSelects() {
var auth = $('#auth').prop('checked');
if (auth) {
$('.select-username').each(function () {
addOptionIfAbsent($(this), 'auth', 'Auth');
});
} else {
$('.select-username option[value="auth"]').remove();
}
}
function defaultHandling() {
hideDefaultDeleteBtn();
updateNameSelects();
setDefaultIpUserToDefaultUser();
wireClickEvents();
wireChangeEvents();
}
</script>
<style>
.whiteListTableHeader {
background-color: lightgrey;
color: darkslateblue;
}
.whiteListTableUnevenBlock {
background-color: gainsboro;
}
.whiteListTableEvenBlock {
background-color: lavender;
}
</style>
</head>
<body>
<div id="adapter-container">
<table>
<tr>
<td><img src="web.png"></td>
<td><h3 class="translate">Web Server adapter settings</h3></td>
</tr>
</table>
<div id="tabs">
<ul>
<li><a href="#tabs-1" class="translate">General</a></li>
<li><a href="#tabs-2" class="translate">White List</a></li>
</ul>
<div id="tabs-1">
<table>
<tr>
<td><label class="translate" for="bind">IP:</label></td>
<td><select class="value" id="bind"></select></td>
<td></td>
</tr>
<tr>
<td><label class="translate" for="port">Port:</label></td>
<td><input class="value" id="port" size="5" maxlength="5" type="number"/></td>
<td></td>
</tr>
<tr>
<td><label class="translate" for="secure">Secure(HTTPS):</label></td>
<td><input class="value" id="secure" type="checkbox"/></td>
<td></td>
</tr>
<tr id="_certPublic">
<td><label class="translate" for="certPublic">Public certificate:</label></td>
<td><select id="certPublic" class="value"></select></td>
</tr>
<tr id="_certPrivate">
<td><label class="translate" for="certPrivate">Private certificate:</label></td>
<td><select id="certPrivate" class="value"></select></td>
</tr>
<tr id="_certChained">
<td><label class="translate" for="certChained">Chained certificate:</label></td>
<td><select id="certChained" class="value"></select></td>
</tr>
<tr>
<td><label class="translate" for="auth">Authentication:</label></td>
<td><input class="value" id="auth" type="checkbox"/></td>
<td></td>
</tr>
<tr id="_ttl">
<td><label class="translate" for="ttl">Login timeout(sec):</label></td>
<td><input class="value" id="ttl" type="number"/></td>
<td></td></tr>
<tr>
<td><label class="translate" for="cache">Cache:</label></td>
<td><input class="value" id="cache" type="checkbox"/></td>
<td></td>
</tr>
<tr>
<td><label class="translate" for="socketio">Socket.IO Instance (Optional):</label></td>
<td><select class="value" id="socketio"></select><span class="translate"
style="padding-left: 20px">socket_help</span>
</td>
</tr>
<tr class="socketio">
<td><label class="translate" for="forceWebSockets">Force Web-Sockets:</label></td>
<td><input type="checkbox" class="value" id="forceWebSockets"/></td></tr>
<tr>
<td><label class="translate" for="simpleapi">Internal 'Simple API':</label></td>
<td><input type="checkbox" class="value" id="simpleapi"/></td>
</tr>
<tr class="defaultUser">
<td><label class="translate" for="defaultUser">Run as:</label></td>
<td><select class="value" id="defaultUser"></select></td>
</tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr class="le-settings"><td colspan="2"><h3 class="translate">Let's Encrypt settings</h3></tr>
<tr class="le-settings"><td><label for="leEnabled" class="translate">Use Lets Encrypt certificates:</label></td><td><input class="value" id="leEnabled" type="checkbox" /></td></tr>
<tr class="le-settings le-sub-settings"><td><label for="leUpdate" class="translate">Use this instance for automatic update:</label></td><td><input class="value" id="leUpdate" type="checkbox" /></td></tr>
<tr class="le-settings le-sub-settings le-sub-settings-update"><td><label for="lePort" class="translate">Port to check the domain:</label></td><td><input class="value number" id="lePort" type="number" size="5" maxlength="5" /></td></tr>
</table>
</div>
<div id="tabs-2">
<div>
<span><label class="translate" for="whiteListEnabled">Enabled:</label></span><input id="whiteListEnabled" class="value" type="checkbox" />
</div>
<button style="display: inline-block; width: 2em; height: 2em;" onclick="addWhiteListTableRow(true)"
class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only white-list-settings" role="button">
<span class="ui-button-icon-primary ui-icon ui-icon-plus"></span>
<span class="ui-button-text"></span>
</button>
<table id="whiteListTable" cellpadding="3" cellspacing="2" border="0" class="white-list-settings">
<thead>
<tr class="whiteListTableHeader">
<th rowspan="2" colspan="2" class="translate">IP</th>
<th rowspan="2" class="translate">User</th>
<th colspan="4" class="translate">object</th>
<th colspan="5" class="translate">state</th>
<th colspan="5" class="translate">file</th>
</tr>
<tr class="whiteListTableHeader">
<th class="translate">read</th>
<th class="translate">list</th>
<th class="translate">write</th>
<th class="translate">remove</th>
<th class="translate">read</th>
<th class="translate">list</th>
<th class="translate">write</th>
<th class="translate">create</th>
<th class="translate">remove</th>
<th class="translate">read</th>
<th class="translate">list</th>
<th class="translate">write</th>
<th class="translate">create</th>
<th class="translate">remove</th>
</tr>
</thead>
<tbody id="whiteListTableBody">
<tr>
<td class="whiteListTableUnevenBlock delete-btn-clmn"><a class="delete-btn" href="#"><span
class="ui-icon ui-icon-trash"></span></a></td>
<td class="whiteListTableUnevenBlock">default</td>
<td class="whiteListTableUnevenBlock defaultUserName">defaultName</td>
<td class="whiteListTableEvenBlock"><input permobject="object" perm="read" type="checkbox"
checked="true"/></td>
<td class="whiteListTableEvenBlock"><input permobject="object" perm="list" type="checkbox"
checked="true"/></td>
<td class="whiteListTableEvenBlock"><input permobject="object" perm="write" type="checkbox"
checked="true"/></td>
<td class="whiteListTableEvenBlock"><input permobject="object" perm="delete" type="checkbox"
checked="true"/></td>
<td class="whiteListTableUnevenBlock"><input permobject="state" perm="read" type="checkbox"
checked="true"/></td>
<td class="whiteListTableUnevenBlock"><input permobject="state" perm="list" type="checkbox"
checked="true"/></td>
<td class="whiteListTableUnevenBlock"><input permobject="state" perm="write" type="checkbox"
checked="true"/></td>
<td class="whiteListTableUnevenBlock"><input permobject="state" perm="create" type="checkbox"
checked="true"/></td>
<td class="whiteListTableUnevenBlock"><input permobject="state" perm="delete" type="checkbox"
checked="true"/></td>
<td class="whiteListTableEvenBlock"><input permobject="file" perm="read" type="checkbox"
checked="true"/></td>
<td class="whiteListTableEvenBlock"><input permobject="file" perm="list" type="checkbox"
checked="true"/></td>
<td class="whiteListTableEvenBlock"><input permobject="file" perm="write" type="checkbox"
checked="true"/></td>
<td class="whiteListTableEvenBlock"><input permobject="file" perm="create" type="checkbox"
checked="true"/></td>
<td class="whiteListTableEvenBlock"><input permobject="file" perm="delete" type="checkbox"
checked="true"/></td>
</tr>
</tbody>
</table >
</div>
</div>
</div>
</body>
</html>
+1087
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

+54
View File
@@ -0,0 +1,54 @@
// DO NOT EDIT THIS FILE!!! IT WILL BE AUTOMATICALLY GENERATED FROM src/i18n
/*global systemDictionary:true */
'use strict';
systemDictionary = {
"WWW Web Server adapter settings": { "en": "WWW Web Server adapter settings", "de": "WWW Web Server adapter settings", "ru": "WWW Web Server adapter settings", "pt": "Configurações do adaptador do servidor WWW", "nl": "WWW Web Server-adapterinstellingen", "fr": "Paramètres de l'adaptateur de serveur Web WWW", "it": "Impostazioni dell'adattatore del server Web WWW", "es": "Configuración del adaptador del servidor web WWW", "pl": "Ustawienia WWW serwera WWW"},
"Run as:": { "en": "Run as", "de": "Laufen unter Anwender", "ru": "Запустить от пользователя", "pt": "Correr como", "nl": "Rennen als", "fr": "Courir comme", "it": "Correre come", "es": "Correr como", "pl": "Uruchom jako"},
"IP:": { "en": "IP", "de": "IP", "ru": "IP", "pt": "IP", "nl": "IK P", "fr": "IP", "it": "IP", "es": "IP", "pl": "IP"},
"Port:": { "en": "Port", "de": "Port", "ru": "Порт", "pt": "Porta", "nl": "Haven", "fr": "Port", "it": "Porta", "es": "Puerto", "pl": "Port"},
"Secure(HTTPS):": { "en": "Secure(HTTPS)", "de": "Verschlüsselung(HTTPS)", "ru": "Шифрование(HTTPS)", "pt": "Seguro (HTTPS)", "nl": "Secure (HTTPS)", "fr": "Sécurisé (HTTPS)", "it": "Sicuro (HTTPS)", "es": "Seguro (HTTPS)", "pl": "Bezpieczne (HTTPS)"},
"Authentication:": { "en": "Authentication", "de": "Authentifikation", "ru": "Аутентификация", "pt": "Autenticação", "nl": "authenticatie", "fr": "Authentification", "it": "Autenticazione", "es": "Autenticación", "pl": "Poświadczenie"},
"Cache:": { "en": "Cache", "de": "Puffer", "ru": "Кэш", "pt": "Cache", "nl": "Cache", "fr": "Cache", "it": "nascondiglio", "es": "Cache", "pl": "Pamięć podręczna"},
"Warning!": { "en": "Warning!", "de": "Warnung!", "ru": "Предупреждение!", "pt": "Atenção!", "nl": "Waarschuwing!", "fr": "Attention!", "it": "Avvertimento!", "es": "¡Advertencia!", "pl": "Ostrzeżenie!"},
"Background": { "en": "Background", "de": "Hintergrund", "ru": "Фон", "pt": "Fundo", "nl": "Achtergrond", "fr": "Contexte", "it": "Sfondo", "es": "Fondo", "pl": "Tło"},
"Background color of the login screen": { "en": "Background color of the login screen", "de": "Hintergrundfarbe des Anmeldebildschirms", "ru": "Цвет фона экрана входа в систему", "pt": "Cor de fundo da tela de login", "nl": "Achtergrondkleur van het inlogscherm", "fr": "Couleur d'arrière-plan de l'écran de connexion", "it": "Colore di sfondo della schermata di accesso", "es": "Color de fondo de la pantalla de inicio de sesión", "pl": "Kolor tła ekranu logowania"},
"Background image": { "en": "Background image", "de": "Hintergrundbild", "ru": "Фоновое изображение", "pt": "Imagem de fundo", "nl": "Achtergrond afbeelding", "fr": "Image de fond", "it": "Immagine di sfondo", "es": "Imagen de fondo", "pl": "Zdjęcie w tle"},
"Upload image": { "en": "Upload image", "de": "Bild hochladen", "ru": "Загрузить изображение", "pt": "Enviar Imagem", "nl": "Afbeelding uploaden", "fr": "Importer une image", "it": "Carica immagine", "es": "Cargar imagen", "pl": "Załaduj obrazek"},
"Enabled:": { "en": "Enabled", "de": "Aktiviert", "ru": "Включено", "pt": "Ativado", "nl": "Ingeschakeld", "fr": "Activée", "it": "Abilitato", "es": "Habilitado", "pl": "Włączone"},
"Unsecure_Auth": { "en": "The password will be sent via unsecure connection. To protect your passwords enable the secure connection (HTTPS)!", "de": "Das Passwort wird über unsichere Verbindung gesendet. Um Ihre Passwörter zu schützen, aktivieren Sie die sichere Verbindung (HTTPS)!", "ru": "Пароль будет отправлен через незащищенное соединение. Для защиты ваших паролей активируйте безопасное соединение (HTTPS)!", "pt": "A senha será enviada por meio de conexão não segura. Para proteger suas senhas, ative a conexão segura (HTTPS)!", "nl": "Het wachtwoord wordt verzonden via onbeveiligde verbinding. Ter beveiliging van uw wachtwoorden schakelt u de beveiligde verbinding (HTTPS) in!", "fr": "Le mot de passe sera envoyé via une connexion non sécurisée. Pour protéger vos mots de passe, activez la connexion sécurisée (HTTPS)!", "it": "La password verrà inviata tramite connessione non protetta. Per proteggere le tue password abilita la connessione sicura (HTTPS)!", "es": "La contraseña se enviará a través de una conexión no segura. Para proteger sus contraseñas, ¡habilite la conexión segura (HTTPS)!", "pl": "Hasło zostanie wysłane przez połączenie bez zabezpieczeń. Aby chronić swoje hasła, włącz bezpieczne połączenie (HTTPS)!"},
"Login timeout(sec):": { "en": "Login timeout(sec)", "de": "Anmelde-Timeout (Sek.)", "ru": "Тайм-аут входа (сек)", "pt": "Tempo limite de login (seg)", "nl": "Aanmeld-time-out (sec)", "fr": "Délai d'attente de connexion (sec)", "it": "Timeout di accesso (sec)", "es": "Tiempo de espera de inicio de sesión (sec)", "pl": "Limit czasu logowania (s)"},
"IP": { "en": "IP", "de": "IP", "ru": "IP", "pt": "IP", "nl": "IP", "fr": "IP", "it": "IP", "es": "IP", "pl": "IP"},
"none": { "en": "none", "de": "keins", "ru": "none", "pt": "Nenhum", "nl": "geen", "fr": "aucun", "it": "nessuna", "es": "ninguna", "pl": "Żaden"},
"Ignore warning": { "en": "Ignore warning", "de": "Warnung ignorieren", "ru": "Игнорировать предупреждение", "pt": "Ignorar aviso", "nl": "Negeer waarschuwing", "fr": "Ignorer l'avertissement", "it": "Ignora l'avviso", "es": "Ignorar advertencia", "pl": "Zignoruj ​​ostrzeżenie"},
"place here": { "en": "place the files here", "de": "Platziere die Dateien hier", "ru": "разместите файлы здесь", "pt": "coloque os arquivos aqui", "nl": "plaats de bestanden hier", "fr": "Placez les fichiers ici", "it": "posiziona i file qui", "es": "coloca los archivos aquí", "pl": "umieść pliki tutaj"},
"Disable authentication": { "en": "Disable authentication", "de": "Authentifizierung deaktivieren", "ru": "Отключить аутентификацию", "pt": "Desativar autenticação", "nl": "Schakel verificatie uit", "fr": "Désactiver l'authentification", "it": "Disabilitare l'autenticazione", "es": "Deshabilitar autenticación", "pl": "Wyłącz uwierzytelnianie"},
"Authentication was deactivated": { "en": "Authentication was deactivated", "de": "Die Authentifizierung wurde deaktiviert", "ru": "Аутентификация была отключена", "pt": "A autenticação foi desativada", "nl": "Verificatie was gedeactiveerd", "fr": "L'authentification a été désactivée", "it": "L'autenticazione è stata disattivata", "es": "La autenticación fue desactivada", "pl": "Uwierzytelnianie zostało dezaktywowane"},
"integrated": { "en": "integrated", "de": "integriert", "ru": "встроенный", "pt": "integrado", "nl": "geïntegreerde", "fr": "intégré", "it": "integrato", "es": "integrado", "pl": "zintegrowany"},
"Public certificate:": { "en": "Public certificate", "de": "Publikzertifikat", "ru": "'Public' сертификат", "pt": "Certificado público", "nl": "Openbaar certificaat", "fr": "Certificat public", "it": "Certificato pubblico", "es": "Certificado público", "pl": "Certyfikat publiczny"},
"Private certificate:": { "en": "Private certificate", "de": "Privatzertifikat", "ru": "'Private' сертификат", "pt": "Certificado privado", "nl": "Privé certificaat", "fr": "Certificat privé", "it": "Certificato privato", "es": "Certificado privado", "pl": "Prywatny certyfikat"},
"Chained certificate:": { "en": "Chained certificate", "de": "Kettenzertifikat", "ru": "'Chained' сертификат", "pt": "Certificado acorrentado", "nl": "Geketend certificaat", "fr": "Certificat chaîné", "it": "Certificato incatenato", "es": "Certificado encadenado", "pl": "Przykuty certyfikat"},
"Force Web-Sockets:": { "en": "Force Web-Sockets", "de": "Nur Web-Sockets", "ru": "Только Web-Sockets", "pt": "Forçar Web-Sockets", "nl": "Force Web-Sockets", "fr": "Forcer les Web-Sockets", "it": "Force Web-Sockets", "es": "Force Web-Sockets", "pl": "Wymuszaj gniazda internetowe"},
"Internal 'Simple API':": { "en": "Build-in 'Simple-API'", "de": "Eingebautes 'Simple-API'", "ru": "Встроенный 'Simple-API'", "pt": "Build-in 'Simple-API'", "nl": "Ingebouwde 'Simple-API'", "fr": "Construire 'Simple-API'", "it": "Build-in 'Simple-API'", "es": "Build-in 'Simple-API'", "pl": "Wbuduj \"Proste API\""},
"Listen on all IPs": { "en": "Listen on all IPs", "de": "Alle IPs zulassen", "ru": "Открыть для всех IP адресов", "pt": "Ouça todos os IPs", "nl": "Luister op alle IP's", "fr": "Écoutez sur toutes les adresses IP", "it": "Ascolta su tutti gli IP", "es": "Escuchar en todas las direcciones IP", "pl": "Posłuchaj na wszystkich IP"},
"Let's Encrypt settings": { "en": "Let's Encrypt settings", "de": "Einstellungen Let's Encrypt", "ru": "Настройкт Let's Encrypt", "pt": "Vamos criptografar configurações", "nl": "Laten we de instellingen versleutelen", "fr": "Cryptons les paramètres", "it": "Let's Encrypt settings", "es": "Vamos a cifrar la configuración", "pl": "Zakodujmy ustawienia"},
"Use Lets Encrypt certificates:": { "en": "Use Let's Encrypt certificates", "de": "Benutzen Let's Encrypt Zertifikate", "ru": "Использовать сертификаты Let's Encrypt", "pt": "Use Vamos criptografar certificados", "nl": "Gebruik Let's Encrypt-certificaten", "fr": "Utiliser les certificats Let's Encrypt", "it": "Utilizza Let's Encrypt certificates", "es": "Utilice los certificados Let's Encrypt", "pl": "Użyj Let's Encrypt certificates"},
"Use this instance for automatic update:": { "en": "Use this instance for automatic update", "de": "Benutze diese Instanz für automatische Updates", "ru": "Обновлять сертификаты в этом драйвере", "pt": "Use esta instância para atualização automática", "nl": "Gebruik deze instantie voor automatische update", "fr": "Utilisez cette instance pour la mise à jour automatique", "it": "Utilizza questa istanza per l'aggiornamento automatico", "es": "Use esta instancia para la actualización automática", "pl": "Użyj tej instancji do automatycznej aktualizacji"},
"Port to check the domain:": { "en": "Port to check the domain", "de": "Port um die Domain zu prüfen", "ru": "Порт для проверки доменного имени", "pt": "Porta para verificar o domínio", "nl": "Poort om het domein te controleren", "fr": "Port pour vérifier le domaine", "it": "Porta per controllare il dominio", "es": "Puerto para verificar el dominio", "pl": "Port do sprawdzenia domeny"},
"Set certificates or load it first in the system settings (right top).": {"en": "Set certificates or load it first in the system settings (right top).", "de": "Setze Zertificate oder lade die erst unter System/Einstellungen (oben rechts).", "ru": "Нужно выбрать сертификаты или сначала загрузить их в системных настройках (вверху справа).", "pt": "Defina certificados ou carregue primeiro nas configurações do sistema (parte superior direita).", "nl": "Stel certificaten in of laad het eerst in de systeeminstellingen (rechtsboven).", "fr": "Définissez des certificats ou chargez-les d'abord dans les paramètres du système (en haut à droite).", "it": "Imposta i certificati o caricali prima nelle impostazioni di sistema (in alto a destra).", "es": "Establezca certificados o cárguelos primero en la configuración del sistema (arriba a la derecha).", "pl": "Ustaw certyfikaty lub załaduj najpierw w ustawieniach systemu (prawy górny)."},
"socket_help": { "en": "Used by adapters like rickshaw or vis", "de": "Wird von Rickshaw oder Vis benutzt", "ru": "Используется для Rickshaw или Vis", "pt": "Usado por adaptadores como rickshaw ou vis", "nl": "Gebruikt door adapters zoals riksja of vis", "fr": "Utilisé par des adaptateurs comme le pousse-pousse ou vis", "it": "Utilizzato da adattatori come risciò o vis", "es": "Utilizado por adaptadores como rickshaw o vis", "pl": "Używany przez adaptery takie jak riksza lub vis"},
"Web Server adapter settings": { "en": "Web Server adapter settings", "de": "Web Server Adapter Einstellungen", "ru": "Настройки драйвера Web-Сервер", "pt": "Configurações do adaptador do servidor Web", "nl": "Web Server-adapterinstellingen", "fr": "Paramètres de l'adaptateur de serveur Web", "it": "Impostazioni dell'adattatore server Web", "es": "Configuración del adaptador del servidor web", "pl": "Ustawienia adaptera sieci Web"},
"Socket.IO Instance (Optional):": { "en": "Socket.IO Instance (Optional)", "de": "Socket.IO Instanz (Optional)", "ru": "Socket.IO (опционально)", "pt": "Instância Socket.IO (Opcional)", "nl": "Socket.IO-instantie (optioneel)", "fr": "Socket.IO Instance (facultatif)", "it": "Istanza Socket.IO (opzionale)", "es": "Instancia Socket.IO (Opcional)", "pl": "Instancja Socket.IO (opcjonalnie)"},
"The provided IP is not valid": { "en": "The provided IP is not valid", "de": "Die angegebene IP-Adresse ist ungültig", "ru": "Неверный IP-адрес", "pt": "O IP fornecido não é válido", "nl": "Het opgegeven IP-adres is niet geldig", "fr": "L'adresse IP fournie n'est pas valide", "it": "L'IP fornito non è valido", "es": "El IP proporcionado no es válido", "pl": "Podany adres IP jest nieprawidłowy"},
"General": { "en": "General", "de": "Allgemein", "ru": "Общие", "pt": "Geral", "nl": "Algemeen", "fr": "Général", "it": "Generale", "es": "General", "pl": "Generał"},
"White List": { "en": "White List", "de": "Weisse Liste", "ru": "Белый список", "pt": "Lista Branca", "nl": "Witte lijst", "fr": "Liste blanche", "it": "Lista bianca", "es": "Lista blanca", "pl": "Biała lista"},
"User": { "en": "User", "de": "Benutzer", "ru": "Пользователь", "pt": "Do utilizador", "nl": "Gebruiker", "fr": "Utilisateur", "it": "Utente", "es": "Usuario", "pl": "Użytkownik"},
"object": { "en": "object", "de": "Objekt", "ru": "объект", "pt": "objeto", "nl": "voorwerp", "fr": "objet", "it": "oggetto", "es": "objeto", "pl": "obiekt"},
"state": { "en": "state", "de": "Status", "ru": "статус", "pt": "Estado", "nl": "staat", "fr": "Etat", "it": "stato", "es": "estado", "pl": "stan"},
"file": { "en": "file", "de": "Datei", "ru": "файл", "pt": "Arquivo", "nl": "het dossier", "fr": "fichier", "it": "file", "es": "archivo", "pl": "plik"},
"read": { "en": "read", "de": "lesen", "ru": "читать", "pt": "ler", "nl": "lezen", "fr": "lis", "it": "leggere", "es": "leer", "pl": "czytać"},
"list": { "en": "list", "de": "auflisten", "ru": "список", "pt": "Lista", "nl": "lijst", "fr": "liste", "it": "elenco", "es": "lista", "pl": "lista"},
"write": { "en": "wrire", "de": "schreiben", "ru": "писать", "pt": "wrire", "nl": "wrire", "fr": "écrire", "it": "wrire", "es": "wrire", "pl": "wrire"},
"create": { "en": "create", "de": "anlegen", "ru": "создать", "pt": "crio", "nl": "creëren", "fr": "créer", "it": "creare", "es": "crear", "pl": "Stwórz"},
"remove": { "en": "delete", "de": "löschen", "ru": "удалить", "pt": "excluir", "nl": "verwijderen", "fr": "effacer", "it": "Elimina", "es": "borrar", "pl": "kasować"}
};