diff --git a/.circleci/config.yml b/.circleci/config.yml index d652afb5e..35d0b5d1c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -23,6 +23,7 @@ jobs: environment: - OMR_VERSION: $CIRCLE_TAG - OMR_TARGET: x86_64 + - OMR_KERNEL: 5.4 working_directory: ~/ @@ -30,8 +31,8 @@ jobs: - run: name: cache command: | - echo "cache 82 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 85 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version + echo "cache 92 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target + echo "cache 94 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - restore_cache: keys: @@ -85,6 +86,7 @@ jobs: environment: - OMR_VERSION: $CIRCLE_TAG - OMR_TARGET: x86 + - OMR_KERNEL: 5.4 working_directory: ~/ @@ -92,8 +94,8 @@ jobs: - run: name: cache command: | - echo "cache 82 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 85 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version + echo "cache 92 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target + echo "cache 94 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - restore_cache: keys: @@ -145,6 +147,7 @@ jobs: environment: - OMR_VERSION: $CIRCLE_TAG - OMR_TARGET: rpi3 + - OMR_KERNEL: 5.4 working_directory: ~/ @@ -152,8 +155,8 @@ jobs: - run: name: cache command: | - echo "cache 82 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 85 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version + echo "cache 92 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target + echo "cache 94 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - restore_cache: keys: @@ -205,6 +208,7 @@ jobs: environment: - OMR_VERSION: $CIRCLE_TAG - OMR_TARGET: rpi4 + - OMR_KERNEL: 5.4 working_directory: ~/ @@ -212,8 +216,8 @@ jobs: - run: name: cache command: | - echo "cache 82 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 85 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version + echo "cache 92 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target + echo "cache 94 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - restore_cache: keys: @@ -265,6 +269,7 @@ jobs: environment: - OMR_VERSION: $CIRCLE_TAG - OMR_TARGET: rpi2 + - OMR_KERNEL: 5.4 working_directory: ~/ @@ -272,8 +277,8 @@ jobs: - run: name: cache command: | - echo "cache 82 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 85 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version + echo "cache 92 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target + echo "cache 94 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - restore_cache: keys: @@ -325,6 +330,7 @@ jobs: environment: - OMR_VERSION: $CIRCLE_TAG - OMR_TARGET: bpi-r2 + - OMR_KERNEL: 5.4 working_directory: ~/ @@ -332,8 +338,8 @@ jobs: - run: name: cache command: | - echo "cache 82 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 85 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version + echo "cache 92 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target + echo "cache 94 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - restore_cache: keys: @@ -388,6 +394,7 @@ jobs: environment: - OMR_VERSION: $CIRCLE_TAG - OMR_TARGET: wrt3200acm + - OMR_KERNEL: 5.4 working_directory: ~/ @@ -395,8 +402,8 @@ jobs: - run: name: cache command: | - echo "cache 82 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 85 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version + echo "cache 92 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target + echo "cache 94 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - restore_cache: keys: @@ -447,6 +454,7 @@ jobs: environment: - OMR_VERSION: $CIRCLE_TAG + - OMR_KERNEL: 5.4 working_directory: ~/ @@ -454,8 +462,8 @@ jobs: - run: name: cache command: | - echo "cache 82 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target - echo "cache 85 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version + echo "cache 92 $OMR_KERNEL $OMR_TARGET" > /tmp/cache-target + echo "cache 94 $OMR_KERNEL $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - restore_cache: keys: diff --git a/glorytun-udp/Makefile b/glorytun-udp/Makefile index 4f4e70bf7..c02f70241 100644 --- a/glorytun-udp/Makefile +++ b/glorytun-udp/Makefile @@ -1,6 +1,6 @@ # # Copyright (C) 2015 OVH -# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) for OpenMPTCProuter project +# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter project # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -10,9 +10,9 @@ include $(TOPDIR)/rules.mk PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/angt/glorytun.git -PKG_SOURCE_VERSION:=a9408e799ddbb74b5476fba70a495770322cd327 +PKG_SOURCE_VERSION:=3622f928caf03709c4031a34feec85c623bc5281 PKG_NAME:=glorytun-udp -PKG_VERSION:=0.3.0-$(PKG_SOURCE_VERSION) +PKG_VERSION:=0.3.4-$(PKG_SOURCE_VERSION) PKG_RELEASE:=23 PKG_FIXUP:=autoreconf diff --git a/glorytun/init b/glorytun/init index e7e1cd1df..116547ac0 100755 --- a/glorytun/init +++ b/glorytun/init @@ -48,6 +48,7 @@ start_instance() { [ "${key}" != "secretkey" ] || return 1 [ -n "${port}" ] || return 1 [ -n "${dev}" ] || return 1 + [ -n "${host}" ] || return 1 echo "${key}" > /tmp/${PROG_NAME}-${1}.key [ -f "/tmp/${PROG_NAME}-${1}.key" ] || { @@ -75,8 +76,8 @@ start_instance() { [ "${chacha20}" = "1" ] && procd_append_param command chacha20 procd_append_param command \ - retry count -1 const 5000000 \ - timeout 100000 \ + retry count -1 const 500000 \ + timeout 10000 \ keepalive count 5 idle 20 interval 2 \ buffer-size 32768 diff --git a/https-dns-proxy/Makefile b/https-dns-proxy/Makefile new file mode 100644 index 000000000..0fefc7ca5 --- /dev/null +++ b/https-dns-proxy/Makefile @@ -0,0 +1,36 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=https-dns-proxy +PKG_VERSION:=2019-12-03 +PKG_RELEASE=5 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/aarond10/https_dns_proxy +PKG_SOURCE_DATE:=2019-12-03 +PKG_SOURCE_VERSION:=2adeafb67cbe8d67148219c48334856ae4f3bd75 +PKG_MIRROR_HASH:=58088baa092cd9634652d65f9b5650db88d2e102cb370710654db7b15f2f0e42 +PKG_MAINTAINER:=Stan Grishin +PKG_LICENSE:=MIT +PKG_LICENSE_FILES:=LICENSE + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/cmake.mk + +CMAKE_OPTIONS += -DCLANG_TIDY_EXE= + +define Package/https-dns-proxy + SECTION:=net + CATEGORY:=Network + TITLE:=DNS Over HTTPS Proxy + DEPENDS:=+libcares +libcurl +libev +ca-bundle + CONFLICTS:=https_dns_proxy +endef + +define Package/https-dns-proxy/install + $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d ${1}/etc/config + $(INSTALL_BIN) $(PKG_BUILD_DIR)/https_dns_proxy $(1)/usr/sbin/https-dns-proxy + $(INSTALL_BIN) ./files/https-dns-proxy.init $(1)/etc/init.d/https-dns-proxy + $(INSTALL_CONF) ./files/https-dns-proxy.config $(1)/etc/config/https-dns-proxy +endef + +$(eval $(call BuildPackage,https-dns-proxy)) diff --git a/https-dns-proxy/files/README.md b/https-dns-proxy/files/README.md new file mode 100644 index 000000000..87e548462 --- /dev/null +++ b/https-dns-proxy/files/README.md @@ -0,0 +1,95 @@ +# DNS Over HTTPS Proxy (https-dns-proxy) + +A lean RFC8484-compatible (no JSON API support) DNS-over-HTTPS (DoH) proxy service which supports DoH servers ran by AdGuard, CleanBrowsing, Cloudflare, Google, ODVR (nic.cz) and Quad9. Please see the [README](https://github.com/stangri/openwrt_packages/blob/master/https-dns-proxy/files/README.md) for further information. Based on [@aarond10](https://github.com/aarond10)'s [https-dns-proxy](https://github.com/aarond10/https_dns_proxy). + +## Features + +- [RFC8484](https://tools.ietf.org/html/rfc8484)-compatible DoH Proxy. +- Compact size. +- Web UI (```luci-app-https-dns-proxy```) available. +- (By default) automatically updates DNSMASQ settings to use DoH proxy when it's started and reverts to old DNSMASQ resolvers when DoH proxy is stopped. + +## Screenshots (luci-app-https-dns-proxy) + +![screenshot](https://raw.githubusercontent.com/stangri/openwrt_packages/master/screenshots/https-dns-proxy/screenshot01.png "https-dns-proxy screenshot") + +## Requirements + +This proxy requires the following packages to be installed on your router: ```libc```, ```libcares```, ```libcurl```, ```libev```, ```ca-bundle```. They will be automatically installed when you're installing ```https-dns-proxy```. + +## Unmet Dependencies + +If you are running a development (trunk/snapshot) build of OpenWrt/LEDE Project on your router and your build is outdated (meaning that packages of the same revision/commit hash are no longer available and when you try to satisfy the [requirements](#requirements) you get errors), please flash either current LEDE release image or current development/snapshot image. + +## How To Install + +Install ```https-dns-proxy``` and ```luci-app-https-dns-proxy``` packages from Web UI or run the following in the command line: + +```sh +opkg update; opkg install https-dns-proxy luci-app-https-dns-proxy; +``` + +## Default Settings + +Default configuration has service enabled and starts the service with Google and Cloudflare DoH servers. In most configurations, you will keep the default ```DNSMASQ``` service installed to handle requests from devices in your local network and point ```DNSMASQ``` to use ```https-dns-proxy``` for name resolution. + +By default, the service will intelligently override existing ```DNSMASQ``` servers settings on start to use the DoH servers and restores original ```DNSMASQ``` servers on stop. See the [Configuration Settings](#configuration-settings) section below for more information and how to disable this behavior. + +## Configuration Settings + +Configuration contains the (named) "main" config section where you can configure which ```DNSMASQ``` settings the service will automatically affect and the typed (unnamed) https-dns-proxy instance settings. The original config file is included below: + +```text +config main 'config' + option update_dnsmasq_config '*' + +config https-dns-proxy + option bootstrap_dns '8.8.8.8,8.8.4.4' + option resolver_url 'https://dns.google/dns-query' + option listen_addr '127.0.0.1' + option listen_port '5053' + option user 'nobody' + option group 'nogroup' + +config https-dns-proxy + option bootstrap_dns '1.1.1.1,1.0.0.1' + option resolver_url 'https://cloudflare-dns.com/dns-query' + option listen_addr '127.0.0.1' + option listen_port '5054' + option user 'nobody' + option group 'nogroup' +``` + +The ```update_dnsmasq_config``` option can be set to dash (set to ```'-'``` to not change ```DNSMASQ``` server settings on start/stop), can be set to ```'*'``` to affect all ```DNSMASQ``` instance server settings or have a space-separated list of ```DNSMASQ``` instances to affect (like ```'0 4 5'```). If this option is omitted, the default setting is ```'*'```. + +Starting with ```https-dns-proxy``` version ```2019-12-03-3``` and higher, when the service is set to update the DNSMASQ servers setting on start/stop, it does not override entries which contain either ```#``` or ```/```, so the entries like listed below will be kept in use: + +```test + list server '/onion/127.0.0.1#65453' + list server '/openwrt.org/8.8.8.8' + list server '/pool.ntp.org/8.8.8.8' + list server '127.0.0.1#15353' + list server '127.0.0.1#55353' + list server '127.0.0.1#65353' +``` + +The https-dns-proxy instance settings are: + +|Parameter|Type|Default|Description| +| --- | --- | --- | --- | +|bootstrap_dns|IP Address||The non-encrypted DNS servers to be used to resolve the DoH server name on start.| +|edns_subnet|Subnet||EDNS Subnet address can be supplied to supported DoH servers to provide local resolution results.| +|listen_addr|IP Address|127.0.0.1|The local IP address to listen to requests.| +|listen_port|port|5053 and up|If this setting is omitted, the service will start the first https-dns-proxy instance on port 5053, second on 5054 and so on.| +|logfile|Full filepath||Full filepath to the file to log the instance events to.| +|resolver_url|URL||The https URL to the RFC8484-compatible resolver.| +|proxy_server|URL||Local proxy server to use when accessing resolvers.| +|user|String|nobody|Local user to run instance under.| +|group|String|nogroup|Local group to run instance under.| +|use_http1|Boolean|0|If set to 1, use HTTP/1 on installations with broken/outdated ```curl``` package. Included for posterity reasons, you will most likely not ever need it on OpenWrt.| +|verbosity|Integer|0|logging verbosity level. fatal = 0, error = 1, warning = 2, info = 3, debug = 4| +|use_ipv6_resolvers_only|Boolean|0|If set to 1, Forces IPv6 DNS resolvers instead of IPv4| + +## Thanks + +This OpenWrt package wouldn't have been possible without [@aarond10](https://github.com/aarond10)'s [https-dns-proxy](https://github.com/aarond10/https_dns_proxy) and his active participation in the OpenWrt package itself. Special thanks to [@jow-](https://github.com/jow-) for general package/luci guidance. diff --git a/https-dns-proxy/files/https-dns-proxy.config b/https-dns-proxy/files/https-dns-proxy.config new file mode 100644 index 000000000..3c5eecf4d --- /dev/null +++ b/https-dns-proxy/files/https-dns-proxy.config @@ -0,0 +1,18 @@ +config main 'config' + option update_dnsmasq_config '*' + +config https-dns-proxy + option bootstrap_dns '8.8.8.8,8.8.4.4' + option resolver_url 'https://dns.google/dns-query' + option listen_addr '127.0.0.1' + option listen_port '5053' + option user 'nobody' + option group 'nogroup' + +config https-dns-proxy + option bootstrap_dns '1.1.1.1,1.0.0.1' + option resolver_url 'https://cloudflare-dns.com/dns-query' + option listen_addr '127.0.0.1' + option listen_port '5054' + option user 'nobody' + option group 'nogroup' diff --git a/https-dns-proxy/files/https-dns-proxy.init b/https-dns-proxy/files/https-dns-proxy.init new file mode 100755 index 000000000..5ca0bd133 --- /dev/null +++ b/https-dns-proxy/files/https-dns-proxy.init @@ -0,0 +1,188 @@ +#!/bin/sh /etc/rc.common +# Copyright 2019 Stan Grishin (stangri@melmac.net) +# shellcheck disable=SC2039 + +export START=80 +export USE_PROCD=1 + +dnsmasqConfig='' + +PROG=/usr/sbin/https-dns-proxy + +xappend() { param="$param $1"; } + +append_bool() { + local section="$1" + local option="$2" + local value="$3" + local default="$4" + local _loctmp + [ -z "$default" ] && default="0" + config_get_bool _loctmp "$section" "$option" "$default" + [ "$_loctmp" != "0" ] && xappend "$value" +} + +append_parm() { + local section="$1" + local option="$2" + local switch="$3" + local default="$4" + local _loctmp + config_get _loctmp "$section" "$option" "$default" + [ -z "$_loctmp" ] && return 0 + xappend "$switch $_loctmp" +} + +start_instance() { + local cfg="$1" param listen_addr listen_port i + + append_parm "$cfg" 'listen_addr' '-a' '127.0.0.1' + append_parm "$cfg" 'listen_port' '-p' "$p" + append_parm "$cfg" 'bootstrap_dns' '-b' + append_parm "$cfg" 'resolver_url' '-r' + append_parm "$cfg" 'user' '-u' 'nobody' + append_parm "$cfg" 'group' '-g' 'nogroup' + append_parm "$cfg" 'edns_subnet' '-e' + append_parm "$cfg" 'proxy_server' '-t' + append_parm "$cfg" 'logfile' '-l' + append_bool "$cfg" 'use_http1' '-x' + config_get_bool ipv6_resolvers_only "$cfg" 'use_ipv6_resolvers_only' '0' + config_get verbosity "$cfg" 'verbosity' "0" + +# shellcheck disable=SC2086,SC2154 + for i in $(seq 1 $verbosity); do + xappend "-v" + done +# shellcheck disable=SC2154 + if [ "$ipv6_resolvers_only" = 0 ]; then + xappend "-4" + fi + + procd_open_instance +# shellcheck disable=SC2086 + procd_set_param command ${PROG} ${param} + procd_set_param stderr 1 + procd_set_param stdout 1 + procd_set_param respawn + procd_close_instance + + config_get listen_addr "$cfg" 'listen_addr' '127.0.0.1' + config_get listen_port "$cfg" 'listen_port' "$p" + + if [ "$dnsmasqConfig" = "*" ]; then + config_load 'dhcp' + config_foreach dnsmasq_add_doh_server 'dnsmasq' "${listen_addr}" "${listen_port}" + elif [ -n "$dnsmasqConfig" ]; then + for i in $dnsmasqConfig; do + dnsmasq_add_doh_server "@dnsmasq[${i}]" "${listen_addr}" "${listen_port}" + done + fi + p="$((p+1))" +} + +service_triggers() { + procd_add_reload_trigger 'https-dns-proxy' +} + +start_service() { + local p=5053 + config_load 'https-dns-proxy' + config_get dnsmasqConfig 'config' 'update_dnsmasq_config' '*' + dhcp_backup 'create' + config_load 'https-dns-proxy' + config_foreach start_instance 'https-dns-proxy' + if [ "$p" != "5053" ] && [ "$dnsmasqConfig" = "*" ]; then + uci -q del_list "dhcp.@dnsmasq[0].server=127.0.0.1#5353" + fi + if [ -n "$(uci -q changes dhcp)" ]; then + uci -q commit dhcp + [ -x /etc/init.d/dnsmasq ] && /etc/init.d/dnsmasq restart >/dev/null 2>&1 + fi +} + +stop_service() { + config_load 'https-dns-proxy' + config_get dnsmasqConfig 'config' 'update_dnsmasq_config' '*' + dhcp_backup 'restore' + if [ -n "$(uci -q changes dhcp)" ]; then + uci -q commit dhcp + [ -x /etc/init.d/dnsmasq ] && /etc/init.d/dnsmasq restart >/dev/null 2>&1 + fi +} + +service_triggers() { + procd_add_reload_trigger 'https-dns-proxy' +} + +dnsmasq_add_doh_server() { + local cfg="$1" address="$2" port="$3" + case $address in + 0.0.0.0|::ffff:0.0.0.0) address='127.0.0.1';; + ::) address='::1';; + esac + uci -q del_list "dhcp.${cfg}.server=${address}#${port}" + uci -q add_list "dhcp.${cfg}.server=${address}#${port}" +} + +dnsmasq_create_server_backup() { + local cfg="$1" + local i + uci -q get "dhcp.${cfg}" >/dev/null || return 0 + if ! uci -q get "dhcp.${cfg}.doh_backup_noresolv" >/dev/null; then + if [ -z "$(uci -q get "dhcp.${cfg}.noresolv")" ]; then + uci -q set "dhcp.${cfg}.noresolv=1" + uci -q set "dhcp.${cfg}.doh_backup_noresolv=-1" + elif [ "$(uci -q get "dhcp.${cfg}.noresolv")" != "1" ]; then + uci -q set "dhcp.${cfg}.noresolv=1" + uci -q set "dhcp.${cfg}.doh_backup_noresolv=0" + fi + fi + if ! uci -q get "dhcp.${cfg}.doh_backup_server" >/dev/null; then + for i in $(uci -q get "dhcp.${cfg}.server"); do + uci -q add_list "dhcp.${cfg}.doh_backup_server=$i" + if [ "$i" = "${i//127.0.0.1}" ] && [ "$i" = "$(echo "$i" | tr -d /)" ]; then + uci -q del_list "dhcp.${cfg}.server=$i" + fi + done + fi +} + +dnsmasq_restore_server_backup() { + local cfg="$1" + local i + uci -q get "dhcp.${cfg}" >/dev/null || return 0 + if uci -q get "dhcp.${cfg}.doh_backup_noresolv" >/dev/null; then + if [ "$(uci -q get "dhcp.${cfg}.doh_backup_noresolv")" = "0" ]; then + uci -q set "dhcp.${cfg}.noresolv=0" + else + uci -q del "dhcp.${cfg}.noresolv" + fi + uci -q del "dhcp.${cfg}.doh_backup_noresolv" + fi + if uci -q get "dhcp.${cfg}.doh_backup_server" >/dev/null; then + uci -q del "dhcp.${cfg}.server" + for i in $(uci -q get "dhcp.${cfg}.doh_backup_server"); do + uci -q add_list "dhcp.${cfg}.server=$i" + done + uci -q del "dhcp.${cfg}.doh_backup_server" + fi +} + +dhcp_backup() { + local i + config_load 'dhcp' + case "$1" in + create) + if [ "$dnsmasqConfig" = "*" ]; then + config_foreach dnsmasq_create_server_backup 'dnsmasq' + elif [ -n "$dnsmasqConfig" ]; then + for i in $dnsmasqConfig; do + dnsmasq_create_server_backup "@dnsmasq[${i}]" + done + fi + ;; + restore) + config_foreach dnsmasq_restore_server_backup 'dnsmasq' + ;; + esac +} diff --git a/iptables-mod-fullconenat/Makefile b/iptables-mod-fullconenat/Makefile new file mode 100644 index 000000000..279c1eb9a --- /dev/null +++ b/iptables-mod-fullconenat/Makefile @@ -0,0 +1,65 @@ +# +# Copyright (C) 2018 Chion Tang +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=fullconenat +PKG_RELEASE:=1 + +PKG_SOURCE_DATE:=2019-10-21 +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/Chion82/netfilter-full-cone-nat.git +PKG_SOURCE_VERSION:=0cf3b48fd7d2fa81d0297d1fff12bbd0580fc435 + +PKG_LICENSE:=GPL-2.0 +PKG_LICENSE_FILES:=LICENSE + +include $(INCLUDE_DIR)/package.mk + +define Package/iptables-mod-fullconenat + SUBMENU:=Firewall + SECTION:=net + CATEGORY:=Network + TITLE:=FULLCONENAT iptables extension + DEPENDS:=+iptables +kmod-ipt-fullconenat + MAINTAINER:=Chion Tang +endef + +define Package/iptables-mod-fullconenat/install + $(INSTALL_DIR) $(1)/usr/lib/iptables + $(INSTALL_BIN) $(PKG_BUILD_DIR)/libipt_FULLCONENAT.so $(1)/usr/lib/iptables +endef + +define KernelPackage/ipt-fullconenat + SUBMENU:=Netfilter Extensions + TITLE:=FULLCONENAT netfilter module + DEPENDS:=+kmod-nf-ipt +kmod-nf-nat + MAINTAINER:=Chion Tang + KCONFIG:=CONFIG_NF_CONNTRACK_EVENTS=y CONFIG_NF_CONNTRACK_CHAIN_EVENTS=y + FILES:=$(PKG_BUILD_DIR)/xt_FULLCONENAT.ko +endef + +include $(INCLUDE_DIR)/kernel-defaults.mk + +define Build/Prepare + $(call Build/Prepare/Default) + $(CP) ./files/Makefile $(PKG_BUILD_DIR)/ +endef + +define Build/Compile + +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + ARCH="$(LINUX_KARCH)" \ + M="$(PKG_BUILD_DIR)" \ + EXTRA_CFLAGS="$(BUILDFLAGS)" \ + modules + $(call Build/Compile/Default) +endef + +$(eval $(call BuildPackage,iptables-mod-fullconenat)) +$(eval $(call KernelPackage,ipt-fullconenat)) diff --git a/iptables-mod-fullconenat/README.md b/iptables-mod-fullconenat/README.md new file mode 100644 index 000000000..4d4909802 --- /dev/null +++ b/iptables-mod-fullconenat/README.md @@ -0,0 +1,27 @@ +## Netfilter and iptables extension for [FULLCONENAT](https://github.com/Chion82/netfilter-full-cone-nat) target ported to OpenWrt. + +Compile +--- +``` +# cd to OpenWrt source path +# Clone this repo +git clone -b master --single-branch https://github.com/LGA1150/openwrt-fullconenat package/fullconenat +# Select Network -> Firewall -> iptables-mod-fullconenat +make menuconfig +# Compile +make V=s +``` + +Usage +--- +You can apply [this patch](https://github.com/LGA1150/fullconenat-fw3-patch) to OpenWrt's Firewall3 (Recommended). + +Or manually add the following rules to `/etc/firewall.user` +``` +iptables -t nat -A zone_wan_prerouting -j FULLCONENAT +iptables -t nat -A zone_wan_postrouting -j FULLCONENAT +``` + +Workaround for conflicting with module `nf_conntrack_netlink` +--- +This module uses conntrack events to register a callback function. In the same netns, only one callback method can be registered, that causes conflicts with `nf_conntrack_netlink`, which also uses conntrack events. Qualcomm Shortcut FE has introduced a patch to allow multiple callbacks to be registered. To apply, put [this patch](https://github.com/coolsnowwolf/lede/blob/master/target/linux/generic/hack-4.14/952-net-conntrack-events-support-multiple-registrant.patch) into `target/linux/generic/hack-4.14`. diff --git a/iptables-mod-fullconenat/files/Makefile b/iptables-mod-fullconenat/files/Makefile new file mode 100644 index 000000000..da52a2a4e --- /dev/null +++ b/iptables-mod-fullconenat/files/Makefile @@ -0,0 +1,7 @@ +libipt_FULLCONENAT.so: libipt_FULLCONENAT.o + $(CC) -shared -lxtables -o $@ $^; +libipt_FULLCONENAT.o: libipt_FULLCONENAT.c + $(CC) ${CFLAGS} -fPIC -D_INIT=$*_init -c -o $@ $<; + +obj-m += xt_FULLCONENAT.o + diff --git a/iptables-mod-fullconenat/patches/000-printk.patch b/iptables-mod-fullconenat/patches/000-printk.patch new file mode 100644 index 000000000..4e764c5d6 --- /dev/null +++ b/iptables-mod-fullconenat/patches/000-printk.patch @@ -0,0 +1,17 @@ +diff --git a/xt_FULLCONENAT.c b/xt_FULLCONENAT.c +index 9e52eba..8658c5f 100644 +--- a/xt_FULLCONENAT.c ++++ b/xt_FULLCONENAT.c +@@ -702,9 +702,11 @@ static struct xt_target tg_reg[] __read_mostly = { + + static int __init fullconenat_tg_init(void) + { ++ printk(KERN_INFO "xt_FULLCONENAT: RFC3489 Full Cone NAT module\n" ++ "xt_FULLCONENAT: Copyright (C) 2018 Chion Tang \n"); + wq = create_singlethread_workqueue("xt_FULLCONENAT"); + if (wq == NULL) { +- printk("xt_FULLCONENAT: warning: failed to create workqueue\n"); ++ printk(KERN_WARNING "xt_FULLCONENAT: warning: failed to create workqueue\n"); + } + + return xt_register_targets(tg_reg, ARRAY_SIZE(tg_reg)); diff --git a/libell/Makefile b/libell/Makefile new file mode 100644 index 000000000..99ac29e1f --- /dev/null +++ b/libell/Makefile @@ -0,0 +1,44 @@ +# +# Copyright (C) 2020 Ycarus (Yannick Chabanois) +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=ell +PKG_VERSION:=0.30 +PKG_RELEASE:=1 +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_HASH:=51cf8cc66a9d1038e41f7d619ea5660aa4476904496562b2d45ca79370ca4a5e +PKG_SOURCE_URL:=@KERNEL/linux/libs/ell +PKG_LICENSE:=GPL-2.0 +PKG_LICENSE_FILES:=GPL +PKG_INSTALL:=1 +PKG_MAINTAINER:=Ycarus + +include $(INCLUDE_DIR)/package.mk + +define Package/libell + SECTION:=libs + CATEGORY:=Libraries + TITLE:=Embedded Linux library + URL:=https://git.kernel.org/pub/scm/libs/ell/ell.git +endef + +define Package/libell/description + Embeded Linux library +endef + +define Package/libell/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libell*.so* $(1)/usr/lib +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1) + $(CP) $(PKG_INSTALL_DIR)/* $(1)/ +endef + +$(eval $(call BuildPackage,libell)) diff --git a/luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json b/luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json new file mode 100644 index 000000000..c4c7f00c9 --- /dev/null +++ b/luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json @@ -0,0 +1,11 @@ +{ + "luci-app-dsvpn": { + "description": "Grant UCI access for luci-app-dsvpn", + "read": { + "uci": [ "dsvpn" ] + }, + "write": { + "uci": [ "dsvpn" ] + } + } +} \ No newline at end of file diff --git a/luci-app-firewall/Makefile b/luci-app-firewall/Makefile new file mode 100644 index 000000000..9d308b0e1 --- /dev/null +++ b/luci-app-firewall/Makefile @@ -0,0 +1,16 @@ +# +# Copyright (C) 2008-2014 The LuCI Team +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Firewall and Portforwarding application +LUCI_DEPENDS:=+firewall + +PKG_LICENSE:=Apache-2.0 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js b/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js new file mode 100644 index 000000000..e85b6bc6e --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js @@ -0,0 +1,655 @@ +'use strict'; +'require baseclass'; +'require dom'; +'require ui'; +'require uci'; +'require form'; +'require network'; +'require firewall'; +'require tools.prng as random'; + +var protocols = [ + 'ip', 0, 'IP', + 'hopopt', 0, 'HOPOPT', + 'icmp', 1, 'ICMP', + 'igmp', 2, 'IGMP', + 'ggp', 3 , 'GGP', + 'ipencap', 4, 'IP-ENCAP', + 'st', 5, 'ST', + 'tcp', 6, 'TCP', + 'egp', 8, 'EGP', + 'igp', 9, 'IGP', + 'pup', 12, 'PUP', + 'udp', 17, 'UDP', + 'hmp', 20, 'HMP', + 'xns-idp', 22, 'XNS-IDP', + 'rdp', 27, 'RDP', + 'iso-tp4', 29, 'ISO-TP4', + 'dccp', 33, 'DCCP', + 'xtp', 36, 'XTP', + 'ddp', 37, 'DDP', + 'idpr-cmtp', 38, 'IDPR-CMTP', + 'ipv6', 41, 'IPv6', + 'ipv6-route', 43, 'IPv6-Route', + 'ipv6-frag', 44, 'IPv6-Frag', + 'idrp', 45, 'IDRP', + 'rsvp', 46, 'RSVP', + 'gre', 47, 'GRE', + 'esp', 50, 'IPSEC-ESP', + 'ah', 51, 'IPSEC-AH', + 'skip', 57, 'SKIP', + 'icmpv6', 58, 'IPv6-ICMP', + 'ipv6-icmp', 58, 'IPv6-ICMP', + 'ipv6-nonxt', 59, 'IPv6-NoNxt', + 'ipv6-opts', 60, 'IPv6-Opts', + 'rspf', 73, 'RSPF', + 'rspf', 73, 'CPHB', + 'vmtp', 81, 'VMTP', + 'eigrp', 88, 'EIGRP', + 'ospf', 89, 'OSPFIGP', + 'ax.25', 93, 'AX.25', + 'ipip', 94, 'IPIP', + 'etherip', 97, 'ETHERIP', + 'encap', 98, 'ENCAP', + 'pim', 103, 'PIM', + 'ipcomp', 108, 'IPCOMP', + 'vrrp', 112, 'VRRP', + 'l2tp', 115, 'L2TP', + 'isis', 124, 'ISIS', + 'sctp', 132, 'SCTP', + 'fc', 133, 'FC', + 'mh', 135, 'Mobility-Header', + 'ipv6-mh', 135, 'Mobility-Header', + 'mobility-header', 135, 'Mobility-Header', + 'udplite', 136, 'UDPLite', + 'mpls-in-ip', 137, 'MPLS-in-IP', + 'manet', 138, 'MANET', + 'hip', 139, 'HIP', + 'shim6', 140, 'Shim6', + 'wesp', 141, 'WESP', + 'rohc', 142, 'ROHC', +]; + +function lookupProto(x) { + if (x == null || x === '') + return null; + + var s = String(x).toLowerCase(); + + for (var i = 0; i < protocols.length; i += 3) + if (s == protocols[i] || s == protocols[i+1]) + return [ protocols[i+1], protocols[i+2], protocols[i] ]; + + return [ -1, x, x ]; +} + +return baseclass.extend({ + fmt: function(fmtstr, args, values) { + var repl = [], + wrap = false, + tokens = []; + + if (values == null) { + values = []; + wrap = true; + } + + var get = function(args, key) { + var names = key.trim().split(/\./), + obj = args, + ctx = obj; + + for (var i = 0; i < names.length; i++) { + if (!L.isObject(obj)) + return null; + + ctx = obj; + obj = obj[names[i]]; + } + + if (typeof(obj) == 'function') + return obj.call(ctx); + + return obj; + }; + + var isset = function(val) { + if (L.isObject(val) && !dom.elem(val)) { + for (var k in val) + if (val.hasOwnProperty(k)) + return true; + + return false; + } + else if (Array.isArray(val)) { + return (val.length > 0); + } + else { + return (val !== null && val !== undefined && val !== '' && val !== false); + } + }; + + var parse = function(tokens, text) { + if (dom.elem(text)) { + tokens.push(''.format(values.length)); + values.push(text); + } + else { + tokens.push(String(text).replace(/\\(.)/g, '$1')); + } + }; + + for (var i = 0, last = 0; i <= fmtstr.length; i++) { + if (fmtstr.charAt(i) == '%' && fmtstr.charAt(i + 1) == '{') { + if (i > last) + parse(tokens, fmtstr.substring(last, i)); + + var j = i + 1, nest = 0; + + var subexpr = []; + + for (var off = j + 1, esc = false; j <= fmtstr.length; j++) { + var ch = fmtstr.charAt(j); + + if (esc) { + esc = false; + } + else if (ch == '\\') { + esc = true; + } + else if (ch == '{') { + nest++; + } + else if (ch == '}') { + if (--nest == 0) { + subexpr.push(fmtstr.substring(off, j)); + break; + } + } + else if (ch == '?' || ch == ':' || ch == '#') { + if (nest == 1) { + subexpr.push(fmtstr.substring(off, j)); + subexpr.push(ch); + off = j + 1; + } + } + } + + var varname = subexpr[0].trim(), + op1 = (subexpr[1] != null) ? subexpr[1] : '?', + if_set = (subexpr[2] != null && subexpr[2] != '') ? subexpr[2] : '%{' + varname + '}', + op2 = (subexpr[3] != null) ? subexpr[3] : ':', + if_unset = (subexpr[4] != null) ? subexpr[4] : ''; + + /* Invalid expression */ + if (nest != 0 || subexpr.length > 5 || varname == '') { + return fmtstr; + } + + /* enumeration */ + else if (op1 == '#' && subexpr.length == 3) { + var items = L.toArray(get(args, varname)); + + for (var k = 0; k < items.length; k++) { + tokens.push.apply(tokens, this.fmt(if_set, Object.assign({}, args, { + first: k == 0, + next: k > 0, + last: (k + 1) == items.length, + item: items[k] + }), values)); + } + } + + /* ternary expression */ + else if (op1 == '?' && op2 == ':' && (subexpr.length == 1 || subexpr.length == 3 || subexpr.length == 5)) { + var val = get(args, varname); + + if (subexpr.length == 1) + parse(tokens, isset(val) ? val : ''); + else if (isset(val)) + tokens.push.apply(tokens, this.fmt(if_set, args, values)); + else + tokens.push.apply(tokens, this.fmt(if_unset, args, values)); + } + + /* unrecognized command */ + else { + return fmtstr; + } + + last = j + 1; + i = j; + } + else if (i >= fmtstr.length) { + if (i > last) + parse(tokens, fmtstr.substring(last, i)); + } + } + + if (wrap) { + var node = E('span', {}, tokens.join('')), + repl = node.querySelectorAll('span[data-fmt-placeholder]'); + + for (var i = 0; i < repl.length; i++) + repl[i].parentNode.replaceChild(values[repl[i].getAttribute('data-fmt-placeholder')], repl[i]); + + return node; + } + else { + return tokens; + } + }, + + map_invert: function(v, fn) { + return L.toArray(v).map(function(v) { + v = String(v); + + if (fn != null && typeof(v[fn]) == 'function') + v = v[fn].call(v); + + return { + ival: v, + inv: v.charAt(0) == '!', + val: v.replace(/^!\s*/, '') + }; + }); + }, + + lookupProto: lookupProto, + + addDSCPOption: function(s, is_target) { + var o = s.taboption(is_target ? 'general' : 'advanced', form.Value, is_target ? 'set_dscp' : 'dscp', + is_target ? _('DSCP mark') : _('Match DSCP'), + is_target ? _('Apply the given DSCP class or value to established connections.') : _('Matches traffic carrying the specified DSCP marking.')); + + o.modalonly = true; + o.rmempty = !is_target; + o.placeholder = _('any'); + + if (is_target) + o.depends('target', 'DSCP'); + + o.value('CS0'); + o.value('CS1'); + o.value('CS2'); + o.value('CS3'); + o.value('CS4'); + o.value('CS5'); + o.value('CS6'); + o.value('CS7'); + o.value('BE'); + o.value('AF11'); + o.value('AF12'); + o.value('AF13'); + o.value('AF21'); + o.value('AF22'); + o.value('AF23'); + o.value('AF31'); + o.value('AF32'); + o.value('AF33'); + o.value('AF41'); + o.value('AF42'); + o.value('AF43'); + o.value('EF'); + o.validate = function(section_id, value) { + if (value == '') + return is_target ? _('DSCP mark required') : true; + + if (!is_target) + value = String(value).replace(/^!\s*/, ''); + + var m = value.match(/^(?:CS[0-7]|BE|AF[1234][123]|EF|(0x[0-9a-f]{1,2}|[0-9]{1,2}))$/); + + if (!m || (m[1] != null && +m[1] > 0x3f)) + return _('Invalid DSCP mark'); + + return true; + }; + + return o; + }, + + addMarkOption: function(s, is_target) { + var o = s.taboption(is_target ? 'general' : 'advanced', form.Value, + (is_target > 1) ? 'set_xmark' : (is_target ? 'set_mark' : 'mark'), + (is_target > 1) ? _('XOR mark') : (is_target ? _('Set mark') : _('Match mark')), + (is_target > 1) ? _('Apply a bitwise XOR of the given value and the existing mark value on established connections. Format is value[/mask]. If a mask is specified then those bits set in the mask are zeroed out.') : + (is_target ? _('Set the given mark value on established connections. Format is value[/mask]. If a mask is specified then only those bits set in the mask are modified.') : + _('Matches a specific firewall mark or a range of different marks.'))); + + o.modalonly = true; + o.rmempty = true; + + if (is_target > 1) + o.depends('target', 'MARK_XOR'); + else if (is_target) + o.depends('target', 'MARK_SET'); + + o.validate = function(section_id, value) { + if (value == '') + return is_target ? _('Valid firewall mark required') : true; + + if (!is_target) + value = String(value).replace(/^!\s*/, ''); + + var m = value.match(/^(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i); + + if (!m || +m[1] > 0xffffffff || (m[2] != null && +m[2] > 0xffffffff)) + return _('Expecting: %s').format(_('valid firewall mark')); + + return true; + }; + + return o; + }, + + addLimitOption: function(s) { + var o = s.taboption('advanced', form.Value, 'limit', + _('Limit matching'), + _('Limits traffic matching to the specified rate.')); + + o.modalonly = true; + o.rmempty = true; + o.placeholder = _('unlimited'); + o.value('10/second'); + o.value('60/minute'); + o.value('3/hour'); + o.value('500/day'); + o.validate = function(section_id, value) { + if (value == '') + return true; + + var m = String(value).toLowerCase().match(/^(?:0x[0-9a-f]{1,8}|[0-9]{1,10})\/([a-z]+)$/), + u = ['second', 'minute', 'hour', 'day'], + i = 0; + + if (m) + for (i = 0; i < u.length; i++) + if (u[i].indexOf(m[1]) == 0) + break; + + if (!m || i >= u.length) + return _('Invalid limit value'); + + return true; + }; + + return o; + }, + + addLimitBurstOption: function(s) { + var o = s.taboption('advanced', form.Value, 'limit_burst', + _('Limit burst'), + _('Maximum initial number of packets to match: this number gets recharged by one every time the limit specified above is not reached, up to this number.')); + + o.modalonly = true; + o.rmempty = true; + o.placeholder = '5'; + o.datatype = 'uinteger'; + o.depends({ limit: null, '!reverse': true }); + + return o; + }, + + transformHostHints: function(family, hosts) { + var choice_values = [], choice_labels = {}; + + if (!family || family == 'ipv4') { + L.sortedKeys(hosts, 'ipv4', 'addr').forEach(function(mac) { + var val = hosts[mac].ipv4, + txt = hosts[mac].name || mac; + + choice_values.push(val); + choice_labels[val] = E([], [ val, ' (', E('strong', {}, [txt]), ')' ]); + }); + } + + if (!family || family == 'ipv6') { + L.sortedKeys(hosts, 'ipv6', 'addr').forEach(function(mac) { + var val = hosts[mac].ipv6, + txt = hosts[mac].name || mac; + + choice_values.push(val); + choice_labels[val] = E([], [ val, ' (', E('strong', {}, [txt]), ')' ]); + }); + } + + return [choice_values, choice_labels]; + }, + + updateHostHints: function(map, section_id, option, family, hosts) { + var opt = map.lookupOption(option, section_id)[0].getUIElement(section_id), + choices = this.transformHostHints(family, hosts); + + opt.clearChoices(); + opt.addChoices(choices[0], choices[1]); + }, + + addIPOption: function(s, tab, name, label, description, family, hosts, multiple) { + var o = s.taboption(tab, multiple ? form.DynamicList : form.Value, name, label, description); + + o.modalonly = true; + o.datatype = 'list(neg(ipmask))'; + o.placeholder = multiple ? _('-- add IP --') : _('any'); + + if (family != null) { + var choices = this.transformHostHints(family, hosts); + + for (var i = 0; i < choices[0].length; i++) + o.value(choices[0][i], choices[1][choices[0][i]]); + } + + /* force combobox rendering */ + o.transformChoices = function() { + return this.super('transformChoices', []) || {}; + }; + + return o; + }, + + addLocalIPOption: function(s, tab, name, label, description, devices) { + var o = s.taboption(tab, form.Value, name, label, description); + + o.modalonly = true; + o.datatype = 'ip4addr("nomask")'; + o.placeholder = _('any'); + + L.sortedKeys(devices, 'name').forEach(function(dev) { + var ip4addrs = devices[dev].ipaddrs; + + if (!L.isObject(devices[dev].flags) || !Array.isArray(ip4addrs) || devices[dev].flags.loopback) + return; + + for (var i = 0; i < ip4addrs.length; i++) { + if (!L.isObject(ip4addrs[i]) || !ip4addrs[i].address) + continue; + + o.value(ip4addrs[i].address, E([], [ + ip4addrs[i].address, ' (', E('strong', {}, [dev]), ')' + ])); + } + }); + + return o; + }, + + addMACOption: function(s, tab, name, label, description, hosts) { + var o = s.taboption(tab, form.DynamicList, name, label, description); + + o.modalonly = true; + o.datatype = 'list(macaddr)'; + o.placeholder = _('-- add MAC --'); + + L.sortedKeys(hosts).forEach(function(mac) { + o.value(mac, E([], [ mac, ' (', E('strong', {}, [ + hosts[mac].name || hosts[mac].ipv4 || hosts[mac].ipv6 || '?' + ]), ')' ])); + }); + + return o; + }, + + CBIProtocolSelect: form.MultiValue.extend({ + __name__: 'CBI.ProtocolSelect', + + addChoice: function(value, label) { + if (!Array.isArray(this.keylist) || this.keylist.indexOf(value) == -1) + this.value(value, label); + }, + + load: function(section_id) { + var cfgvalue = L.toArray(this.super('load', [section_id]) || this.default).sort(); + + ['all', 'tcp', 'udp', 'icmp'].concat(cfgvalue).forEach(L.bind(function(value) { + switch (value) { + case 'all': + case 'any': + case '*': + this.addChoice('all', _('Any')); + break; + + case 'tcpudp': + this.addChoice('tcp', 'TCP'); + this.addChoice('udp', 'UDP'); + break; + + default: + var m = value.match(/^(0x[0-9a-f]{1,2}|[0-9]{1,3})$/), + p = lookupProto(m ? +m[1] : value); + + this.addChoice(p[2], p[1]); + break; + } + }, this)); + + return cfgvalue; + }, + + renderWidget: function(section_id, option_index, cfgvalue) { + var value = (cfgvalue != null) ? cfgvalue : this.default, + choices = this.transformChoices(); + + var widget = new ui.Dropdown(L.toArray(value), choices, { + id: this.cbid(section_id), + sort: this.keylist, + multiple: true, + optional: false, + display_items: 10, + dropdown_items: -1, + create: true, + validate: function(value) { + var v = L.toArray(value); + + for (var i = 0; i < v.length; i++) { + if (v[i] == 'all') + continue; + + var m = v[i].match(/^(0x[0-9a-f]{1,2}|[0-9]{1,3})$/); + + if (m ? (+m[1] > 255) : (lookupProto(v[i])[0] == -1)) + return _('Unrecognized protocol'); + } + + return true; + } + }); + + widget.createChoiceElement = function(sb, value) { + var m = value.match(/^(0x[0-9a-f]{1,2}|[0-9]{1,3})$/), + p = lookupProto(lookupProto(m ? +m[1] : value)[0]); + + return ui.Dropdown.prototype.createChoiceElement.call(this, sb, p[2], p[1]); + }; + + widget.createItems = function(sb, value) { + var values = L.toArray(value).map(function(value) { + var m = value.match(/^(0x[0-9a-f]{1,2}|[0-9]{1,3})$/), + p = lookupProto(m ? +m[1] : value); + + return (p[0] > -1) ? p[2] : value; + }); + + return ui.Dropdown.prototype.createItems.call(this, sb, values.join(' ')); + }; + + widget.toggleItem = function(sb, li) { + var value = li.getAttribute('data-value'), + toggleFn = ui.Dropdown.prototype.toggleItem; + + toggleFn.call(this, sb, li); + + if (value == 'all') { + var items = li.parentNode.querySelectorAll('li[data-value]'); + + for (var j = 0; j < items.length; j++) + if (items[j] !== li) + toggleFn.call(this, sb, items[j], false); + } + else { + toggleFn.call(this, sb, li.parentNode.querySelector('li[data-value="all"]'), false); + } + }; + + return widget.render(); + } + }), + + checkLegacySNAT: function() { + var redirects = uci.sections('firewall', 'redirect'); + + for (var i = 0; i < redirects.length; i++) + if ((redirects[i]['target'] || '').toLowerCase() == 'snat') + return true; + + return false; + }, + + handleMigration: function(ev) { + var redirects = uci.sections('firewall', 'redirect'), + tasks = []; + + var mapping = { + dest: 'src', + reflection: null, + reflection_src: null, + src_dip: 'snat_ip', + src_dport: 'snat_port', + src: null + }; + + for (var i = 0; i < redirects.length; i++) { + if ((redirects[i]['target'] || '').toLowerCase() != 'snat') + continue; + + var sid = uci.add('firewall', 'nat'); + + for (var opt in redirects[i]) { + if (opt.charAt(0) == '.') + continue; + + if (mapping[opt] === null) + continue; + + uci.set('firewall', sid, mapping[opt] || opt, redirects[i][opt]); + } + + uci.remove('firewall', redirects[i]['.name']); + } + + return uci.save() + .then(L.bind(ui.changes.init, ui.changes)) + .then(L.bind(ui.changes.apply, ui.changes)); + }, + + renderMigration: function() { + ui.showModal(_('Firewall configuration migration'), [ + E('p', _('The existing firewall configuration needs to be changed for LuCI to function properly.')), + E('p', _('Upon pressing "Continue", "redirect" sections with target "SNAT" will be converted to "nat" sections and the firewall will be restarted to apply the updated configuration.')), + E('div', { 'class': 'right' }, + E('button', { + 'class': 'btn cbi-button-action important', + 'click': ui.createHandlerFn(this, 'handleMigration') + }, _('Continue'))) + ]); + }, +}); diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js new file mode 100644 index 000000000..ca870552a --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js @@ -0,0 +1,33 @@ +'use strict'; +'require view'; +'require fs'; +'require ui'; + +return view.extend({ + load: function() { + return L.resolveDefault(fs.read('/etc/firewall.user'), ''); + }, + + handleSave: function(ev) { + var value = (document.querySelector('textarea').value || '').trim().replace(/\r\n/g, '\n') + '\n'; + + return fs.write('/etc/firewall.user', value).then(function(rc) { + document.querySelector('textarea').value = value; + ui.addNotification(null, E('p', _('Contents have been saved.')), 'info'); + fs.exec('/etc/init.d/firewall', ['restart']); + }).catch(function(e) { + ui.addNotification(null, E('p', _('Unable to save contents: %s').format(e.message))); + }); + }, + + render: function(fwuser) { + return E([ + E('h2', _('Firewall - Custom Rules')), + E('p', {}, _('Custom rules allow you to execute arbitrary iptables commands which are not otherwise covered by the firewall framework. The commands are executed after each firewall restart, right after the default ruleset has been loaded.')), + E('p', {}, E('textarea', { 'style': 'width:100%', 'rows': 10 }, [ fwuser != null ? fwuser : '' ])) + ]); + }, + + handleSaveApply: null, + handleReset: null +}); diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js new file mode 100644 index 000000000..82703c320 --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js @@ -0,0 +1,291 @@ +'use strict'; +'require view'; +'require ui'; +'require rpc'; +'require uci'; +'require form'; +'require firewall as fwmodel'; +'require tools.firewall as fwtool'; +'require tools.widgets as widgets'; + +function rule_proto_txt(s, ctHelpers) { + var proto = L.toArray(uci.get('firewall', s, 'proto')).filter(function(p) { + return (p != '*' && p != 'any' && p != 'all'); + }).map(function(p) { + var pr = fwtool.lookupProto(p); + return { + num: pr[0], + name: pr[1], + types: (pr[0] == 1 || pr[0] == 58) ? L.toArray(uci.get('firewall', s, 'icmp_type')) : null + }; + }); + + m = String(uci.get('firewall', s, 'helper') || '').match(/^(!\s*)?(\S+)$/); + var h = m ? { + val: m[0].toUpperCase(), + inv: m[1], + name: (ctHelpers.filter(function(ctH) { return ctH.name.toLowerCase() == m[2].toLowerCase() })[0] || {}).description + } : null; + + m = String(uci.get('firewall', s, 'mark')).match(/^(!\s*)?(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i); + var f = m ? { + val: m[0].toUpperCase().replace(/X/g, 'x'), + inv: m[1], + num: '0x%02X'.format(+m[2]), + mask: m[3] ? '0x%02X'.format(+m[3]) : null + } : null; + + return fwtool.fmt(_('Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}'), { + proto: proto, + helper: h, + mark: f + }); +} + +function rule_src_txt(s, hosts) { + var z = uci.get('firewall', s, 'src'); + + return fwtool.fmt(_('From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}'), { + src: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z || E('em', _('this device')))]), + src_ip: fwtool.map_invert(uci.get('firewall', s, 'src_ip'), 'toLowerCase'), + src_mac: fwtool.map_invert(uci.get('firewall', s, 'src_mac'), 'toUpperCase').map(function(v) { return Object.assign(v, { hint: hosts[v.val] }) }), + src_port: fwtool.map_invert(uci.get('firewall', s, 'src_port')) + }); +} + +function rule_dest_txt(s) { + return fwtool.fmt(_('To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}'), { + dest: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName(null) }, [E('em', _('this device'))]), + dest_ip: fwtool.map_invert(uci.get('firewall', s, 'src_dip'), 'toLowerCase'), + dest_port: fwtool.map_invert(uci.get('firewall', s, 'src_dport')) + }); +} + +function rule_limit_txt(s) { + var m = String(uci.get('firewall', s, 'limit')).match(/^(\d+)\/([smhd])\w*$/i), + l = m ? { + num: +m[1], + unit: ({ s: _('second'), m: _('minute'), h: _('hour'), d: _('day') })[m[2]], + burst: uci.get('firewall', s, 'limit_burst') + } : null; + + if (!l) + return ''; + + return fwtool.fmt(_('Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}'), { limit: l }); +} + +function rule_target_txt(s) { + var z = uci.get('firewall', s, 'dest'); + + return fwtool.fmt(_('Forward to %{dest}%{dest_ip? IP %{dest_ip}}%{dest_port? port %{dest_port}}'), { + dest: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z || E('em', _('this device')))]), + dest_ip: (uci.get('firewall', s, 'dest_ip') || '').toLowerCase(), + dest_port: uci.get('firewall', s, 'dest_port') + }); +} + +return view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + callConntrackHelpers: rpc.declare({ + object: 'luci', + method: 'getConntrackHelpers', + expect: { result: [] } + }), + + callNetworkDevices: rpc.declare({ + object: 'luci-rpc', + method: 'getNetworkDevices', + expect: { '': {} } + }), + + load: function() { + return Promise.all([ + this.callHostHints(), + this.callConntrackHelpers(), + this.callNetworkDevices(), + uci.load('firewall') + ]); + }, + + render: function(data) { + if (fwtool.checkLegacySNAT()) + return fwtool.renderMigration(); + else + return this.renderForwards(data); + }, + + renderForwards: function(data) { + var hosts = data[0], + ctHelpers = data[1], + devs = data[2], + m, s, o; + + m = new form.Map('firewall', _('Firewall - Port Forwards'), + _('Port forwarding allows remote computers on the Internet to connect to a specific computer or service within the private LAN.')); + + s = m.section(form.GridSection, 'redirect', _('Port Forwards')); + s.addremove = true; + s.anonymous = true; + s.sortable = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + + s.filter = function(section_id) { + return (uci.get('firewall', section_id, 'target') != 'SNAT'); + }; + + s.sectiontitle = function(section_id) { + return uci.get('firewall', section_id, 'name') || _('Unnamed forward'); + }; + + s.handleAdd = function(ev) { + var config_name = this.uciconfig || this.map.config, + section_id = uci.add(config_name, this.sectiontype); + + uci.set(config_name, section_id, 'target', 'DNAT'); + + this.addedSection = section_id; + this.renderMoreOptionsModal(section_id); + }; + + o = s.taboption('general', form.Value, 'name', _('Name')); + o.placeholder = _('Unnamed forward'); + o.modalonly = true; + + o = s.option(form.DummyValue, '_match', _('Match')); + o.modalonly = false; + o.textvalue = function(s) { + return E('small', [ + rule_proto_txt(s, ctHelpers), E('br'), + rule_src_txt(s, hosts), E('br'), + rule_dest_txt(s), E('br'), + rule_limit_txt(s) + ]); + }; + + o = s.option(form.ListValue, '_dest', _('Action')); + o.modalonly = false; + o.textvalue = function(s) { + return E('small', [ + rule_target_txt(s) + ]); + }; + + o = s.option(form.Flag, 'enabled', _('Enable')); + o.modalonly = false; + o.default = o.enabled; + o.editable = true; + + o = s.taboption('general', fwtool.CBIProtocolSelect, 'proto', _('Protocol')); + o.modalonly = true; + o.default = 'tcp udp'; + + o = s.taboption('general', widgets.ZoneSelect, 'src', _('Source zone')); + o.modalonly = true; + o.rmempty = false; + o.nocreate = true; + o.default = 'wan'; + + o = fwtool.addMACOption(s, 'advanced', 'src_mac', _('Source MAC address'), + _('Only match incoming traffic from these MACs.'), hosts); + o.rmempty = true; + o.datatype = 'list(neg(macaddr))'; + + o = fwtool.addIPOption(s, 'advanced', 'src_ip', _('Source IP address'), + _('Only match incoming traffic from this IP or range.'), 'ipv4', hosts); + o.rmempty = true; + o.datatype = 'neg(ipmask4)'; + + o = s.taboption('advanced', form.Value, 'src_port', _('Source port'), + _('Only match incoming traffic originating from the given source port or port range on the client host')); + o.modalonly = true; + o.rmempty = true; + o.datatype = 'neg(portrange)'; + o.placeholder = _('any'); + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = fwtool.addLocalIPOption(s, 'advanced', 'src_dip', _('External IP address'), + _('Only match incoming traffic directed at the given IP address.'), devs); + o.datatype = 'neg(ipmask4)'; + o.rmempty = true; + + o = s.taboption('general', form.Value, 'src_dport', _('External port'), + _('Match incoming traffic directed at the given destination port or port range on this host')); + o.modalonly = true; + o.rmempty = false; + o.datatype = 'neg(portrange)'; + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = s.taboption('general', widgets.ZoneSelect, 'dest', _('Internal zone')); + o.modalonly = true; + o.rmempty = true; + o.nocreate = true; + o.default = 'lan'; + + o = fwtool.addIPOption(s, 'general', 'dest_ip', _('Internal IP address'), + _('Redirect matched incoming traffic to the specified internal host'), 'ipv4', hosts); + o.rmempty = true; + o.datatype = 'ipmask4'; + + o = s.taboption('general', form.Value, 'dest_port', _('Internal port'), + _('Redirect matched incoming traffic to the given port on the internal host')); + o.modalonly = true; + o.rmempty = true; + o.placeholder = _('any'); + o.datatype = 'portrange'; + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = s.taboption('advanced', form.Flag, 'reflection', _('Enable NAT Loopback')); + o.modalonly = true; + o.rmempty = true; + o.default = o.enabled; + + o = s.taboption('advanced', form.ListValue, 'reflection_src', _('Loopback source IP'), _('Specifies whether to use the external or the internal IP address for reflected traffic.')); + o.modalonly = true; + o.depends('reflection', '1'); + o.value('internal', _('Use internal IP address')); + o.value('external', _('Use external IP address')); + o.write = function(section_id, value) { + uci.set('firewall', section_id, 'reflection_src', (value != 'internal') ? value : null); + }; + + o = s.taboption('advanced', form.Value, 'helper', _('Match helper'), _('Match traffic using the specified connection tracking helper.')); + o.modalonly = true; + o.placeholder = _('any'); + for (var i = 0; i < ctHelpers.length; i++) + o.value(ctHelpers[i].name, '%s (%s)'.format(ctHelpers[i].description, ctHelpers[i].name.toUpperCase())); + o.validate = function(section_id, value) { + if (value == '' || value == null) + return true; + + value = value.replace(/^!\s*/, ''); + + for (var i = 0; i < ctHelpers.length; i++) + if (value == ctHelpers[i].name) + return true; + + return _('Unknown or not installed conntrack helper "%s"').format(value); + }; + + fwtool.addMarkOption(s, false); + fwtool.addLimitOption(s); + fwtool.addLimitBurstOption(s); + + o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'), + _('Passes additional arguments to iptables. Use with care!')); + o.modalonly = true; + o.rmempty = true; + + return m.render(); + } +}); diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js new file mode 100644 index 000000000..8cb1a1242 --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js @@ -0,0 +1,475 @@ +'use strict'; +'require view'; +'require ui'; +'require rpc'; +'require uci'; +'require form'; +'require firewall as fwmodel'; +'require tools.firewall as fwtool'; +'require tools.widgets as widgets'; + +function rule_proto_txt(s, ctHelpers) { + var f = (uci.get('firewall', s, 'family') || '').toLowerCase().replace(/^(?:any|\*)$/, ''); + + var proto = L.toArray(uci.get('firewall', s, 'proto')).filter(function(p) { + return (p != '*' && p != 'any' && p != 'all'); + }).map(function(p) { + var pr = fwtool.lookupProto(p); + return { + num: pr[0], + name: pr[1], + types: (pr[0] == 1 || pr[0] == 58) ? L.toArray(uci.get('firewall', s, 'icmp_type')) : null + }; + }); + + m = String(uci.get('firewall', s, 'helper') || '').match(/^(!\s*)?(\S+)$/); + var h = m ? { + val: m[0].toUpperCase(), + inv: m[1], + name: (ctHelpers.filter(function(ctH) { return ctH.name.toLowerCase() == m[2].toLowerCase() })[0] || {}).description + } : null; + + m = String(uci.get('firewall', s, 'mark')).match(/^(!\s*)?(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i); + var w = m ? { + val: m[0].toUpperCase().replace(/X/g, 'x'), + inv: m[1], + num: '0x%02X'.format(+m[2]), + mask: m[3] ? '0x%02X'.format(+m[3]) : null + } : null; + + m = String(uci.get('firewall', s, 'dscp')).match(/^(!\s*)?(?:(CS[0-7]|BE|AF[1234][123]|EF)|(0x[0-9a-f]{1,2}|[0-9]{1,2}))$/); + var d = m ? { + val: m[0], + inv: m[1], + name: m[2], + num: m[3] ? '0x%02X'.format(+m[3]) : null + } : null; + + return fwtool.fmt(_('%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}'), { + ipv4: (!f || f == 'ipv4'), + ipv6: (!f || f == 'ipv6'), + src: uci.get('firewall', s, 'src'), + dest: uci.get('firewall', s, 'dest'), + proto: proto, + helper: h, + mark: w, + dscp: d + }); +} + +function rule_src_txt(s, hosts) { + var z = uci.get('firewall', s, 'src'), + d = (uci.get('firewall', s, 'direction') == 'in') ? uci.get('firewall', s, 'device') : null; + + return fwtool.fmt(_('From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}'), { + src: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z || E('em', _('this device')))]), + src_ip: fwtool.map_invert(uci.get('firewall', s, 'src_ip'), 'toLowerCase'), + src_mac: fwtool.map_invert(uci.get('firewall', s, 'src_mac'), 'toUpperCase').map(function(v) { return Object.assign(v, { hint: hosts[v.val] }) }), + src_port: fwtool.map_invert(uci.get('firewall', s, 'src_port')), + src_device: d + }); +} + +function rule_dest_txt(s) { + var z = uci.get('firewall', s, 'dest'), + d = (uci.get('firewall', s, 'direction') == 'out') ? uci.get('firewall', s, 'device') : null; + + return fwtool.fmt(_('To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}'), { + dest: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z || E('em', _('this device')))]), + dest_ip: fwtool.map_invert(uci.get('firewall', s, 'dest_ip'), 'toLowerCase'), + dest_port: fwtool.map_invert(uci.get('firewall', s, 'dest_port')), + dest_device: d + }); +} + +function rule_limit_txt(s) { + var m = String(uci.get('firewall', s, 'limit')).match(/^(\d+)\/([smhd])\w*$/i), + l = m ? { + num: +m[1], + unit: ({ s: _('second'), m: _('minute'), h: _('hour'), d: _('day') })[m[2]], + burst: uci.get('firewall', s, 'limit_burst') + } : null; + + if (!l) + return ''; + + return fwtool.fmt(_('Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}'), { limit: l }); +} + +function rule_target_txt(s, ctHelpers) { + var t = uci.get('firewall', s, 'target'), + h = (uci.get('firewall', s, 'set_helper') || '').toUpperCase(), + s = { + target: t, + src: uci.get('firewall', s, 'src'), + dest: uci.get('firewall', s, 'dest'), + set_helper: h, + set_mark: uci.get('firewall', s, 'set_mark'), + set_xmark: uci.get('firewall', s, 'set_xmark'), + set_dscp: uci.get('firewall', s, 'set_dscp'), + helper_name: (ctHelpers.filter(function(ctH) { return ctH.name.toUpperCase() == h })[0] || {}).description + }; + + switch (t) { + case 'DROP': + return fwtool.fmt(_('Drop %{src?%{dest?forward:input}:output}'), s); + + case 'ACCEPT': + return fwtool.fmt(_('Accept %{src?%{dest?forward:input}:output}'), s); + + case 'REJECT': + return fwtool.fmt(_('Reject %{src?%{dest?forward:input}:output}'), s); + + case 'NOTRACK': + return fwtool.fmt(_('Do not track %{src?%{dest?forward:input}:output}'), s); + + case 'HELPER': + return fwtool.fmt(_('Assign conntrack helper %{set_helper}'), s); + + case 'MARK': + return fwtool.fmt(_('%{set_mark?Assign:XOR} firewall mark %{set_mark?:%{set_xmark}}'), s); + + case 'DSCP': + return fwtool.fmt(_('Assign DSCP classification %{set_dscp}'), s); + + default: + return t; + } +} + +return view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + callConntrackHelpers: rpc.declare({ + object: 'luci', + method: 'getConntrackHelpers', + expect: { result: [] } + }), + + load: function() { + return Promise.all([ + this.callHostHints(), + this.callConntrackHelpers(), + uci.load('firewall') + ]); + }, + + render: function(data) { + if (fwtool.checkLegacySNAT()) + return fwtool.renderMigration(); + else + return this.renderRules(data); + }, + + renderRules: function(data) { + var hosts = data[0], + ctHelpers = data[1], + m, s, o; + + m = new form.Map('firewall', _('Firewall - Traffic Rules'), + _('Traffic rules define policies for packets traveling between different zones, for example to reject traffic between certain hosts or to open WAN ports on the router.')); + + s = m.section(form.GridSection, 'rule', _('Traffic Rules')); + s.addremove = true; + s.anonymous = true; + s.sortable = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + s.tab('timed', _('Time Restrictions')); + + s.filter = function(section_id) { + return (uci.get('firewall', section_id, 'target') != 'SNAT'); + }; + + s.sectiontitle = function(section_id) { + return uci.get('firewall', section_id, 'name') || _('Unnamed rule'); + }; + + s.handleAdd = function(ev) { + var config_name = this.uciconfig || this.map.config, + section_id = uci.add(config_name, this.sectiontype), + opt1, opt2; + + for (var i = 0; i < this.children.length; i++) + if (this.children[i].option == 'src') + opt1 = this.children[i]; + else if (this.children[i].option == 'dest') + opt2 = this.children[i]; + + opt1.default = 'wan'; + opt2.default = 'lan'; + + this.addedSection = section_id; + this.renderMoreOptionsModal(section_id); + + delete opt1.default; + delete opt2.default; + }; + + o = s.taboption('general', form.Value, 'name', _('Name')); + o.placeholder = _('Unnamed rule'); + o.modalonly = true; + + o = s.option(form.DummyValue, '_match', _('Match')); + o.modalonly = false; + o.textvalue = function(s) { + return E('small', [ + rule_proto_txt(s, ctHelpers), E('br'), + rule_src_txt(s, hosts), E('br'), + rule_dest_txt(s), E('br'), + rule_limit_txt(s) + ]); + }; + + o = s.option(form.ListValue, '_target', _('Action')); + o.modalonly = false; + o.textvalue = function(s) { + return rule_target_txt(s, ctHelpers); + }; + + o = s.option(form.Flag, 'enabled', _('Enable')); + o.modalonly = false; + o.default = o.enabled; + o.editable = true; + + + o = s.taboption('advanced', form.ListValue, 'direction', _('Match device')); + o.modalonly = true; + o.value('', _('unspecified')); + o.value('in', _('Inbound device')); + o.value('out', _('Outbound device')); + o.cfgvalue = function(section_id) { + var val = uci.get('firewall', section_id, 'direction'); + switch (val) { + case 'in': + case 'ingress': + return 'in'; + + case 'out': + case 'egress': + return 'out'; + } + + return null; + }; + + o = s.taboption('advanced', widgets.DeviceSelect, 'device', _('Device name'), + _('Specifies whether to tie this traffic rule to a specific inbound or outbound network device.')); + o.modalonly = true; + o.noaliases = true; + o.rmempty = false; + o.depends('direction', 'in'); + o.depends('direction', 'out'); + + o = s.taboption('advanced', form.ListValue, 'family', _('Restrict to address family')); + o.modalonly = true; + o.rmempty = true; + o.value('', _('IPv4 and IPv6')); + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.validate = function(section_id, value) { + fwtool.updateHostHints(this.map, section_id, 'src_ip', value, hosts); + fwtool.updateHostHints(this.map, section_id, 'dest_ip', value, hosts); + return true; + }; + + o = s.taboption('general', fwtool.CBIProtocolSelect, 'proto', _('Protocol')); + o.modalonly = true; + o.default = 'tcp udp'; + + o = s.taboption('advanced', form.MultiValue, 'icmp_type', _('Match ICMP type')); + o.modalonly = true; + o.multiple = true; + o.custom = true; + o.cast = 'table'; + o.placeholder = _('any'); + o.value('', 'any'); + o.value('address-mask-reply'); + o.value('address-mask-request'); + o.value('communication-prohibited'); + o.value('destination-unreachable'); + o.value('echo-reply'); + o.value('echo-request'); + o.value('fragmentation-needed'); + o.value('host-precedence-violation'); + o.value('host-prohibited'); + o.value('host-redirect'); + o.value('host-unknown'); + o.value('host-unreachable'); + o.value('ip-header-bad'); + o.value('neighbour-advertisement'); + o.value('neighbour-solicitation'); + o.value('network-prohibited'); + o.value('network-redirect'); + o.value('network-unknown'); + o.value('network-unreachable'); + o.value('parameter-problem'); + o.value('port-unreachable'); + o.value('precedence-cutoff'); + o.value('protocol-unreachable'); + o.value('redirect'); + o.value('required-option-missing'); + o.value('router-advertisement'); + o.value('router-solicitation'); + o.value('source-quench'); + o.value('source-route-failed'); + o.value('time-exceeded'); + o.value('timestamp-reply'); + o.value('timestamp-request'); + o.value('TOS-host-redirect'); + o.value('TOS-host-unreachable'); + o.value('TOS-network-redirect'); + o.value('TOS-network-unreachable'); + o.value('ttl-zero-during-reassembly'); + o.value('ttl-zero-during-transit'); + o.depends({ proto: 'icmp', '!contains': true }); + o.depends({ proto: 'icmpv6', '!contains': true }); + + o = s.taboption('general', widgets.ZoneSelect, 'src', _('Source zone')); + o.modalonly = true; + o.nocreate = true; + o.allowany = true; + o.allowlocal = 'src'; + + fwtool.addMACOption(s, 'advanced', 'src_mac', _('Source MAC address'), null, hosts); + fwtool.addIPOption(s, 'general', 'src_ip', _('Source address'), null, '', hosts, true); + + o = s.taboption('general', form.Value, 'src_port', _('Source port')); + o.modalonly = true; + o.datatype = 'list(neg(portrange))'; + o.placeholder = _('any'); + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = s.taboption('general', widgets.ZoneSelect, 'dest', _('Destination zone')); + o.modalonly = true; + o.nocreate = true; + o.allowany = true; + o.allowlocal = true; + + fwtool.addIPOption(s, 'general', 'dest_ip', _('Destination address'), null, '', hosts, true); + + o = s.taboption('general', form.Value, 'dest_port', _('Destination port')); + o.modalonly = true; + o.datatype = 'list(neg(portrange))'; + o.placeholder = _('any'); + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = s.taboption('general', form.ListValue, 'target', _('Action')); + o.modalonly = true; + o.default = 'ACCEPT'; + o.value('DROP', _('drop')); + o.value('ACCEPT', _('accept')); + o.value('REJECT', _('reject')); + o.value('NOTRACK', _("don't track")); + o.value('HELPER', _('assign conntrack helper')); + o.value('MARK_SET', _('apply firewall mark')); + o.value('MARK_XOR', _('XOR firewall mark')); + o.value('DSCP', _('DSCP classification')); + o.cfgvalue = function(section_id) { + var t = uci.get('firewall', section_id, 'target'), + m = uci.get('firewall', section_id, 'set_mark'); + + if (t == 'MARK') + return m ? 'MARK_SET' : 'MARK_XOR'; + + return t; + }; + o.write = function(section_id, value) { + return this.super('write', [section_id, (value == 'MARK_SET' || value == 'MARK_XOR') ? 'MARK' : value]); + }; + + fwtool.addMarkOption(s, 1); + fwtool.addMarkOption(s, 2); + fwtool.addDSCPOption(s, true); + + o = s.taboption('general', form.ListValue, 'set_helper', _('Tracking helper'), _('Assign the specified connection tracking helper to matched traffic.')); + o.modalonly = true; + o.placeholder = _('any'); + o.depends('target', 'HELPER'); + for (var i = 0; i < ctHelpers.length; i++) + o.value(ctHelpers[i].name, '%s (%s)'.format(ctHelpers[i].description, ctHelpers[i].name.toUpperCase())); + + o = s.taboption('advanced', form.Value, 'helper', _('Match helper'), _('Match traffic using the specified connection tracking helper.')); + o.modalonly = true; + o.placeholder = _('any'); + for (var i = 0; i < ctHelpers.length; i++) + o.value(ctHelpers[i].name, '%s (%s)'.format(ctHelpers[i].description, ctHelpers[i].name.toUpperCase())); + o.validate = function(section_id, value) { + if (value == '' || value == null) + return true; + + value = value.replace(/^!\s*/, ''); + + for (var i = 0; i < ctHelpers.length; i++) + if (value == ctHelpers[i].name) + return true; + + return _('Unknown or not installed conntrack helper "%s"').format(value); + }; + + fwtool.addMarkOption(s, false); + fwtool.addDSCPOption(s, false); + fwtool.addLimitOption(s); + fwtool.addLimitBurstOption(s); + + o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'), + _('Passes additional arguments to iptables. Use with care!')); + o.modalonly = true; + + o = s.taboption('timed', form.MultiValue, 'weekdays', _('Week Days')); + o.modalonly = true; + o.multiple = true; + o.display = 5; + o.placeholder = _('Any day'); + o.value('Sun', _('Sunday')); + o.value('Mon', _('Monday')); + o.value('Tue', _('Tuesday')); + o.value('Wed', _('Wednesday')); + o.value('Thu', _('Thursday')); + o.value('Fri', _('Friday')); + o.value('Sat', _('Saturday')); + o.write = function(section_id, value) { + return this.super('write', [ section_id, L.toArray(value).join(' ') ]); + }; + + o = s.taboption('timed', form.MultiValue, 'monthdays', _('Month Days')); + o.modalonly = true; + o.multiple = true; + o.display_size = 15; + o.placeholder = _('Any day'); + o.write = function(section_id, value) { + return this.super('write', [ section_id, L.toArray(value).join(' ') ]); + }; + for (var i = 1; i <= 31; i++) + o.value(i); + + o = s.taboption('timed', form.Value, 'start_time', _('Start Time (hh.mm.ss)')); + o.modalonly = true; + o.datatype = 'timehhmmss'; + + o = s.taboption('timed', form.Value, 'stop_time', _('Stop Time (hh.mm.ss)')); + o.modalonly = true; + o.datatype = 'timehhmmss'; + + o = s.taboption('timed', form.Value, 'start_date', _('Start Date (yyyy-mm-dd)')); + o.modalonly = true; + o.datatype = 'dateyyyymmdd'; + + o = s.taboption('timed', form.Value, 'stop_date', _('Stop Date (yyyy-mm-dd)')); + o.modalonly = true; + o.datatype = 'dateyyyymmdd'; + + o = s.taboption('timed', form.Flag, 'utc_time', _('Time in UTC')); + o.modalonly = true; + o.default = o.disabled; + + return m.render(); + } +}); diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js new file mode 100644 index 000000000..859dba3e8 --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js @@ -0,0 +1,303 @@ +'use strict'; +'require view'; +'require ui'; +'require rpc'; +'require uci'; +'require form'; +'require firewall as fwmodel'; +'require tools.firewall as fwtool'; +'require tools.widgets as widgets'; + +function rule_proto_txt(s) { + var proto = L.toArray(uci.get('firewall', s, 'proto')).filter(function(p) { + return (p != '*' && p != 'any' && p != 'all'); + }).map(function(p) { + var pr = fwtool.lookupProto(p); + return { + num: pr[0], + name: pr[1] + }; + }); + + m = String(uci.get('firewall', s, 'mark')).match(/^(!\s*)?(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i); + var f = m ? { + val: m[0].toUpperCase().replace(/X/g, 'x'), + inv: m[1], + num: '0x%02X'.format(+m[2]), + mask: m[3] ? '0x%02X'.format(+m[3]) : null + } : null; + + return fwtool.fmt(_('Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}'), { + proto: proto, + mark: f + }); +} + +function rule_src_txt(s, hosts) { + var z = uci.get('firewall', s, 'src'); + + return fwtool.fmt(_('From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}'), { + src: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName(null) }, [E('em', _('any zone'))]), + src_ip: fwtool.map_invert(uci.get('firewall', s, 'src_ip'), 'toLowerCase'), + src_port: fwtool.map_invert(uci.get('firewall', s, 'src_port')) + }); +} + +function rule_dest_txt(s) { + var z = uci.get('firewall', s, 'src'); + + return fwtool.fmt(_('To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}'), { + dest: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z || E('em', _('this device')))]), + dest_ip: fwtool.map_invert(uci.get('firewall', s, 'dest_ip'), 'toLowerCase'), + dest_port: fwtool.map_invert(uci.get('firewall', s, 'dest_port')), + dest_device: uci.get('firewall', s, 'device') + }); +} + +function rule_limit_txt(s) { + var m = String(uci.get('firewall', s, 'limit')).match(/^(\d+)\/([smhd])\w*$/i), + l = m ? { + num: +m[1], + unit: ({ s: _('second'), m: _('minute'), h: _('hour'), d: _('day') })[m[2]], + burst: uci.get('firewall', s, 'limit_burst') + } : null; + + if (!l) + return ''; + + return fwtool.fmt(_('Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}'), { limit: l }); +} + +function rule_target_txt(s) { + var t = uci.get('firewall', s, 'target'), + s = { + target: t, + snat_ip: uci.get('firewall', s, 'snat_ip'), + snat_port: uci.get('firewall', s, 'snat_port') + }; + + switch (t) { + case 'SNAT': + return fwtool.fmt(_('Statically rewrite to source %{snat_ip?IP %{snat_ip}} %{snat_port?port %{snat_port}}'), s); + + case 'MASQUERADE': + return fwtool.fmt(_('Automatically rewrite source IP')); + + case 'ACCEPT': + return fwtool.fmt(_('Prevent source rewrite')); + + default: + return t; + } +} + +return view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + callNetworkDevices: rpc.declare({ + object: 'luci-rpc', + method: 'getNetworkDevices', + expect: { '': {} } + }), + + load: function() { + return Promise.all([ + this.callHostHints(), + this.callNetworkDevices(), + uci.load('firewall') + ]); + }, + + render: function(data) { + if (fwtool.checkLegacySNAT()) + return fwtool.renderMigration(); + else + return this.renderNats(data); + }, + + renderNats: function(data) { + var hosts = data[0], + devs = data[1], + m, s, o; + + m = new form.Map('firewall', _('Firewall - NAT Rules'), + _('NAT rules allow fine grained control over the source IP to use for outbound or forwarded traffic.')); + + s = m.section(form.GridSection, 'nat', _('NAT Rules')); + s.addremove = true; + s.anonymous = true; + s.sortable = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + s.tab('timed', _('Time Restrictions')); + + s.sectiontitle = function(section_id) { + return uci.get('firewall', section_id, 'name') || _('Unnamed NAT'); + }; + + o = s.taboption('general', form.Value, 'name', _('Name')); + o.placeholder = _('Unnamed NAT'); + o.modalonly = true; + + o = s.option(form.DummyValue, '_match', _('Match')); + o.modalonly = false; + o.textvalue = function(s) { + return E('small', [ + rule_proto_txt(s), E('br'), + rule_src_txt(s, hosts), E('br'), + rule_dest_txt(s), E('br'), + rule_limit_txt(s) + ]); + }; + + o = s.option(form.ListValue, '_target', _('Action')); + o.modalonly = false; + o.textvalue = function(s) { + return rule_target_txt(s); + }; + + o = s.option(form.Flag, 'enabled', _('Enable')); + o.modalonly = false; + o.default = o.enabled; + o.editable = true; + + o = s.taboption('general', fwtool.CBIProtocolSelect, 'proto', _('Protocol')); + o.modalonly = true; + o.default = 'all'; + + o = s.taboption('general', widgets.ZoneSelect, 'src', _('Outbound zone')); + o.modalonly = true; + o.rmempty = false; + o.nocreate = true; + o.allowany = true; + o.default = 'lan'; + + o = fwtool.addIPOption(s, 'general', 'src_ip', _('Source address'), + _('Match forwarded traffic from this IP or range.'), 'ipv4', hosts); + o.rmempty = true; + o.datatype = 'neg(ipmask4)'; + + o = s.taboption('general', form.Value, 'src_port', _('Source port'), + _('Match forwarded traffic originating from the given source port or port range.')); + o.modalonly = true; + o.rmempty = true; + o.datatype = 'neg(portrange)'; + o.placeholder = _('any'); + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = fwtool.addIPOption(s, 'general', 'dest_ip', _('Destination address'), + _('Match forwarded traffic directed at the given IP address.'), 'ipv4', hosts); + o.rmempty = true; + o.datatype = 'neg(ipmask4)'; + + o = s.taboption('general', form.Value, 'dest_port', _('Destination port'), + _('Match forwarded traffic directed at the given destination port or port range.')); + o.modalonly = true; + o.rmempty = true; + o.placeholder = _('any'); + o.datatype = 'neg(portrange)'; + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = s.taboption('general', form.ListValue, 'target', _('Action')); + o.modalonly = true; + o.default = 'SNAT'; + o.value('SNAT', _('SNAT - Rewrite to specific source IP or port')); + o.value('MASQUERADE', _('MASQUERADE - Automatically rewrite to outbound interface IP')); + o.value('ACCEPT', _('ACCEPT - Disable address rewriting')); + + o = fwtool.addLocalIPOption(s, 'general', 'snat_ip', _('Rewrite IP address'), + _('Rewrite matched traffic to the specified source IP address.'), devs); + o.placeholder = null; + o.depends('target', 'SNAT'); + o.validate = function(section_id, value) { + var port = this.map.lookupOption('snat_port', section_id), + a = this.formvalue(section_id), + p = port ? port[0].formvalue(section_id) : null; + + if ((a == null || a == '') && (p == null || p == '') && value == '') + return _('A rewrite IP must be specified!'); + + return true; + }; + + o = s.taboption('general', form.Value, 'snat_port', _('Rewrite port'), + _('Rewrite matched traffic to the specified source port or port range.')); + o.modalonly = true; + o.rmempty = true; + o.placeholder = _('do not rewrite'); + o.datatype = 'portrange'; + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = s.taboption('advanced', widgets.DeviceSelect, 'device', _('Outbound device'), + _('Matches forwarded traffic using the specified outbound network device.')); + o.noaliases = true; + o.modalonly = true; + o.rmempty = true; + + fwtool.addMarkOption(s, false); + fwtool.addLimitOption(s); + fwtool.addLimitBurstOption(s); + + o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'), + _('Passes additional arguments to iptables. Use with care!')); + o.modalonly = true; + o.rmempty = true; + + o = s.taboption('timed', form.MultiValue, 'weekdays', _('Week Days')); + o.modalonly = true; + o.multiple = true; + o.display = 5; + o.placeholder = _('Any day'); + o.value('Sun', _('Sunday')); + o.value('Mon', _('Monday')); + o.value('Tue', _('Tuesday')); + o.value('Wed', _('Wednesday')); + o.value('Thu', _('Thursday')); + o.value('Fri', _('Friday')); + o.value('Sat', _('Saturday')); + o.write = function(section_id, value) { + return this.super('write', [ section_id, L.toArray(value).join(' ') ]); + }; + + o = s.taboption('timed', form.MultiValue, 'monthdays', _('Month Days')); + o.modalonly = true; + o.multiple = true; + o.display_size = 15; + o.placeholder = _('Any day'); + o.write = function(section_id, value) { + return this.super('write', [ section_id, L.toArray(value).join(' ') ]); + }; + for (var i = 1; i <= 31; i++) + o.value(i); + + o = s.taboption('timed', form.Value, 'start_time', _('Start Time (hh.mm.ss)')); + o.modalonly = true; + o.datatype = 'timehhmmss'; + + o = s.taboption('timed', form.Value, 'stop_time', _('Stop Time (hh.mm.ss)')); + o.modalonly = true; + o.datatype = 'timehhmmss'; + + o = s.taboption('timed', form.Value, 'start_date', _('Start Date (yyyy-mm-dd)')); + o.modalonly = true; + o.datatype = 'dateyyyymmdd'; + + o = s.taboption('timed', form.Value, 'stop_date', _('Stop Date (yyyy-mm-dd)')); + o.modalonly = true; + o.datatype = 'dateyyyymmdd'; + + o = s.taboption('timed', form.Flag, 'utc_time', _('Time in UTC')); + o.modalonly = true; + o.default = o.disabled; + + return m.render(); + } +}); diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js new file mode 100644 index 000000000..ad7710579 --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js @@ -0,0 +1,337 @@ +'use strict'; +'require view'; +'require rpc'; +'require uci'; +'require form'; +'require network'; +'require firewall'; +'require tools.firewall as fwtool'; +'require tools.widgets as widgets'; + +return view.extend({ + callConntrackHelpers: rpc.declare({ + object: 'luci', + method: 'getConntrackHelpers', + expect: { result: [] } + }), + + load: function() { + return Promise.all([ + this.callConntrackHelpers(), + firewall.getDefaults() + ]); + }, + + render: function(data) { + if (fwtool.checkLegacySNAT()) + return fwtool.renderMigration(); + else + return this.renderZones(data); + }, + + renderZones: function(data) { + var ctHelpers = data[0], + fwDefaults = data[1], + m, s, o, inp, out; + + m = new form.Map('firewall', _('Firewall - Zone Settings'), + _('The firewall creates zones over your network interfaces to control network traffic flow.')); + + s = m.section(form.TypedSection, 'defaults', _('General Settings')); + s.anonymous = true; + s.addremove = false; + + o = s.option(form.Flag, 'syn_flood', _('Enable SYN-flood protection')); + o = s.option(form.Flag, 'drop_invalid', _('Drop invalid packets')); + + var p = [ + s.option(form.ListValue, 'input', _('Input')), + s.option(form.ListValue, 'output', _('Output')), + s.option(form.ListValue, 'forward', _('Forward')) + ]; + + for (var i = 0; i < p.length; i++) { + p[i].value('REJECT', _('reject')); + p[i].value('DROP', _('drop')); + p[i].value('ACCEPT', _('accept')); + } + + /* Netfilter flow offload support */ + + if (L.hasSystemFeature('offloading')) { + s = m.section(form.TypedSection, 'defaults', _('Routing/NAT Offloading'), + _('Experimental feature. Not fully compatible with QoS/SQM.')); + + s.anonymous = true; + s.addremove = false; + + o = s.option(form.Flag, 'flow_offloading', + _('Software flow offloading'), + _('Software based offloading for routing/NAT')); + o.optional = true; + + o = s.option(form.Flag, 'flow_offloading_hw', + _('Hardware flow offloading'), + _('Requires hardware NAT support. Implemented at least for mt7621')); + o.optional = true; + o.depends('flow_offloading', '1'); + } + + + s = m.section(form.GridSection, 'zone', _('Zones')); + s.addremove = true; + s.anonymous = true; + s.sortable = true; + + s.handleRemove = function(section_id, ev) { + return firewall.deleteZone(section_id).then(L.bind(function() { + return this.super('handleRemove', [section_id, ev]); + }, this)); + }; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + s.tab('conntrack', _('Conntrack Settings')); + s.tab('extra', _('Extra iptables arguments')); + + o = s.taboption('general', form.DummyValue, '_generalinfo'); + o.rawhtml = true; + o.modalonly = true; + o.cfgvalue = function(section_id) { + var name = uci.get('firewall', section_id, 'name'); + if (name == null) + name = _("this new zone"); + return _('This section defines common properties of %q. The input and output options set the default policies for traffic entering and leaving this zone while the forward option describes the policy for forwarded traffic between different networks within the zone. Covered networks specifies which available networks are members of this zone.') + .replace(/%s/g, name).replace(/%q/g, '"' + name + '"'); + }; + + o = s.taboption('general', form.Value, 'name', _('Name')); + o.placeholder = _('Unnamed zone'); + o.modalonly = true; + o.rmempty = false; + o.datatype = 'and(uciname,maxlength(11))'; + o.write = function(section_id, formvalue) { + var cfgvalue = this.cfgvalue(section_id); + + if (cfgvalue == null || cfgvalue == '') + return uci.set('firewall', section_id, 'name', formvalue); + else if (cfgvalue != formvalue) + return firewall.renameZone(cfgvalue, formvalue); + }; + + o = s.option(widgets.ZoneForwards, '_info', _('Zone ⇒ Forwardings')); + o.editable = true; + o.modalonly = false; + o.cfgvalue = function(section_id) { + return uci.get('firewall', section_id, 'name'); + }; + + var p = [ + s.taboption('general', form.ListValue, 'input', _('Input')), + s.taboption('general', form.ListValue, 'output', _('Output')), + s.taboption('general', form.ListValue, 'forward', _('Forward')) + ]; + + for (var i = 0; i < p.length; i++) { + p[i].value('REJECT', _('reject')); + p[i].value('DROP', _('drop')); + p[i].value('ACCEPT', _('accept')); + p[i].editable = true; + } + + p[0].default = fwDefaults.getInput(); + p[1].default = fwDefaults.getOutput(); + p[2].default = fwDefaults.getForward(); + + o = s.taboption('general', form.Flag, 'masq', _('Masquerading')); + o.editable = true; + + o = s.taboption('general', form.Flag, 'fullcone', _('Full Cone')); + o.editable = true; + o.depends('masq', '1'); + + o = s.taboption('general', form.Flag, 'mtu_fix', _('MSS clamping')); + o.modalonly = true; + + o = s.taboption('general', widgets.NetworkSelect, 'network', _('Covered networks')); + o.modalonly = true; + o.multiple = true; + o.cfgvalue = function(section_id) { + return uci.get('firewall', section_id, 'network'); + }; + o.write = function(section_id, formvalue) { + var name = uci.get('firewall', section_id, 'name'), + cfgvalue = this.cfgvalue(section_id); + + if (typeof(cfgvalue) == 'string' && Array.isArray(formvalue) && (cfgvalue == formvalue.join(' '))) + return; + + var tasks = [ firewall.getZone(name) ]; + + if (Array.isArray(formvalue)) + for (var i = 0; i < formvalue.length; i++) { + var netname = formvalue[i]; + tasks.push(network.getNetwork(netname).then(function(net) { + return net || network.addNetwork(netname, { 'proto': 'none' }); + })); + } + + return Promise.all(tasks).then(function(zone_networks) { + if (zone_networks[0]) + for (var i = 1; i < zone_networks.length; i++) + zone_networks[0].addNetwork(zone_networks[i].getName()); + }); + }; + + o = s.taboption('advanced', form.DummyValue, '_advancedinfo'); + o.rawhtml = true; + o.modalonly = true; + o.cfgvalue = function(section_id) { + var name = uci.get('firewall', section_id, 'name'); + if (name == null) + name = _("this new zone"); + return _('The options below control the forwarding policies between this zone (%s) and other zones. Destination zones cover forwarded traffic originating from %q. Source zones match forwarded traffic from other zones targeted at %q. The forwarding rule is unidirectional, e.g. a forward from lan to wan does not imply a permission to forward from wan to lan as well.') + .format(name); + }; + + o = s.taboption('advanced', widgets.DeviceSelect, 'device', _('Covered devices'), _('Use this option to classify zone traffic by raw, non-uci managed network devices.')); + o.modalonly = true; + o.noaliases = true; + o.multiple = true; + + o = s.taboption('advanced', form.DynamicList, 'subnet', _('Covered subnets'), _('Use this option to classify zone traffic by source or destination subnet instead of networks or devices.')); + o.datatype = 'neg(cidr)'; + o.modalonly = true; + o.multiple = true; + + o = s.taboption('advanced', form.ListValue, 'family', _('Restrict to address family')); + o.value('', _('IPv4 and IPv6')); + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.modalonly = true; + + o = s.taboption('advanced', form.DynamicList, 'masq_src', _('Restrict Masquerading to given source subnets')); + o.depends('family', ''); + o.depends('family', 'ipv4'); + o.datatype = 'list(neg(or(uciname,hostname,ipmask4)))'; + o.placeholder = '0.0.0.0/0'; + o.modalonly = true; + + o = s.taboption('advanced', form.DynamicList, 'masq_dest', _('Restrict Masquerading to given destination subnets')); + o.depends('family', ''); + o.depends('family', 'ipv4'); + o.datatype = 'list(neg(or(uciname,hostname,ipmask4)))'; + o.placeholder = '0.0.0.0/0'; + o.modalonly = true; + + o = s.taboption('conntrack', form.Flag, 'masq_allow_invalid', _('Allow "invalid" traffic'), _('Do not install extra rules to reject forwarded traffic with conntrack state invalid. This may be required for complex asymmetric route setups.')); + o.modalonly = true; + + o = s.taboption('conntrack', form.Flag, 'auto_helper', _('Automatic helper assignment'), _('Automatically assign conntrack helpers based on traffic protocol and port')); + o.default = o.enabled; + o.modalonly = true; + + o = s.taboption('conntrack', form.MultiValue, 'helper', _('Conntrack helpers'), _('Explicitly choses allowed connection tracking helpers for zone traffic')); + o.depends('auto_helper', '0'); + o.modalonly = true; + for (var i = 0; i < ctHelpers.length; i++) + o.value(ctHelpers[i].name, '%s (%s)%s'.format(ctHelpers[i].description, ctHelpers[i].name.toUpperCase(), ctHelpers[i].name.toUpperCase())); + + o = s.taboption('advanced', form.Flag, 'log', _('Enable logging on this zone')); + o.modalonly = true; + + o = s.taboption('advanced', form.Value, 'log_limit', _('Limit log messages')); + o.depends('log', '1'); + o.placeholder = '10/minute'; + o.modalonly = true; + + o = s.taboption('extra', form.DummyValue, '_extrainfo'); + o.rawhtml = true; + o.modalonly = true; + o.cfgvalue = function(section_id) { + return _('Passing raw iptables arguments to source and destination traffic classification rules allows to match packets based on other criteria than interfaces or subnets. These options should be used with extreme care as invalid values could render the firewall ruleset broken, completely exposing all services.'); + }; + + o = s.taboption('extra', form.Value, 'extra_src', _('Extra source arguments'), _('Additional raw iptables arguments to classify zone source traffic, e.g. -p tcp --sport 443 to only match inbound HTTPS traffic.')); + o.modalonly = true; + o.cfgvalue = function(section_id) { + return uci.get('firewall', section_id, 'extra_src') || uci.get('firewall', section_id, 'extra'); + }; + o.write = function(section_id, value) { + uci.unset('firewall', section_id, 'extra'); + uci.set('firewall', section_id, 'extra_src', value); + }; + + o = s.taboption('extra', form.Value, 'extra_dest', _('Extra destination arguments'), _('Additional raw iptables arguments to classify zone destination traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS traffic.')); + o.modalonly = true; + o.cfgvalue = function(section_id) { + return uci.get('firewall', section_id, 'extra_dest') || uci.get('firewall', section_id, 'extra_src') || uci.get('firewall', section_id, 'extra'); + }; + o.write = function(section_id, value) { + uci.unset('firewall', section_id, 'extra'); + uci.set('firewall', section_id, 'extra_dest', value); + }; + + o = s.taboption('general', form.DummyValue, '_forwardinfo'); + o.rawhtml = true; + o.modalonly = true; + o.cfgvalue = function(section_id) { + var name = uci.get('firewall', section_id, 'name'); + if (name == null) + name = _("this new zone"); + return _('The options below control the forwarding policies between this zone (%s) and other zones. Destination zones cover forwarded traffic originating from %q. Source zones match forwarded traffic from other zones targeted at %q. The forwarding rule is unidirectional, e.g. a forward from lan to wan does not imply a permission to forward from wan to lan as well.') + .format(name); + }; + + out = o = s.taboption('general', widgets.ZoneSelect, 'out', _('Allow forward to destination zones:')); + o.nocreate = true; + o.multiple = true; + o.modalonly = true; + o.filter = function(section_id, value) { + return (uci.get('firewall', section_id, 'name') != value); + }; + o.cfgvalue = function(section_id) { + var out = (this.option == 'out'), + zone = this.lookupZone(uci.get('firewall', section_id, 'name')), + fwds = zone ? zone.getForwardingsBy(out ? 'src' : 'dest') : [], + value = []; + + for (var i = 0; i < fwds.length; i++) + value.push(out ? fwds[i].getDestination() : fwds[i].getSource()); + + return value; + }; + o.write = o.remove = function(section_id, formvalue) { + var out = (this.option == 'out'), + zone = this.lookupZone(uci.get('firewall', section_id, 'name')), + fwds = zone ? zone.getForwardingsBy(out ? 'src' : 'dest') : []; + + if (formvalue == null) + formvalue = []; + + if (Array.isArray(formvalue)) { + for (var i = 0; i < fwds.length; i++) { + var cmp = out ? fwds[i].getDestination() : fwds[i].getSource(); + if (!formvalue.filter(function(d) { return d == cmp }).length) + zone.deleteForwarding(fwds[i]); + } + + for (var i = 0; i < formvalue.length; i++) + if (out) + zone.addForwardingTo(formvalue[i]); + else + zone.addForwardingFrom(formvalue[i]); + } + }; + + inp = o = s.taboption('general', widgets.ZoneSelect, 'in', _('Allow forward from source zones:')); + o.nocreate = true; + o.multiple = true; + o.modalonly = true; + o.write = o.remove = out.write; + o.filter = out.filter; + o.cfgvalue = out.cfgvalue; + + return m.render(); + } +}); diff --git a/luci-app-firewall/po/bg/firewall.po b/luci-app-firewall/po/bg/firewall.po new file mode 100644 index 000000000..338618321 --- /dev/null +++ b/luci-app-firewall/po/bg/firewall.po @@ -0,0 +1,1139 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-01-14 15:22+0000\n" +"Last-Translator: Franco Castillo \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# +# msgid "Traffic Redirection" +# msgstr "" +# +# msgid "" +# "Traffic redirection allows you to change the destination address of " +# "forwarded packets." +# msgstr "" +# +# msgid "Overview" +# msgstr "" +# +# msgid "Name" +# msgstr "" +# +# msgid "Source zone" +# msgstr "" +# +# msgid "Source MAC-address" +# msgstr "" +# +# msgid "Source port" +# msgstr "" +# +# msgid "Protocol" +# msgstr "" +# +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "MAC" +#~ msgstr "MAC" diff --git a/luci-app-firewall/po/ca/firewall.po b/luci-app-firewall/po/ca/firewall.po new file mode 100644 index 000000000..3c4b3ad17 --- /dev/null +++ b/luci-app-firewall/po/ca/firewall.po @@ -0,0 +1,1319 @@ +# luci-fw.pot +# generated from ./applications/luci-fw/luasrc/i18n/luci-fw.en.lua +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-01-14 15:22+0000\n" +"Last-Translator: Franco Castillo \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Acció" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Ajusts avançats" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Permet el reenviament des dels zones d'origen:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Permet el reenviament als zones de destí:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Qualsevol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Xarxes cobertes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Regles personalitzades" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Les regles personalitzades us permet executar ordres del iptables arbitraris " +"que la infraestructura de tallafocs no cobreix d'altra manera. Aquests " +"ordres s'executen després de cada reinici de tallafocs, just després el " +"conjunt de regles per defecte s'ha carregat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Adreça de destí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Port de destí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Zona de destí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Descarta els paquets invàlids" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Activa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Habilita protecció contra la inundació SYN" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Habilita el registre d'aquesta zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Adreça IP extern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Port extern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Paràmetres extres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Tallafocs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Tallafocs - Regles personalitzades" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Tallafocs - Reenviaments de port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Tallafocs - Regles de tràfic" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Tallafocs - Ajusts de zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Reenvia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "Divendres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Ajusts generals" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 i IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "Només IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "Només IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Adreça IP interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Port intern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Zona interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Limita els missatges de registre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "Fixació MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Mascarada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Coincideix" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Coincideix amb el tipus ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Coincideix amb trànsit entrant dirigit al port o rang de ports de destí en " +"aquest host donat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "Dilluns" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Nom" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Només coincideix amb trànsit entrant dirigit a la adreça IP donada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "Només coincideix amb trànsit entrant des d'aquests MAC." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "Només coincideix amb trànsit entrant des d'aquest IP o rang." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Només coincideix amb trànsit originant en el host client des del port o del " +"rang de ports d'origen donat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Sortida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Passa paràmetres addicionals al iptables. Utilitzeu-ho amb cura!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Reenviaments de port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"El reenviament de ports permet que els ordinadors remots en el Internet " +"connectin a un ordinador o servei específic dins del LAN privat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protocol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "Redirigeix trànsit entrant coincidit al port donat en el host intern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Redirigeix trànsit entrant coincidit al host intern especificat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Restringeix la mascarada a les subxarxes de destí donades" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "Restringeix la mascarada a les subxarxes d'origen donades" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Restringeix a la família d'adreces" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "Dissabte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Adreça IP d'origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "Adreça MAC d'origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Adreça d'origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Port d'origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Zona d'origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "Diumenge" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"El tallafocs crea zones a les teves interfícies de xarxa per controlar el " +"flux de tràfic de xarxa." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Les opcions a sota controlen les polítiques de reenviament entre aquesta " +"zona (%s) i altres zones. Zones de destí cobreixen trànsit reenviat " +"originant des de %q. Zones d'origen coincideixen " +"amb trànsit reenviat des de altres zones apuntat a %q. La " +"regla de reenviament es unidirectional, per exemple un reenviament " +"de lan a wan no implica permís per reenviar de wan a lan també." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#, fuzzy +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Aquesta secció defineix propietats comuns de %q. Les opcions entrada i sortida estableixen les polítiques per defecte per a trànsit " +"entrant i sortint aquesta zona mentre l'opció reenvia descriu la " +"política de trànsit reenviat entre xarxes distintes dins de la zona. " +"Xarxes cobertes especifica quines xarxes disponibles són membres " +"d'aquesta zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "Dijous" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Regles de trànsit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"Les regles de trànsit defineixen polítiques per als paquets viatjant entre " +"zones distintes, per exemple per a rebutjar trànsit entre certs hosts o " +"obrir ports WAN en el encaminador." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "Dimarts" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "Dimecres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "Zona ⇒ Reenviaments" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zones" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "accepta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "qualsevol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "qualsevol zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "no rastregis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "descarta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "rebutja" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "%s in %s" +#~ msgstr "%s en %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s amb %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s en %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d paquets al %s" + +#~ msgid "%s and limit to %s" +#~ msgstr "%s i limita a %s" + +#~ msgid "Destination IP address" +#~ msgstr "Adreça IP de destí" + +#~ msgid "Do not rewrite" +#~ msgstr "No reescriguis" + +#~ msgid "Forward to" +#~ msgstr "Reenvia a" + +#~ msgid "From %s in %s" +#~ msgstr "Des de %s en %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "Des de %s en %s amb origen %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "Des de %s en %s amb orígens %s i %s" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "To %s at %s on this device" +#~ msgstr "A %s a %s en aquest dispositiu" + +#~ msgid "To %s in %s" +#~ msgstr "A %s en %s" + +#~ msgid "To %s on this device" +#~ msgstr "A %s en aquest dispositiu" + +#~ msgid "To %s, %s in %s" +#~ msgstr "A %s, %s en %s" + +#~ msgid "Via %s" +#~ msgstr "Via %s" + +#~ msgid "Via %s at %s" +#~ msgstr "Via %s a %s" + +#~ msgid "any host" +#~ msgstr "qualsevol host" + +#~ msgid "any router IP" +#~ msgstr "qualsevol IP d'encaminador" + +#~ msgid "Force connection tracking" +#~ msgstr "Força el rastreig de connexió" + +#~ msgid "Add" +#~ msgstr "Afegeix" + +#~ msgid "Add and edit..." +#~ msgstr "Afegeix i edita..." + +#~ msgid "External zone" +#~ msgstr "Zona extern" + +#~ msgid "New SNAT rule" +#~ msgstr "Nova regla SNAT" + +#~ msgid "New forward rule" +#~ msgstr "Nova regla de reenviament" + +#~ msgid "New input rule" +#~ msgstr "Nova regla d'entrada" + +#~ msgid "New port forward" +#~ msgstr "Nou reenviament de port" + +#~ msgid "New source NAT" +#~ msgstr "Nou origen NAT" + +#~ msgid "Open ports on router" +#~ msgstr "Obre els ports en el encaminador" + +#~ msgid "Other..." +#~ msgstr "Altre..." + +#~ msgid "To source IP" +#~ msgstr "A l'IP d'origen" + +#~ msgid "To source port" +#~ msgstr "Al port d'origen" + +#~ msgid "(Unnamed Entry)" +#~ msgstr "(Entrada sense nom)" + +#~ msgid "(Unnamed Rule)" +#~ msgstr "(Regla sense nom)" + +#~ msgid "(Unnamed SNAT)" +#~ msgstr "(SNAT sense nom)" + +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "Reenviament interzonal" + +#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgstr "" +#~ "Coincideix amb trànsit reenviat al port o rang de ports de destí donat." + +#~ msgid "" +#~ "Match incoming traffic originating from the given source port or port " +#~ "range on the client host." +#~ msgstr "" +#~ "Coincideix amb trànsit entrant originant en el host client des del port o " +#~ "rang de ports d'origen donat." + +#~ msgid "Rewrite matched traffic to the given address." +#~ msgstr "Reescriu el trànsit coincidint cap a la adreça donada." + +#~ msgid "" +#~ "Rewrite matched traffic to the given source port. May be left empty to " +#~ "only rewrite the IP address." +#~ msgstr "" +#~ "Reescriu el trànsit coincidint cap al port d'origen donat. Pot ser deixat " +#~ "en blanc per només reescriure l'adreça IP." + +#~ msgid "Rewrite to source %s" +#~ msgstr "Reescriu a l'origen %s" + +#~ msgid "Rewrite to source %s, %s" +#~ msgstr "Reescriu als orígens %s, %s" + +#~ msgid "SNAT IP address" +#~ msgstr "Adreça IP de SNAT" + +#~ msgid "SNAT port" +#~ msgstr "Port SNAT" + +#~ msgid "Source NAT" +#~ msgstr "NAT d'origen" + +#~ msgid "" +#~ "Source NAT is a specific form of masquerading which allows fine grained " +#~ "control over the source IP used for outgoing traffic, for example to map " +#~ "multiple WAN addresses to internal subnets." +#~ msgstr "" +#~ "El NAT d'origen és un forma específic de mascarada que permet control de " +#~ "gra fi sobre l'IP d'origen utilitzat pel trànsit sortint, per exemple per " +#~ "associar múltiples adreces WAN a subxarxes internes." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the port forwarding " +#~ "entry. In most cases there is no need to modify those settings." +#~ msgstr "" +#~ "Aquesta pàgina us permet canviar propietats avançats de l'entrada de " +#~ "reenviament de port. En la majoria dels casos no hi ha necessitat de " +#~ "modificar aquests ajusts." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the traffic rule " +#~ "entry, such as matched source and destination hosts." +#~ msgstr "" +#~ "Aquesta pàgina us permet canviar propietats avançats de l'entrada de " +#~ "regla de trànsit, com als hosts d'origen i de destí coincidits." + +#~ msgid "" +#~ "You may specify multiple by selecting \"-- custom --\" and then entering " +#~ "protocols separated by space." +#~ msgstr "" +#~ "Podeu especificar múltiples per seleccionar \"-- personalitzat --\" i " +#~ "llavors introduir protocols separats per espai." + +#~ msgid "Zone %q" +#~ msgstr "Zona %q" + +#~ msgid "traffic" +#~ msgstr "trànsit" diff --git a/luci-app-firewall/po/cs/firewall.po b/luci-app-firewall/po/cs/firewall.po new file mode 100644 index 000000000..c91dc4bb9 --- /dev/null +++ b/luci-app-firewall/po/cs/firewall.po @@ -0,0 +1,1316 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2020-02-04 05:03+0000\n" +"Last-Translator: Pavel Borecki \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Akce" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Pokročilá nastavení" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Povolit přesměrování ze zdrojových oblastí:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Povolit přesměrování do zdrojových oblastí:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Libovolné" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "Obsah byl uložen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Pokryté sítě" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Vlastní pravidla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Vlastní pravidla vám umožňují spustit libovolné iptables příkazy, které " +"nejsou jinak pokryté frameworkem firewallu. Příkazy jsou spuštěny po každém " +"restartu firewallu, právě po načtení výchozí sady pravidel." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Cílová adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Cílový port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Cílová zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Zahazovat neplatné pakety" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Povolit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "Povolit NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Povolit ochranu proti SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Povolit logování v této oblasti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Vnější IP adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Vnější port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Další argumenty volání" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Brána firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Vlastní pravidla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Přesměrování portů" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Pravidla síťového provozu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Nastavení zón" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Přesměrování" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "pátek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Obecné nastavení" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 a IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "pouze IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "pouze IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Vstup" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Vnitřní IP adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Vnitřní port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Vnitřní zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Omezit logovací zprávy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "MSS clamping" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Maškárádování" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Shoda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Odpovídá ICMP typu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Vybrat příchozí provoz, směrovaný na zadaný cílový port nebo rozsah portů " +"tohoto hostitele" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "pondělí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "Dny v měsíci" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Název" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Vybrat pouze příchozí provoz, směrovaný na danou IP adresu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "Vybrat pouze příchozí provoz z těchto MAC adres." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "Vybrat pouze příchozí provoz z této IP nebo rozsahu IP adres." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Vybrat pouze příchozí provoz, pocházející ze zadaného portu nebo rozsahu " +"portů klienta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Výstup" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Předává další argumenty iptables. Používat opatrně!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Přesměrování portů" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Přesměrování portů (port forwarding) umožňuje vzdáleným počítačům z " +"Internetu připojení k vybraným počítačům nebo službám uvnitř privátní sítě " +"LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Přesměrovat vybraný příchozí provoz na uvedený port vnitřního hostitele" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Přesměrovat vybraný příchozí provoz na uvedeného vnitřního hostitele" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Omezit maškarádování na uvedené cílové podsítě" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "Omezit maškarádování na uvedené zdrojové podsítě" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Omezit na rodinu adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "sobota" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Zdrojová IP adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "Zdrojová MAC adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Zdrojová adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Zdrojový port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Zdrojová zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "neděle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Firewall vytváří zóny přes vaše síťová rozhraní za účelem řízení síťového " +"provozu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Níže uvedené možnosti řídí přesměrovací politiky mezi touto zónou (%s) a " +"ostatními zónami. Cílové zóny pokrývají přesměrovávaný provoz, " +"pocházející z %q. Zdrojové zóny porovnávají " +"přesměrovávaný provoz z ostatních zón, zaměřený na %q. " +"Přesměrovávací pravidlo je jednosměrné, například přesměrování z " +"lan do wan nepovoluje přesměrování z wan do lan (a naopak)." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Tato sekce definuje běžné možnosti %q. Vstupní a výstupní " +"možnosti nastavují výchozí politiky pro provoz, vstupující do této zóny a " +"vystupující z ní, zatímco přesměrovací možnosti popisují politiku " +"pro přesměrování provozu mezi rozdílnými sítěmi uvnitř jedné zóny. " +"Pokryté sítě určuje, které z dostupných sítí jsou členy této zóny." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "čtvrtek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "Časová omezení" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "Čas v UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Pravidla síťového provozu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"Pravidla síťového provozu definují politiky pro cestování paketů mezi " +"různými zónami, například pro odmítnutí provozu mezi jistými hostiteli nebo " +"pro otevření WAN portů na routeru." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "úterý" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "Nelze uložit obsah: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "Nepojmenované pravidlo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "Nepojmenovaná zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "středa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "Zóna ⇒ Přesměrování" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zóny" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "přijmout" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "libovolný" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "libovolná zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "nesledovat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "zahodit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "odmítnout" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "%s in %s" +#~ msgstr "%s v %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s s %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s v %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d paketů za %s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "%d paketů za %s, burst %d paketů." + +#~ msgid "%s and limit to %s" +#~ msgstr "%s a omezit na %s" + +#~ msgid "Destination IP address" +#~ msgstr "Cílová IP adresa" + +#~ msgid "Do not rewrite" +#~ msgstr "Nepřepisovat" + +#~ msgid "Forward to" +#~ msgstr "Přesměrovat na" + +#~ msgid "From %s in %s" +#~ msgstr "Z %s v %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "Z %s v %s se zdrojovou %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "Z %s v %s se zdrojovou %s a %s" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "Network" +#~ msgstr "Síť" + +#~ msgid "To %s at %s on this device" +#~ msgstr "Na %s v %s na tomto zařízení" + +#~ msgid "To %s in %s" +#~ msgstr "Na %s v %s" + +#~ msgid "To %s on this device" +#~ msgstr "Na %s na tomto zařízení" + +#~ msgid "To %s, %s in %s" +#~ msgstr "Na %s, %s v %s" + +#~ msgid "Via %s" +#~ msgstr "Prostřednictvím %s" + +#~ msgid "any host" +#~ msgstr "libovolný hostitel" + +#~ msgid "any router IP" +#~ msgstr "libovolná IP routeru" + +#~ msgid "Force connection tracking" +#~ msgstr "Vynutit sledování připojení" + +#~ msgid "Add" +#~ msgstr "Přidat" + +#~ msgid "Add and edit..." +#~ msgstr "Přidat a upravit" + +#~ msgid "External zone" +#~ msgstr "Vnější zóna" + +#~ msgid "New SNAT rule" +#~ msgstr "Nové pravidlo SNAT" + +#~ msgid "New forward rule" +#~ msgstr "Nové přesměrovací pravidlo" + +#~ msgid "New input rule" +#~ msgstr "Nové vstupní pravidlo" + +#~ msgid "New port forward" +#~ msgstr "Nové přesměrování portu" + +#~ msgid "New source NAT" +#~ msgstr "Nový zdrojový NAT (SNAT)" + +#~ msgid "Open ports on router" +#~ msgstr "Otevřené porty na routeru" + +#~ msgid "Other..." +#~ msgstr "Ostatní ..." + +#~ msgid "To source IP" +#~ msgstr "Na zdrojovou IP" + +#~ msgid "To source port" +#~ msgstr "Na zdrojový port" + +#~ msgid "(Unnamed Entry)" +#~ msgstr "(Nepojmenovaný vstup)" + +#~ msgid "(Unnamed Rule)" +#~ msgstr "(Nepojmenované pravidlo)" + +#~ msgid "(Unnamed SNAT)" +#~ msgstr "(Nepojmenovaný SNAT)" + +# nebo mimo zóny? +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "Přesměrování mezi zónami" + +#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgstr "Vybrat provoz, přesměrovaný na zadaný port nebo rozsah portů" + +#~ msgid "" +#~ "Match incoming traffic originating from the given source port or port " +#~ "range on the client host." +#~ msgstr "" +#~ "Vybrat příchozí provoz, pocházející ze zadaného portu nebo rozsahu portů " +#~ "klienta." + +#~ msgid "Rewrite matched traffic to the given address." +#~ msgstr "Přepsat shodný provoz na uvedenou adresu." + +#~ msgid "" +#~ "Rewrite matched traffic to the given source port. May be left empty to " +#~ "only rewrite the IP address." +#~ msgstr "" +#~ "Přepsat shodný provoz na uvedený zdrojový port. Může zůstat prázdné, pak " +#~ "bude přepsána pouze IP adresa." + +#~ msgid "Rewrite to source %s" +#~ msgstr "Přepsat na zdrojovou %s" + +#~ msgid "Rewrite to source %s, %s" +#~ msgstr "Přepsat na zdrojovou %s, %s" + +#~ msgid "SNAT IP address" +#~ msgstr "IP adresa SNATu" + +#~ msgid "SNAT port" +#~ msgstr "Port SNATu" + +#~ msgid "Source NAT" +#~ msgstr "Zdrojový NAT" + +#~ msgid "" +#~ "Source NAT is a specific form of masquerading which allows fine grained " +#~ "control over the source IP used for outgoing traffic, for example to map " +#~ "multiple WAN addresses to internal subnets." +#~ msgstr "" +#~ "Zdrojový NAT je specifická forma maškarádování, která umožňuje " +#~ "jemnozrnnou kontrolu nad zdrojovými IP, použitými pro odchozí provoz. " +#~ "Využívá se například pro mapování množství WAN adres do vnitřních podsítí." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the port forwarding " +#~ "entry. In most cases there is no need to modify those settings." +#~ msgstr "" +#~ "Tato stránka vám umožňuje změnit pokročilé vlastností přesměrování portů. " +#~ "Ve většině případů není potřeba upravovat tato nastavení." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the traffic rule " +#~ "entry, such as matched source and destination hosts." +#~ msgstr "" +#~ "Tato stránka vám umožňuje změnit pokročilé vlastnosti pravidla síťového " +#~ "provozu, například zdrojové a cílové hostitele." + +#~ msgid "" +#~ "You may specify multiple by selecting \"-- custom --\" and then entering " +#~ "protocols separated by space." +#~ msgstr "" +#~ "Lze určit více protokolů. Vyberte \"-- vlastní --\" a vkládejte protokoly " +#~ "oddělené mezerou." + +#~ msgid "Zone %q" +#~ msgstr "Zóna %q" + +#~ msgid "traffic" +#~ msgstr "provoz" diff --git a/luci-app-firewall/po/de/firewall.po b/luci-app-firewall/po/de/firewall.po new file mode 100644 index 000000000..596f13e1f --- /dev/null +++ b/luci-app-firewall/po/de/firewall.po @@ -0,0 +1,1587 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-04-01 19:11+0000\n" +"Last-Translator: CE4 \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Weitergeleiteter:Eingehender}:Ausgehender} %{ipv6?%{ipv4?" +"IPv4- und IPv6:IPv6}:IPv4}-" +"Verkehr%{proto?, Protokoll %{proto#%{next?, }%{item.types?%{item.name}ICMP mit Typen " +"%{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp." +"val}:%{dscp.val}}}%{helper?, Tracking-Helfer %{helper.inv?" +"" +"%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "-- IP hinzufügen --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "-- MAC hinzufügen --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"%{src?%{dest?Weiterleitung:Eingang}:Ausgang} erlauben" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "Quellmaskierung unterbinden" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Weiterleiten zu %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? Port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"%{src?%{dest?Weiterleitung:Eingang}:Ausgang} verwerfen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Setze DSCP-Klassifizierung auf " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" +"Assoziiere Tracking-Helfer %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Setze:XOR} Firewall-Markierung " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "Quell-IP automatisch maskieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"%{src?%{dest?Weiterleitungs:Eingangs}:Ausgangs}-Tracking verhindern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"%{src?%{dest?Weiterleitung:Eingang}:Ausgang} ablehnen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Quell%{snat_ip?-IP %{snat_ip}} %{snat_port?Port %{snat_port}" +"} statisch umschreiben" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "Es muss eine IP-Adresse zum Umschreiben angegeben werden!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Umschreiben von IP-Adressen deaktivieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Aktion" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Zusätzliche rohe iptables-Argumente zur Klassifizierung des " +"Zonenzielverkehrs, z.B. -p tcp --dport 443, um nur ausgehenden " +"HTTPS-Verkehr übereinstimmen zu lassen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Zusätzliche rohe iptables-Argumente zur Klassifizierung von " +"Zonenquellenverkehr, z.B. -p tcp --sport 443, um nur " +"eingehenden HTTPS-Verkehr übereinstimmen zu lassen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Erweiterte Einstellungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "Erlaube \"ungültigen\" Verkehr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Erlaube Weiterleitung von Quellzone:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Erlaube Weiterleitung zu Zielzone:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Beliebig" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "Beliebig" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Bitweises XOR von angegebenem Wert und Maske auf etablierte Verbindungen " +"anwenden. Format ist Wert[/Maske]. Wenn eine Maske angegeben ist, werden die " +"korrespondierenden Bits des Wertes genullt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" +"Wende die angegebene DSCP-Klasse oder den angegebenen DSCP-Wert auf " +"etablierte Verbindungen an." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Weise den angegebenen Verbindungs-Tracking-Helfer selektiertem Verkehr zu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "Automatische Helferzuordnung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Automatische Zuweisung von Conntrack-Helfern basierend auf Traffic-Protokoll " +"und Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "Conntrack-Einstellungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "Conntrack-Helfer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "Inhalte wurden gespeichert." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "Fortfahren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "Abgedeckte Geräte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Abgedeckte Netzwerke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "Abgedeckte Subnetze" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Benutzerdefinierte Regeln" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Benutzerdefinierte Regeln ermöglichen das Ausführen belieber iptables-" +"Befehle welche durch das Firewall-Framework nicht unterstützt werden. Die " +"Befehle werden mit jedem Firewall-Neustart abgearbeitet, direkt nach dem " +"Laden der Basisregeln." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "DSCP-Klassifizierung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "DSCP-Markierung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "DSCP-Markierung benötigt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Zieladresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Zielport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Ziel-Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "Gerätename" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Installiere keine zusätzlichen Regeln, um weitergeleiteten Traffic mit " +"Conntrack-Status invalid abzulehnen. Dies kann bei komplexen " +"asymmetrischen Routen erforderlich sein." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Ungültige Pakete verwerfen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Aktivieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "NAT-Loopback aktivieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Schutz vor SYN-flood-Attacken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Protokollierung innerhalb der Zone aktivieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "Erwarte: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "Experimentelle Funktion. Nicht vollständig kompatibel mit QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Wählt explizit zulässige Verbindungs-Tracking-Helfer für den Zonenverkehr aus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Externe IP-Adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Externer Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Zusätzliche Argumente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "Zusätzliche Ziel-Argumente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "Zusätzliche iptables-Argumente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "Zusätzliche Quell-Argumente" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Benutzerdefinierte Regeln" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "Firewall - NAT Regeln" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Portweiterleitungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Traffic-Regeln" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Zoneneinstellungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "Migration der Firewall-Konfiguration" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Weitergeleitet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" +"Weitergeleiteter IPv4-Verkehr%{proto?, Protokoll %{proto#%{next?, }" +"%{item.name}}}%{mark?, Markierung %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "Freitag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Von %{src}%{src_device?, Schnittstelle %{src_device}}%{src_ip?, " +"IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, Port %{src_port#" +"%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Von %{src}%{src_device?, Schnittstelle %{src_device}}%{src_ip?, " +"IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#" +"%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Von %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Allgemeine Einstellungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "Hardwarebeschleunigte Flusskontrolle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 und IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "nur IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "nur IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "Eingehendes Gerät" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Eingehender IPv4-Verkehr%{proto?, Protokoll %{proto#%{next?, }%{item.types?" +"%{item.name}ICMP mit Typen %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, Helfer " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Eingehend" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Interne IP-Adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Interner Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Interne Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "Ungültige DSCP-Markierung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "Ungültiger Limit-Wert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "Limit-Häufung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Protokollnachrichten limitieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "Limitiere Vergleiche" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Limitiere Vergleiche auf %{limit.num} Pakete pro %{limit." +"unit}%{limit.burst? Häufung %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "Limitiere Verkehrsvergleiche auf die angegebene Rate." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "Loopback Quell-IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" +"MASQUERADE - Automatisch auf IP-Adresse der ausgehenden Schnittstelle " +"umschreiben" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "MSS Korrektur" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "NAT aktivieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Filter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "DSCP selektieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Nach ICMP-Typ filtern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "Gerät selektieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Selektiert an die angegebene IP-Adresse gerichteten Verkehr." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Selektiert an den angegeben Port oder Port-Bereich gerichteten Verkehr." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" +"Selektiert weitergeleiteten Verkehr von dieser IP oder diesem IP-Bereich." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Selektiert weitergeleiteten Verkehr vom angegebenem Quellport oder " +"Portbereich." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "Helfer selektieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Eingehende Verbindungen filtern welche an den angegebenen Port oder " +"Portbereich auf dem lokalen Gerät gerichtet sind" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "Erfasse Markierung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Selektiere Verkehr welcher den angegebenen Tracking-Helfer benutzt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Selektiert Verkehr mit einer spezifischen Firewall-Markierung oder einem " +"Bereich von Markierungen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Selektiert weitergeleiteten Verkehr welcher die angegebene " +"Netzwerkschnittstelle benutzt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Selektiere Verkehr welcher die angegebene DSCP-Markierung trägt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Maximale initiale Menge von Paketen die selektiert werden. Die Nummer wird " +"jedes Mal erhöht, wenn das oben genannte Limit nicht erreicht wird, bis zur " +"hier angegeben Anzahl." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "Montag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "Monatstage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "NAT-Regeln" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"NAT-Regeln erlauben eine detaillierte Kontrolle über die verwendete Quell-IP-" +"Adresse für ausgehenden oder weitergeleiteten Verkehr." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Name" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Selektiert nur Traffic der an die angegebene IP-Adresse gerichtet ist." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "Selektiert nur Traffic von den angegebenen MAC-Adressen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "Selektiert nur Traffic vom angebenem Quell-IP-Adressbereich." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Nur eingehenden Datenverkehr, der vom angegebenen Quellport oder Portbereich " +"des Client-Host stammt, selektieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "Ausgehende Schnittstelle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "Ausgehende Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Ausgehend" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"Gibt zusätzliche Kommandozeilenargumente an iptables weiter. Mit Vorsicht " +"benutzen!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Die Übergabe von rohen iptables-Argumenten an die Klassifizierungsregeln für " +"den Quell- und Zielverkehr ermöglicht es, Pakete abzugleichen, die auf " +"anderen Kriterien als Schnittstellen oder Subnetzen basieren. Diese Optionen " +"sollten mit äußerster Vorsicht verwendet werden, da ungültige Werte dazu " +"führen können, dass der Firewall-Regelsatz außer Funktion gesetzt wird und " +"alle Dienste vollständig offengelegt werden." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Portweiterleitungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Portweiterleitungen ermöglichen es entfernten Rechnern im Internet auf " +"bestimmte Computer oder Dienste im lokalen LAN zuzugreifen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protokoll" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Gefilterte Verbindungen an den angegeben Port auf dem internen Host " +"weiterleiten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Gefilterte Verbindungen an den angegeben internen Host weiterleiten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" +"Erfordert Hardware-NAT-Unterstützung. (Zumindest für mt7621 implementiert)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "NAT auf die angegebenen Ziel-Subnetze beschränken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "NAT auf die angegebenen Quell-Subnetze beschränken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Beschränke auf Adressfamilie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "IP-Adresse umschreiben" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Selektierten Verkehr auf die angegebene Quell-IP-Adresse umschreiben." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Selektierten Verkehr auf den angegebenen Quell-Port bzw. Port-Bereich " +"umschreiben." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "Port umschreiben" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "Routing/NAT-Beschleunigung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Umschreiben auf spezifische Quell-IP oder Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "Samstag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "Markierung setzen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Setzt die angegebenen Markierung auf etablierten Verbindungen. Das Format " +"ist Wert[/Maske]. Wenn eine Maske spezifiziert ist, werden nur die " +"korrespondierenden Bits des Markierungswertes verändert." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "Softwarebasierte Auslagerung von Routing/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "Beschleunigte Flusskontrolle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Quell-IP-Adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "Quell-MAC-Adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Quelladresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Quellport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Quell-Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Gibt an, ob diese Verkehrsregel an eine spezifische Eingangs- oder " +"Ausgangsschnittstelle gebunden wird." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Gibt an, ob die externe oder die interne IP-Adresse für reflektierten " +"Verkehr genutzt wird." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Startdatum (JJJJ-MM-TT)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "Startzeit (hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Enddatum (JJJJ-MM-TT)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "Stoppzeit (hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "Sonntag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Die existierende Firewall-Konfiguration muss geändert werden damit LuCI " +"richtig funktioniert." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Die Firewall erstellt Netzwerkzonen über bestimmte Netzwerkschnittstellen um " +"den Netzwerk-Traffic zu trennen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Die untenstehenden Optionen regeln die Verfahrensweisen für Traffic zwischen " +"dieser Zone (%s) und anderen Zonen. Ziel-Zonen decken " +"weitergeleiteten Traffic von %q ab. Quell-Zonen " +"treffen auf weitergeleiteten Traffic aus anderen Zonen zu, welcher " +"an %q gerichtet ist. Die Weiterleitung gilt nur in eine " +"Richtung, d. h. eine erlaubte Weiterleitung von LAN nach WAN bedeutet " +"nicht zusätzlich die Erlaubnis, auch von WAN nach LAN " +"weiterzuleiten." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Dieser Abschnitt definiert allgemeine Eigenschaften der %q-Zone. Die " +"input- und output-Optionen definieren die Regeln für " +"Datenverkehr, der in diese Zone eintritt oder diese verlässt. forward trifft auf Datenverkehr zwischen verschiedenen Schnittstellen innerhalb " +"dieser Zone zu. Covered networks definiert welche der verfügbaren " +"Netzwerke zu dieser Zone gehören." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "Donnerstag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "Zeitbeschränkungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "Zeit ist UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Nach %{dest}%{dest_device?, Schnittstelle %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, Port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Nach %{dest}%{dest_device?, über Schnittstelle %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, Port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Nach %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, Port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "Tracking-Helfer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Traffic-Regeln" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"Traffic-Regeln bestimmen den Fluss der Pakete zwischen verschiedenen Zonen, " +"zum Beispiel um Traffic zwischen bestimmten Rechnern zu unterbinden oder um " +"WAN-Ports auf dem Router zu öffnen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "Dienstag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "Inhalt kann nicht gespeichert werden: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Unbekannter oder nicht installierter Tracking-Helfer \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "Unbenannte NAT-Regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "Unbenannte Portweiterleitung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "Unbennante Regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "Unbenannte Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "Unbekanntes Protokoll" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Beim Fortfahren werden \"redirect\" Sektionen mit \"SNAT\" Aktion in \"nat\" " +"Sektionen konvertiert und die Firewall wird neu gestartet um die geänderte " +"Konfiguration anzuwenden." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "Externe IP-Adresse nutzen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "Interne IP-Adresse nutzen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Diese Option verwenden, um den Zonenverkehr nach rohen, nicht uci-" +"verwalteten Netzwerkgeräten zu klassifizieren." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Diese Option verwenden, um den Zonenverkehr nach Quell- oder Zielsubnetz " +"anstelle von Netzwerken oder Geräten zu klassifizieren." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "Gültige Firewall-Markierung benötigt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "Mittwoch" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "Wochentage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "Firewallmarkierung XOR-en" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "Markierungen XOR-en" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "Zone ⇒ Weiterleitungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zonen" + +# Die richtige Übersetzung von ACCEPT im Firewallkontext ist nicht "Annehmen" sondern "Zulassen". Man kann ja keinen +# ausgehenden Traffic annehmen. +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "zulassen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "beliebig" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "beliebige Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "Firewallmarkierung anwenden" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "Tracking-Helfer zuordnen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "Tag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "nicht umschreiben" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "nicht verfolgen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "verwerfen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "Stunde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "Minute" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "zurückweisen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "Sekunde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "dieses Gerät" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "diese neue Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "unlimitiert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "unspezifiziert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "gültige Firewall-Markierung" + +#~ msgid "%s in %s" +#~ msgstr "%s in %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s mit %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s in %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d Pkte. pro %s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "%d Pkte. pro %s, Häufung %d Pkte." + +#~ msgid "%s and limit to %s" +#~ msgstr "%s und limitieren auf %s" + +#~ msgid "Accept forward" +#~ msgstr "Erlaubte Weiterleitung" + +#~ msgid "Accept input" +#~ msgstr "Eingang akzeptieren" + +#~ msgid "Accept output" +#~ msgstr "Ausgang akzeptieren" + +#~ msgid "Destination IP address" +#~ msgstr "Ziel IP-Adresse" + +#~ msgid "Discard forward" +#~ msgstr "Weiterleiten verwerfen" + +#~ msgid "Discard input" +#~ msgstr "Eingang verwerfen" + +#~ msgid "Discard output" +#~ msgstr "Ausgang verwerfen" + +#~ msgid "Do not rewrite" +#~ msgstr "Nicht umschreiben" + +#~ msgid "Do not track forward" +#~ msgstr "Weiterleitung nicht verfolgen" + +#~ msgid "Do not track input" +#~ msgstr "Eingang nicht verfolgen" + +#~ msgid "Do not track output" +#~ msgstr "Ausgang nicht verfolgen" + +#~ msgid "Forward to" +#~ msgstr "Weiterleiten an" + +#~ msgid "From %s in %s" +#~ msgstr "Von %s in %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "Von %s in %s mit Quell-%s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "Von %s in %s mit Quell-%s und %s" + +#~ msgid "From %s on this device" +#~ msgstr "Von %s auf dieses Gerät" + +#~ msgid "From %s on this device with source %s" +#~ msgstr "Von %s auf diesem Gerät mit Quelle %s" + +#~ msgid "From %s on this device with source %s and %s" +#~ msgstr "Von %s auf dieses Gerät mit Quelle %s und %s" + +#~ msgid "From %{ipaddr?:any host} %{port?with source %{port}}" +#~ msgstr "Von %{ipaddr?:beliebigen Hosts} %{port?mit Quell-%{port}}" + +#~ msgid "IP" +#~ msgstr "IP" + +#~ msgid "IP range" +#~ msgstr "IP-Bereich" + +#~ msgid "IPs" +#~ msgstr "IPs" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "MACs" +#~ msgstr "MACs" + +#~ msgid "" +#~ "Match %{protocol?%{family} %{protocol} traffic:any %{family} traffic} " +#~ "%{mark?with firewall mark %{mark}} %{limit?limited to %{limit}}" +#~ msgstr "" +#~ "Selektiere %{protocol?%{family}-%{protocol} Verkehr:jeglichen %{family}-" +#~ "Verkehr} %{mark?mit Firewall-Markierung %{mark}}" + +#~ msgid "Network" +#~ msgstr "Netzwerk" + +#~ msgid "Refuse forward" +#~ msgstr "Weiterleiten ablehnen" + +#~ msgid "Refuse input" +#~ msgstr "Eingang ablehnen" + +#~ msgid "Refuse output" +#~ msgstr "Ausgang ablehnen" + +#~ msgid "Rewrite to" +#~ msgstr "Umschreiben auf…" + +#~ msgid "Rewrite to %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" +#~ msgstr "" +#~ "Umschreiben auf %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" + +#~ msgid "Rewrite to outbound device IP" +#~ msgstr "Umschreiben auf ausgehende Schnittstellen-IP" + +#~ msgid "To %s at %s on this device" +#~ msgstr "Zu %s an %s auf diesem Gerät" + +#~ msgid "To %s in %s" +#~ msgstr "Zu %s in %s" + +#~ msgid "To %s on this device" +#~ msgstr "Zu %s auf diesem Gerät" + +#~ msgid "To %s, %s in %s" +#~ msgstr "Zu %s, %s in %s" + +#~ msgid "" +#~ "To %{ipaddr?:any destination} %{port?at %{port}} %{zone?via zone %{zone}} " +#~ "%{device?egress device %{device}}" +#~ msgstr "" +#~ "Zu %{ipaddr?:beliebigem Host} %{port?an %{port}} %{zone?über Zone " +#~ "%{zone}} %{device?ausgehende Schnittstelle %{device}}" + +#~ msgid "Via %s" +#~ msgstr "Über %s" + +#~ msgid "Via %s at %s" +#~ msgstr "Über %s an %s" + +#~ msgid "any host" +#~ msgstr "beliebiger Rechner" + +#~ msgid "any router IP" +#~ msgstr "beliebige Router-IP" + +#~ msgid "not" +#~ msgstr "nicht" + +#~ msgid "port" +#~ msgstr "Port" + +#~ msgid "ports" +#~ msgstr "Ports" + +#~ msgid "type" +#~ msgstr "Typ" + +#~ msgid "types" +#~ msgstr "Typen" + +#~ msgid "Force connection tracking" +#~ msgstr "Connectiontracking erzwingen" + +#~ msgid "Disable" +#~ msgstr "Deaktivieren" + +#~ msgid "Restart Firewall" +#~ msgstr "Firewall neu starten" + +#~ msgid "Rule is disabled" +#~ msgstr "Regel ist deaktiviert" + +#~ msgid "Rule is enabled" +#~ msgstr "Regel ist aktiviert" + +#~ msgid "Add" +#~ msgstr "Hinzufügen" + +#~ msgid "Add and edit..." +#~ msgstr "Hinzufügen und bearbeiten..." + +#~ msgid "External zone" +#~ msgstr "Externe Zone" + +#~ msgid "New SNAT rule" +#~ msgstr "Neue SNAT-Regel" + +#~ msgid "New forward rule" +#~ msgstr "Neue Weiterleitungsregel" + +#~ msgid "New input rule" +#~ msgstr "Neue eingehende Regel" + +#~ msgid "New port forward" +#~ msgstr "Neue Portweiterleitung" + +#~ msgid "New source NAT" +#~ msgstr "Neues SNAT" + +#~ msgid "Open ports on router" +#~ msgstr "Ports auf dem Router öffnen" + +#~ msgid "Other..." +#~ msgstr "Anderes..." + +#~ msgid "To source IP" +#~ msgstr "Zu Quell-IP" + +#~ msgid "To source port" +#~ msgstr "Zu Quell-Port" + +#~ msgid "(Unnamed Entry)" +#~ msgstr "(Unbenannter Eintrag)" + +#~ msgid "(Unnamed Rule)" +#~ msgstr "(Unbenannte Regel)" + +#~ msgid "(Unnamed SNAT)" +#~ msgstr "(Unbennanter SNAT-Eintrag)" + +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "Weiterleitungen zwischen Zonen" + +#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgstr "" +#~ "Selektiert weitergeleiteten Verkehr nach den angegebenen Ziel-Ports." + +#~ msgid "" +#~ "Match incoming traffic originating from the given source port or port " +#~ "range on the client host." +#~ msgstr "Selektiert eingehenden Verkehr nach den angegebenen Quell-Ports." + +#~ msgid "Rewrite matched traffic to the given address." +#~ msgstr "" +#~ "Schreibe selektierten Verkehr auf die angegebene Quell-IP-Adresse um." + +#~ msgid "" +#~ "Rewrite matched traffic to the given source port. May be left empty to " +#~ "only rewrite the IP address." +#~ msgstr "" +#~ "Schreibe selektierten Verkehr auf den angegebenen Qull-Port um. Kann leer " +#~ "gelassen werden um nur die IP-Adresse umzuschreiben." + +#~ msgid "Rewrite to source %s" +#~ msgstr "Schreibe um auf Quell-%s" + +#~ msgid "Rewrite to source %s, %s" +#~ msgstr "Schreibe um auf Quell-%s, %s" + +#~ msgid "SNAT IP address" +#~ msgstr "SNAT-IP-Adresse" + +#~ msgid "SNAT port" +#~ msgstr "SNAT-Port" + +#~ msgid "Source NAT" +#~ msgstr "Source NAT" + +#~ msgid "" +#~ "Source NAT is a specific form of masquerading which allows fine grained " +#~ "control over the source IP used for outgoing traffic, for example to map " +#~ "multiple WAN addresses to internal subnets." +#~ msgstr "" +#~ "Source NAT ist eine spezifische From von NAT, welche volle Kontrolle über " +#~ "die verwendete Quell-IP-Adresse für ausgehenden Verkehr zulässt, zum " +#~ "Beispiel um mehrere WAN-IP-Adressen auf interne Subnetze abzubilden." + +#~ msgid "Start Time (hh:mm:ss)" +#~ msgstr "Startzeit (hh:mm:ss)" + +#~ msgid "Stop Time (hh:mm:ss)" +#~ msgstr "Endzeit (hh:mm:ss)" + +#~ msgid "" +#~ "This page allows you to change advanced properties of the port forwarding " +#~ "entry. In most cases there is no need to modify those settings." +#~ msgstr "" +#~ "Diese Seite bietet Zugriff auf die erweiterten Eigenschaften der " +#~ "Portweiterleitung. In den meisten Fällen ist es unnötig die Eigenschaften " +#~ "zu ändern." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the traffic rule " +#~ "entry, such as matched source and destination hosts." +#~ msgstr "" +#~ "Diese Seite bietet Zugriff auf die erweiterten Eigenschaften der " +#~ "Verkehrsregel, zum Beispiel die Selektion nach Quell- und Zieladressen." + +#~ msgid "Unnamed SNAT" +#~ msgstr "Unbennante SNAT-Regel" + +#~ msgid "" +#~ "You may specify multiple by selecting \"-- custom --\" and then entering " +#~ "protocols separated by space." +#~ msgstr "" +#~ "Durch die Auswahl von \"-- benutzerdefiniert --\" könnene mehrere Werte " +#~ "durch Leerzeichen getrennt angegeben werden." + +#~ msgid "Zone %q" +#~ msgstr "Zone %q" diff --git a/luci-app-firewall/po/el/firewall.po b/luci-app-firewall/po/el/firewall.po new file mode 100644 index 000000000..3dae7109a --- /dev/null +++ b/luci-app-firewall/po/el/firewall.po @@ -0,0 +1,1141 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-01-14 15:22+0000\n" +"Last-Translator: Franco Castillo \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Ενέργεια" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Ρυθμίσεις για προχωρημένους" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Οποιοδήποτε" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Προσαρμοσμένοι Κανόνες" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Διεύθυνση προορισμού" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Θύρα προορισμού" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Ζώνη προορισμού" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Αγνόηση μη-έγκυρων πακετών" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Ενεργοποίηση" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#, fuzzy +msgid "Enable SYN-flood protection" +msgstr "Προστασία SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Εξωτερική διεύθυνση IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Εξωτερική θύρα" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Επιπλέον παράμετροι" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Τείχος προστασίας" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Τείχος προστασίας - Προσαρμοσμένοι Κανόνες" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Τείχος προστασίας - Προώθηση Θυρών" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Τείχος προστασίας - Κανόνες Κίνησεις" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Τείχος προστασίας - Ρυθμίσεις Ζώνης" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Προώθηση" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Γενικές Ρυθμίσεις" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 και IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "Μόνο IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "Μόνο IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Είσοδος" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#, fuzzy +msgid "Internal IP address" +msgstr "Εσωτερική διεύθυνση" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#, fuzzy +msgid "Internal port" +msgstr "Εξωτερική θύρα" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Εσωτερική ζώνη" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Περιορισμός καταγραφών συστήματος" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#, fuzzy +msgid "MSS clamping" +msgstr "Περιορισμός MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Όνομα" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Έξοδος" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Προώθηση Θυρών" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Πρωτόκολλο" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#, fuzzy +msgid "Source IP address" +msgstr "Διεύθυνση MAC πηγής" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#, fuzzy +msgid "Source address" +msgstr "Διεύθυνση MAC πηγής" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Θύρα πηγής" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#, fuzzy +msgid "Source zone" +msgstr "Θύρα πηγής" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Το τείχος προστασίας δημιουργεί ζώνες πάνω στις διεπαφές δικτύου για να " +"ελέγχει την δικτυακή κίνηση." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Ζώνες" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "αποδοχή" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "αγνόηση" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "απόρριψη" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s με %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d πκτ. ανά %s" + +#~ msgid "Destination IP address" +#~ msgstr "Διεύθυνση IP προορισμού" + +#~ msgid "From %s in %s" +#~ msgstr "Απο %s στο %s" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "Force connection tracking" +#~ msgstr "Επιβολή παρακολούθησης σύνδεσης" + +#~ msgid "Add" +#~ msgstr "Προσθήκη" + +#~ msgid "Add and edit..." +#~ msgstr "Προσθήκη και επεξεργασία..." + +#~ msgid "Other..." +#~ msgstr "Άλλο..." diff --git a/luci-app-firewall/po/en/firewall.po b/luci-app-firewall/po/en/firewall.po new file mode 100644 index 000000000..f595f3f81 --- /dev/null +++ b/luci-app-firewall/po/en/firewall.po @@ -0,0 +1,1135 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Action" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Destination address" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Destination port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Destination zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Drop invalid packets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Enable SYN-flood protection" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "External port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Forward" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Input" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Internal IP address" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Internal port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "MSS clamping" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Masquerading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Name" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Output" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protocol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Redirect matched incoming traffic to the given port on the internal host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Redirect matched incoming traffic to the specified internal host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# +# msgid "Traffic Redirection" +# msgstr "" +# +# msgid "" +# "Traffic redirection allows you to change the destination address of " +# "forwarded packets." +# msgstr "" +# +# msgid "Overview" +# msgstr "" +# +# msgid "Name" +# msgstr "" +# +# msgid "Source zone" +# msgstr "" +# +# msgid "Source MAC-address" +# msgstr "" +# +# msgid "Source port" +# msgstr "" +# +# msgid "Protocol" +# msgstr "" +# +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Source IP address" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Source address" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Source port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Source zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zones" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "accept" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "any" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "drop" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "reject" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/es/firewall.po b/luci-app-firewall/po/es/firewall.po new file mode 100644 index 000000000..55c4b5aa3 --- /dev/null +++ b/luci-app-firewall/po/es/firewall.po @@ -0,0 +1,1600 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-01-26 12:41+0000\n" +"Last-Translator: Franco Castillo \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Reenvío:Entrada}:Salida} %{ipv6?%{ipv4?IPv4 y " +"IPv6:IPv6}:IPv4}%{proto?, protocolo %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP con tipos %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, marca %{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, ayudante %{helper.inv?%{helper." +"val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "-- Añadir IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "-- Añadir MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Aceptar %{src?%{dest?reenvío:entrada}:" +"salida}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" +"Prevenir la reescritura de la fuente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Reenviar a %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? puerto %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Descartar %{src?%{dest?reenvío:entrada}:" +"salida}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Asignar DSCP clasificación %{set_dscp}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" +"Asignar conntrack ayudante %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Asignar:XOR} marca de firewall " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" +"Reescribir automáticamente IP de " +"origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"No seguir %{src?%{dest?reenvío:entrada}:" +"salida}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Rechazar %{src?%{dest?reenvío:entrada}:" +"salida}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Reescribir estáticamente a origen %{snat_ip?" +"IP %{snat_ip}} %{snat_port?puerto %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "¡Se debe especificar una IP de reescritura!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACEPTAR - Desactivar reescritura de direcciones" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Acción" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Argumentos sin procesar adicionales de iptables para clasificar el " +"tráfico de destino de la zona, p.e. -p tcp --dport 443 para que " +"solo coincida con el tráfico HTTPS saliente." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Argumentos sin procesar adicionales de iptables para clasificar el " +"tráfico de origen de zona, p.e. -p tcp --sport 443 para que " +"solo coincida con el tráfico HTTPS entrante." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Configuración avanzada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "Permitir tráfico \"inválido\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Permitir reenvío desde zonas de origen:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Permitir reenvío a zonas de destino:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Cualquiera" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "Cualquier día" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Aplique un XOR bit a bit del valor dado y el valor de marca existente en las " +"conexiones establecidas. El formato es el valor [/ máscara]. Si se " +"especifica una máscara, esos bits establecidos en la máscara se ponen a cero." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Aplique la clase o valor DSCP dado a las conexiones establecidas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Asigne el asistente de seguimiento de conexión especificado al tráfico " +"coincidente." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "Asignación automática de ayuda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Asigna automáticamente ayudantes de conntrack según el protocolo de tráfico " +"y el puerto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "Configuraciones de Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "Ayudantes de Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "Los contenidos han sido guardados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "Continuar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "Interfaces cubiertas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Redes cubiertas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "Subredes cubiertas" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Reglas personalizadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Las reglas personalizadas le permiten ejecutar comandos de iptables que no " +"están disponibles en el marco del firewall. Los comandos se ejecutarán tras " +"cualquier reinicio del FIrewall, justo tras haber cargado el conjunto de " +"reglas predeterminadas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "Clasificación DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "Marca DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "Marca DSCP requerida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Dirección de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Puerto de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Zona de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "Nombre del dispositivo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"No instale reglas adicionales para rechazar el tráfico reenviado con el " +"estado conntrack inválido. Esto puede ser necesario para " +"configuraciones complejas de rutas asimétricas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Descartar paquetes inválidos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Activar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "Activar bucle NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Activar protección contra inundaciones SYN" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Activar registro en esta zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "Esperando: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "Característica experimental. No es totalmente compatible con QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Elige explícitamente los ayudantes de seguimiento de conexión permitidos " +"para el tráfico de zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Dirección IP externa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Puerto externo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Argumentos extra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "Argumentos de destino adicionales" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "Argumentos adicionales de iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "Argumentos fuente adicionales" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Reglas personalizadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "Firewall - Reglas de NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Reenvío de puertos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Reglas de tráfico" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Configuración de la zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "Migración de configuración de Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Reenviar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" +"Reenviar IPv4%{proto?, protocolo %{proto#%{next?, }%{item.name}}}%{mark?, marca %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "Viernes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Desde %{src}%{src_device?, interfaz %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"puerto %{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Desde %{src}%{src_device?, interfaz %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"puerto %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#" +"%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Desde %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, puerto %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Configuración general" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "Descarga de flujo por hardware" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 e IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "Sólo IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "Sólo IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "Dispositivo de entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"IPv4 entrante%{proto?, protocolo %{proto#%{next?, }%{item.types?%{item.name}ICMP con " +"tipos %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}}%{helper?, ayudante %{helper.inv?" +"%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Dirección IP interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Puerto interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Zona interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "Marca DSCP inválida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "Valor límite no válido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "Límite de ráfaga" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Limitar registro de mensajes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "Limitar coincidencia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Limitar coincidencia a %{limit.num} paquetes por %{limit." +"unit}%{limit.burst? interrumpir %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "Limita el tráfico que coincide con la velocidad especificada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "IP de origen de bucle invertido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Reescribe automáticamente a la interfaz IP saliente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "Fijado de MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Enmascaramiento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Coincidir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "Coincidir DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Coincidir con tipo ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "Dispositivo de coincidencia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Haga coincidir el tráfico reenviado dirigido a la dirección IP dada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Haga coincidir el tráfico reenviado dirigido al puerto de destino o rango de " +"puertos dados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "Haga coincidir el tráfico reenviado desde esta IP o rango." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Haga coincidir el tráfico reenviado que se origina en el puerto fuente o " +"rango de puertos dados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "Ayudante de partido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Coincidir con tráfico de entrada dirigido al puerto o rango de puertos " +"destino en este host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "Marca de partido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Haga coincidir el tráfico con el ayudante de seguimiento de conexión " +"especificado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Coincide con una marca de firewall específica o un rango de marcas " +"diferentes." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Coincide con el tráfico reenviado utilizando el dispositivo de red saliente " +"especificado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Coincide con el tráfico que lleva la marca DSCP especificada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Número inicial máximo de paquetes que deben coincidir: este número se " +"recarga en uno cada vez que no se alcanza el límite especificado " +"anteriormente, hasta este número." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "Lunes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "Días del mes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "Reglas de NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Las reglas de NAT permiten un control detallado sobre la IP de origen para " +"el tráfico saliente o reenviado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Nombre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Coincidir sólo con tráfico de entrada a esta dirección IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "Coincidir sólo con tráfico de entrada desde estas MACs." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "Coincidir sólo con tráfico de entrada desde esta IP o rango." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Solo coincida con el tráfico entrante que se origina desde el puerto de " +"origen o el rango de puertos en el host del cliente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "Dispositivo de salida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "Zona de salida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Salida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Ingrese argumentos adicionales a iptables. ¡Utilícelo con cuidado!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Pasar argumentos de iptables sin procesar a las reglas de clasificación de " +"tráfico de origen y destino permite hacer coincidir paquetes basados en " +"otros criterios que no sean interfaces o subredes. Estas opciones se deben " +"usar con extremo cuidado, ya que los valores inválidos pueden hacer que el " +"conjunto de reglas del firewall se rompa, exponiendo completamente todos los " +"servicios." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Reenvío de puertos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"El reenvío de puertos permite a ordenadores remotos en internet conectar a " +"un ordenador o servicio específico en la LAN privada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protocolo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Redirigir el tráfico de entrada que coincida al puerto dado en el host " +"interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" +"Redirigir el tráfico de entrada que coincida al host interno especificado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" +"Requiere soporte de NAT por hardware. Implementado al menos para mt7621" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Restringir enmascaramiento a las subredes destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "Restringir enmascaramiento a las subredes origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Restringir a la familia de direcciones" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "Reescribir dirección IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" +"Reescribe el tráfico coincidente a la dirección IP de origen especificada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Reescribe el tráfico coincidente al puerto de origen o rango de puertos " +"especificados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "Reescribir puerto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "Enrutamiento/NAT Offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Reescribe a una fuente específica IP o puerto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "Sábado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "Establecer marca" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Establezca el valor de marca dado en las conexiones establecidas. El formato " +"es el valor [/máscara]. Si se especifica una máscara, sólo se modifican los " +"bits establecidos en la máscara." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "Descarga basada en software para enrutamiento/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "Descarga de flujo por software" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Dirección IP de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "Dirección MAC de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Dirección de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Puerto de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Zona de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Especifica si se debe vincular esta regla de tráfico a un dispositivo de red " +"entrante o saliente específico." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Especifica si se debe usar la dirección IP externa o interna para el tráfico " +"reflejado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Fecha de inicio (aaaa-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "Hora de inicio (hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Fecha de finalización (aaaa-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "Hora de finalización (hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "Domingo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"La configuración de firewall existente debe cambiarse para que LuCI funcione " +"correctamente." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"El Firewall crea zonas sobre sus interfaces de red para controlar el flujo " +"del tráfico." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Estas opciones controlan las políticas de reenvío entre esta zona (%s) y " +"otras. Las zonas de origen cubren el tráfico reenviado desde " +"%q. Las zonas de origen coinciden con el tráfico " +"reenviado desde otras zonas dirigido a %q. La regla de " +"reenvío es unidireccional, por ejemplo una regla de reenvío desde " +"la LAN a la WAN no implica permiso para reenviar desde la WAN a la " +"LAN también." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Esta sección define propiedades comunes de %q. Las opciones de entrada y la salida marcan las políticas por defecto para el tráfico " +"que entra y deja esta zona mientras que la opción reenvío describe " +"la política para tráfico reenviado desde diferentes redes en la zona. " +"Redes cubiertas especifican qué redes disponibles son miembros de " +"esta zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "Jueves" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "Restricciones de tiempo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "Tiempo en UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"A %{dest}%{dest_device?, interfaz %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, " +"puerto %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"A %{dest}%{dest_device?, via interfaz %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, " +"puerto %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"A %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, puerto %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "Ayudante de seguimiento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Reglas de tráfico" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"Las reglas de tráfico definen políticas para los paquetes que viajan entre " +"diferentes zonas, por ejemplo, para rechazar el tráfico entre ciertos hosts " +"o para abrir puertos WAN en el enrutador." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "Martes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "No se puede guardar el contenido: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Ayudante de Conntrack desconocido o no instalado \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "NAT sin nombre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "Reenvío sin nombre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "Regla sin nombre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "Zona sin nombre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "Protocolo no reconocido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Al presionar \"Continuar\", las secciones de \"redireccionamiento\" con " +"\"SNAT\" de destino se convertirán en secciones \"nat\" y el firewall se " +"reiniciará para aplicar la configuración actualizada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "Usar dirección IP externa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "Usar dirección IP interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Use esta opción para clasificar el tráfico de zona por raw, dispositivos de " +"red no administrados uci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Use esta opción para clasificar el tráfico de zona por subred de origen o " +"destino en lugar de redes o dispositivos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "Se requiere una marca de firewall válida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "Miércoles" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "Días de la semana" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "Marca de firewall XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "Marca XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "Zona ⇒ Reenvíos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zonas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "Aceptar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "cualquiera" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "cualquier zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "aplicar marca de firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "asignar ayudante de Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "Día" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "no reescribir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "No seguir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "Descartar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "Hora" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "minuto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "Rechazar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "segundo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "este dispositivo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "esta nueva zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "ilimitado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "Sin especificar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "marca de firewall válida" + +#~ msgid "%s in %s" +#~ msgstr "%s en %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s con %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s en %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d paquetes por %s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "" +#~ "%d paquetes por %s, máximo %d paquetes." + +#~ msgid "%s and limit to %s" +#~ msgstr "%s y limitar a %s" + +#~ msgid "Accept forward" +#~ msgstr "Aceptar reenvío" + +#~ msgid "Accept input" +#~ msgstr "Aceptar entrada" + +#~ msgid "Accept output" +#~ msgstr "Aceptar salida" + +#~ msgid "Destination IP address" +#~ msgstr "Dirección IP destino" + +#~ msgid "Discard forward" +#~ msgstr "Descartar reenvío" + +#~ msgid "Discard input" +#~ msgstr "Descartar entrada" + +#~ msgid "Discard output" +#~ msgstr "Descartar salida" + +#~ msgid "Do not rewrite" +#~ msgstr "No reescribir" + +#~ msgid "Do not track forward" +#~ msgstr "No seguir reenvío" + +#~ msgid "Do not track input" +#~ msgstr "No seguir entrada" + +#~ msgid "Do not track output" +#~ msgstr "No seguir salida" + +#~ msgid "Forward to" +#~ msgstr "Reenviar a" + +#~ msgid "From %s in %s" +#~ msgstr "Desde %s en %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "Desde %s en %s con origen %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "Desde %s en %s con origen %s y %s" + +#~ msgid "From %s on this device" +#~ msgstr "Desde %s en este dispositivo" + +#~ msgid "From %s on this device with source %s" +#~ msgstr "Desde %s en este dispositivo con la fuente %s" + +#~ msgid "From %s on this device with source %s and %s" +#~ msgstr "De %s en este dispositivo con la fuente %s y %s" + +#~ msgid "From %{ipaddr?:any host} %{port?with source %{port}}" +#~ msgstr "Desde %{ipaddr?:cualquier host} %{puerto?con origen %{puerto}}" + +#~ msgid "IP" +#~ msgstr "IP" + +#~ msgid "IP range" +#~ msgstr "Rango de IP" + +#~ msgid "IPs" +#~ msgstr "IP" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "MACs" +#~ msgstr "MAC" + +#~ msgid "" +#~ "Match %{protocol?%{family} %{protocol} traffic:any %{family} traffic} " +#~ "%{mark?with firewall mark %{mark}} %{limit?limited to %{limit}}" +#~ msgstr "" +#~ "Coincidir %{protocolo?%{familia} %{protocolo} tráfico:cualquiera " +#~ "%{familia} tráfico} %{marco?con marco de firewall %{marco}}" + +#~ msgid "Network" +#~ msgstr "Red" + +#~ msgid "Refuse forward" +#~ msgstr "Rechazar reenvío" + +#~ msgid "Refuse input" +#~ msgstr "Rechazar entrada" + +#~ msgid "Refuse output" +#~ msgstr "Rechazar salida" + +#~ msgid "Rewrite to" +#~ msgstr "Reescribe a" + +#~ msgid "Rewrite to %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" +#~ msgstr "" +#~ "Reescribe a %{ipaddr?%{puerto?%{ipaddr}, %{puerto}:%{ipaddr}}:%{puerto}}" + +#~ msgid "Rewrite to outbound device IP" +#~ msgstr "Reescribir a la IP del dispositivo saliente" + +#~ msgid "To %s at %s on this device" +#~ msgstr "A %s en %s por este dispositivo" + +#~ msgid "To %s in %s" +#~ msgstr "A %s en %s" + +#~ msgid "To %s on this device" +#~ msgstr "A %s por este dispositivo" + +#~ msgid "To %s, %s in %s" +#~ msgstr "A %s, %s en %s" + +#~ msgid "" +#~ "To %{ipaddr?:any destination} %{port?at %{port}} %{zone?via zone %{zone}} " +#~ "%{device?egress device %{device}}" +#~ msgstr "" +#~ "A %{ipaddr?:cualquier destino} %{puerto?a %{puerto}} %{zona?via zona " +#~ "%{zona}} %{dispositivo?dispositivo de salida %{dispositivo}}" + +#~ msgid "Via %s" +#~ msgstr "Vía %s" + +#~ msgid "Via %s at %s" +#~ msgstr "Vía %s a %s" + +#~ msgid "any host" +#~ msgstr "cualquier host" + +#~ msgid "any router IP" +#~ msgstr "cualquier router IP" + +#~ msgid "not" +#~ msgstr "No" + +#~ msgid "port" +#~ msgstr "puerto" + +#~ msgid "ports" +#~ msgstr "puertos" + +#~ msgid "type" +#~ msgstr "Tipo" + +#~ msgid "types" +#~ msgstr "Tipos" + +#~ msgid "Force connection tracking" +#~ msgstr "Forzar seguimiento de conexión" + +#~ msgid "" +#~ "Prevent the installation of NOTRACK rules which would bypass " +#~ "connection tracking." +#~ msgstr "" +#~ "Evite la instalación de reglas NOTRACK que evitarían el " +#~ "seguimiento de la conexión." + +#~ msgid "Disable" +#~ msgstr "Desactivar" + +#~ msgid "Restart Firewall" +#~ msgstr "Reiniciar Firewall" + +#~ msgid "Rule is disabled" +#~ msgstr "Regla desactivada" + +#~ msgid "Rule is enabled" +#~ msgstr "Regla activada" + +#~ msgid "Add" +#~ msgstr "Añadir" + +#~ msgid "Add and edit..." +#~ msgstr "Añadir y editar..." + +#~ msgid "External zone" +#~ msgstr "Zona externa" + +#~ msgid "New SNAT rule" +#~ msgstr "Nueva regla SNAT" + +#~ msgid "New forward rule" +#~ msgstr "Nueva regla de reenvío" + +#~ msgid "New input rule" +#~ msgstr "Nueva regla de entrada" + +#~ msgid "New port forward" +#~ msgstr "Nuevo reenvío de puerto" + +#~ msgid "New source NAT" +#~ msgstr "Nuevo origen NAT" + +#~ msgid "Open ports on router" +#~ msgstr "Abrir puertos en el router" + +#~ msgid "Other..." +#~ msgstr "Otros..." + +#~ msgid "To source IP" +#~ msgstr "A IP origen" + +#~ msgid "To source port" +#~ msgstr "A puerto origen" + +#~ msgid "Output zone" +#~ msgstr "Zona de salida" + +#~ msgid "(Unnamed Entry)" +#~ msgstr "(Entrada sin nombre)" + +#~ msgid "(Unnamed Rule)" +#~ msgstr "(Regla sin nombre)" + +#~ msgid "(Unnamed SNAT)" +#~ msgstr "(SNAT sin nombre)" + +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "Reenvío entre zonas" + +#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgstr "" +#~ "Coincidir con tráfico reenviado al puerto o rango de puertos destino." + +#~ msgid "" +#~ "Match incoming traffic originating from the given source port or port " +#~ "range on the client host." +#~ msgstr "" +#~ "Haga coincidir el tráfico entrante que se origina en el puerto de origen " +#~ "o el rango de puertos en el host del cliente." + +#~ msgid "Rewrite matched traffic to the given address." +#~ msgstr "Reescribir el tráfico que coincida a estas direcciones." + +#~ msgid "" +#~ "Rewrite matched traffic to the given source port. May be left empty to " +#~ "only rewrite the IP address." +#~ msgstr "" +#~ "Reescribir el tráfico que coincida con este puerto origen. Deje en blanco " +#~ "para reescribir sólo la dirección IP." + +#~ msgid "Rewrite to source %s" +#~ msgstr "Reescribir a origen %s" + +#~ msgid "Rewrite to source %s, %s" +#~ msgstr "Reescribir a origen %s, %s" + +#~ msgid "SNAT IP address" +#~ msgstr "Dirección IP SNAT" + +#~ msgid "SNAT port" +#~ msgstr "Puerto SNAT" + +#~ msgid "Source NAT" +#~ msgstr "Origen NAT" + +#~ msgid "" +#~ "Source NAT is a specific form of masquerading which allows fine grained " +#~ "control over the source IP used for outgoing traffic, for example to map " +#~ "multiple WAN addresses to internal subnets." +#~ msgstr "" +#~ "Origen NAT es una forma específica de enmascaramiento que permite el " +#~ "control fino del origen IP que se usa en el tráfico de salida por ejemplo " +#~ "para dirigir múltiples direcciones WAN a las subredes internas." + +#~ msgid "Start Time (hh:mm:ss)" +#~ msgstr "Hora de inicio (hh:mm:ss)" + +#~ msgid "Stop Time (hh:mm:ss)" +#~ msgstr "Hora de finalización (hh:mm:ss)" + +#~ msgid "" +#~ "This page allows you to change advanced properties of the port forwarding " +#~ "entry. In most cases there is no need to modify those settings." +#~ msgstr "" +#~ "Propiedades avanzadas de la entrada \"reenvío de puertos\". No suele ser " +#~ "necesario modificar esta configuración." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the traffic rule " +#~ "entry, such as matched source and destination hosts." +#~ msgstr "" +#~ "Esta página le permite cambiar las propiedades avanzadas de la entrada de " +#~ "la regla de tráfico, como los hosts de origen y destino coincidentes." + +#~ msgid "Unnamed SNAT" +#~ msgstr "SNAT sin nombre" + +#~ msgid "" +#~ "You may specify multiple by selecting \"-- custom --\" and then entering " +#~ "protocols separated by space." +#~ msgstr "" +#~ "Puede poner varios seleccionando \"-- personalizado --\" e introduciendo " +#~ "los protocolos separados por espacio." + +#~ msgid "Zone %q" +#~ msgstr "Zona %q" + +#~ msgid "traffic" +#~ msgstr "Tráfico" diff --git a/luci-app-firewall/po/fr/firewall.po b/luci-app-firewall/po/fr/firewall.po new file mode 100644 index 000000000..bc11f49aa --- /dev/null +++ b/luci-app-firewall/po/fr/firewall.po @@ -0,0 +1,1417 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-03-20 17:55+0000\n" +"Last-Translator: Hydci \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "-- ajouter IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "-- ajouter MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Accepter %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "Empêcher la réécriture de la source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Suivre vers %{dest}%{dest_ip ? IP " +"%{dest_ip}}%{dest_port ? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Laisser %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Assigner DSCP classification " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" +"Attribuer conntrack assistant %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" +"Réécrire automatiquement l'IP source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Ne pas suivre %{src?%{dest?forward:" +"input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Rejeter %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "Une IP de réécriture doit être spécifiée!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPTER - Désactiver la réécriture d'adresses" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Action" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Arguments iptables bruts supplémentaires pour classer le trafic de " +"destination de la zone, par exemple -p tcp --dport 443 pour " +"correspondre uniquement au trafic HTTPS sortant." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Arguments iptables bruts supplémentaires pour classer le trafic " +"source de la zone, par exemple -p tcp --sport 443 pour " +"correspondre uniquement au trafic HTTPS entrant." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Paramètres avancés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "Autoriser le trafic \"non valide\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Permettre la transmission des zones source :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Permettre la transmission vers les zones destination :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "N'importe lequel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "N'importe quel jour" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Appliquer un XOR au niveau du bit de la valeur donnée et de la valeur de " +"repère existante sur les connexions établies. Le format est la valeur[/" +"mask]. Si un masque est spécifié, les bits définis dans le masque sont mis à " +"zéro." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Appliquez la classe ou la valeur DSCP donnée aux connexions établies." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Attribuez l'assistant de suivi des connexions spécifié au trafic " +"correspondant." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "Affectation automatique des assistants" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Attribuer automatiquement des assistants conntrack en fonction du protocole " +"de trafic et du port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "Paramètres Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "Assistants Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "Le contenu a été enregistré." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "Continuer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "Appareils couverts" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Réseaux couverts" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "Sous-réseaux couverts" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Régles spécifiques" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Les règles personnalisées vous permettent d'exécuter des commandes iptables " +"arbitraires qui ne sont pas autrement couvertes par le framework de pare-" +"feu. Les commandes sont exécutées après chaque redémarrage du pare-feu, " +"juste après le chargement de l'ensemble de règles par défaut." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "Classification DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "Marque DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "Marque DSCP requise" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Adresse de destination" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Port de destination" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Zone de destination" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "Nom de l'appareil" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"N'installez pas de règles supplémentaires pour rejeter le trafic transféré " +"avec l'état conntrack invalide. Cela peut être nécessaire pour les " +"configurations de route asymétriques complexes." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Supprimer les paquets invalides" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Activer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "Activer le NAT sur la boucle-locale" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Activer la protection contre le SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Activer les traces (logs) sur cette zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "Attendu : % s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "Fonction expérimentale. Pas entièrement compatible avec QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Choisit explicitement les assistants de suivi de connexion autorisés pour le " +"trafic de zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Adresse IP externe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Port externe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Arguments supplémentaires" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "Arguments de destination supplémentaires" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "Arguments supplémentaires iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "Arguments sources supplémentaires" + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Pare-feu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Pare-feu - Règles personnalisées" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "Pare-feu - Règles NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Pare-feu - Redirections de ports" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Pare-feu - Règles de trafic" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Pare-feu - Configuration des zones" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "Migration de la configuration du pare-feu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Transférer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "Vendredi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Paramètres généraux" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "Déchargement de flux matériel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 et IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "IPv4 seulement" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "IPv6 seulement" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "Appareil entrant" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Entrée" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Adresse IP interne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Port interne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Zone interne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "Marque DSCP non valide" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "Valeur limite non valide" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "Rafale limite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Limiter les messages de journalisation" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "Limiter la correspondance" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Limiter la correspondance à %{limit.num} paquets par %{limit." +"unit}%{limit.burst? burst %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "Limite le trafic correspondant au débit spécifié." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "IP source de bouclage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Réécriture automatique sur l'IP de l'interface sortante" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "Contrainte du MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Masquage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Match" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "Match DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Type ICMP correspondant" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "Match device" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" +"Faites correspondre le trafic transféré dirigé vers l'adresse IP donnée." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Faites correspondre le trafic transféré dirigé vers le port de destination " +"ou la plage de ports donné." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" +"Faites correspondre le trafic transféré depuis cette adresse IP ou cette " +"plage." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Faites correspondre le trafic transféré provenant du port source ou de la " +"plage de ports donné." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "Aide au match" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Prendre en compte le trafic dirigé vers le port de destination donné (ou la " +"gamme de ports) sur cet hôte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "Match mark" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Faites correspondre le trafic à l'aide de l'assistant de suivi des " +"connexions spécifié." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Correspond à une marque de pare-feu spécifique ou à une gamme de marques " +"différentes." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Correspond au trafic transféré à l'aide du périphérique réseau sortant " +"spécifié." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Correspond au trafic portant le marquage DSCP spécifié." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Nombre initial maximal de paquets à faire correspondre: ce nombre est " +"rechargé d'un à chaque fois que la limite spécifiée ci-dessus n'est pas " +"atteinte, jusqu'à ce nombre." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "Lundi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "Mois jours" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "Règles NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Les règles NAT permettent un contrôle fin sur l'IP source à utiliser pour le " +"trafic sortant ou transféré." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Nom" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" +"Correspondre uniquement au trafic entrant dirigé vers l'adresse IP donnée." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "Montrer seulement le trafic entrant provenant de ces adresses MAC." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" +"Correspondre uniquement au trafic entrant provenant de cette adresse IP ou " +"de cette plage." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Faire correspondre uniquement le trafic entrant provenant du port source ou " +"de la plage de ports donné sur l'hôte client" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "Périphérique sortant" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "Zone sortante" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Sortie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"Passe des arguments supplémentaires aux tables d'adresses IP. A utiliser " +"avec précaution !" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Le passage d'arguments iptables bruts aux règles de classification du trafic " +"source et de destination permet de faire correspondre les paquets en " +"fonction d'autres critères que les interfaces ou les sous-réseaux. Ces " +"options doivent être utilisées avec une extrême prudence, car des valeurs " +"non valides peuvent endommager le jeu de règles du pare-feu, exposant " +"complètement tous les services." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Redirections de port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"La redirection de port permet aux ordinateurs distants sur Internet, de se " +"connecter à un ordinateur ou service spécifié dans le réseau local privé." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protocole" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Rediriger le trafic entrant correspondant vers le port donné sur l'hôte " +"interne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Rediriger le trafic entrant correspondant vers l'hôte interne spécifié" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "Nécessite un support NAT matériel. Implémenté au moins pour mt7621" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" +"Restreindre la substitution d'adresses (Masquerade) à ces sous-réseaux " +"destinataires" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" +"Restreindre la substitution d'adresses (Masquerade) à ces sous-réseaux " +"sources" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Restreindre à cette famille d'adresses" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "Réécrire l'adresse IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Réécrivez le trafic correspondant à l'adresse IP source spécifiée." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Réécrivez le trafic correspondant sur le port source ou la plage de ports " +"spécifié." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "Port de réécriture" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "Routage/déchargement NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Réécriture sur IP ou port source spécifique" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "Samedi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "Définir la marque" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Définissez la valeur de repère donnée sur les connexions établies. Le format " +"est la valeur[/mask]. Si un masque est spécifié, seuls les bits définis dans " +"le masque sont modifiés." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "Déchargement basé sur logiciel pour le routage/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "Déchargement de flux logiciel" + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# +# msgid "Traffic Redirection" +# msgstr "" +# +# msgid "" +# "Traffic redirection allows you to change the destination address of " +# "forwarded packets." +# msgstr "" +# +# msgid "Overview" +# msgstr "" +# +# msgid "Name" +# msgstr "" +# +# msgid "Source zone" +# msgstr "" +# +# msgid "Source MAC-address" +# msgstr "" +# +# msgid "Source port" +# msgstr "" +# +# msgid "Protocol" +# msgstr "" +# +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Adresse IP source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "Adresse MAC source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Adresse source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Port source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Zone source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Spécifie s'il faut lier cette règle de trafic à un périphérique réseau " +"entrant ou sortant spécifique." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Spécifie s'il faut utiliser l'adresse IP externe ou interne pour le trafic " +"réfléchi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Date de début (aaaa-mm-jj)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "Heure de début (hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Date d'arrêt (aaaa-mm-jj)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "Heure d'arrêt (hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "Dimanche" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"La configuration de pare-feu existante doit être modifiée pour que LuCI " +"fonctionne correctement." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Le pare-feu crée des zones sur les interfaces réseau pour contrôler le flux " +"du trafic réseau." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Les options ci-dessous contrôlent les politiques de transmission entre cette " +"zone (%s) et les autres zones. Zones de destination couvre le " +"trafic transfmis venant de %q. Zones source " +"correspond au trafic transféré d'autres zones à destination de %q. La règle de transmission est unidirectionnelle, la " +"transmission du LAN au WAN n'implique pas également l'autorisation " +"de transmission du WAN au LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Cette section définit les propriétés communes de %q. Les options entrée et sortie définissent les politiques par défaut pour le trafic " +"entrant et sortant de cette zone tandis que l'option en avant " +"décrit la politique pour le trafic transféré entre différents réseaux dans " +"la zone. Réseaux couverts spécifie quels réseaux disponibles sont " +"membres de cette zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "Jeudi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "Restrictions de temps" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "Heure en UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "Aide au suivi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Règles de trafic" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"Les règles de trafic définissent des politiques pour les paquets voyageant " +"entre différentes zones, par exemple pour rejeter le trafic entre certains " +"hôtes ou pour ouvrir des ports WAN sur le routeur." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "Mardi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "Impossible d'enregistrer le contenu: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Assistant conntrack inconnu ou non installé \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "NAT sans nom" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "Transférer sans nom" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "Règle sans nom" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "Zone sans nom" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "Protocole non reconnu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"En appuyant sur \"Continuer\", les sections \"rediriger\" avec la cible " +"\"SNAT\" seront converties en sections \"nat\" et le pare-feu sera redémarré " +"pour appliquer la configuration mise à jour." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "Utiliser une adresse IP externe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "Utiliser l'adresse IP interne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Utilisez cette option pour classer le trafic de zone par périphériques " +"réseau bruts non uci gérés." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Utilisez cette option pour classer le trafic de zone par sous-réseau source " +"ou de destination au lieu de réseaux ou de périphériques." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "Marque de pare-feu valide requise" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "Mercredi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "Jours de la semaine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "Marque de pare-feu XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "Marque XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "Zone ⇒ Transmissions" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zones" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "accepter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "tous" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "n'importe quelle zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "appliquer une marque de pare-feu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "affecter l'assistant conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "journée" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "ne réécris pas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "ne pas suivre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "ignorer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "heure" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "minute" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "rejeter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "seconde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "cet appareil" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "cette nouvelle zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "non limité" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "non précisé" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "marque de pare-feu valide" + +#~ msgid "%s in %s" +#~ msgstr "%s dans %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s avec %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s dans %s" + +#~ msgid "Accept input" +#~ msgstr "Accepter l'entrée" + +#~ msgid "Destination IP address" +#~ msgstr "Adresse IP de destination" + +#~ msgid "Forward to" +#~ msgstr "Transférer à" + +#~ msgid "IP" +#~ msgstr "IP" + +#~ msgid "IP range" +#~ msgstr "Plage IP" + +#~ msgid "IPs" +#~ msgstr "IPs" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "MACs" +#~ msgstr "MACs" + +#~ msgid "Network" +#~ msgstr "Réseau" + +#~ msgid "any host" +#~ msgstr "n'importe quel hôte" + +#~ msgid "not" +#~ msgstr "ne pas" + +#~ msgid "port" +#~ msgstr "port" + +#~ msgid "type" +#~ msgstr "type" + +#~ msgid "Force connection tracking" +#~ msgstr "Forcer le suivi des connexions" + +#~ msgid "Disable" +#~ msgstr "Désactiver" + +#~ msgid "External zone" +#~ msgstr "Zone externe" + +#~ msgid "New SNAT rule" +#~ msgstr "Nouvelle règle SNAT" + +#~ msgid "New input rule" +#~ msgstr "Nouvelle règle d'entrée" + +#~ msgid "New port forward" +#~ msgstr "Nouvelle redirection de port" + +#~ msgid "New source NAT" +#~ msgstr "Nouvelle source NAT" + +#~ msgid "Open ports on router" +#~ msgstr "Ports ouverts sur le routeur" + +#~ msgid "Other..." +#~ msgstr "Autre..." + +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "Transmission entre zones" + +#~ msgid "SNAT IP address" +#~ msgstr "Adresse IP SNAT" + +#~ msgid "SNAT port" +#~ msgstr "Port SNAT" + +#~ msgid "Source NAT" +#~ msgstr "Source NAT" + +#~ msgid "" +#~ "This page allows you to change advanced properties of the port forwarding " +#~ "entry. In most cases there is no need to modify those settings." +#~ msgstr "" +#~ "Cette page vous permet de modifier les propriétés avancées parmi les " +#~ "entrées de redirection de port. Dans la plupart des cas, cela n'est pas " +#~ "nécessaire de modifier ces paramètres." + +#~ msgid "Zone %q" +#~ msgstr "Zone %q" diff --git a/luci-app-firewall/po/he/firewall.po b/luci-app-firewall/po/he/firewall.po new file mode 100644 index 000000000..008c542aa --- /dev/null +++ b/luci-app-firewall/po/he/firewall.po @@ -0,0 +1,1093 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/hi/firewall.po b/luci-app-firewall/po/hi/firewall.po new file mode 100644 index 000000000..825fb1625 --- /dev/null +++ b/luci-app-firewall/po/hi/firewall.po @@ -0,0 +1,1139 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-01-14 15:22+0000\n" +"Last-Translator: Franco Castillo \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# +# msgid "Traffic Redirection" +# msgstr "" +# +# msgid "" +# "Traffic redirection allows you to change the destination address of " +# "forwarded packets." +# msgstr "" +# +# msgid "Overview" +# msgstr "" +# +# msgid "Name" +# msgstr "" +# +# msgid "Source zone" +# msgstr "" +# +# msgid "Source MAC-address" +# msgstr "" +# +# msgid "Source port" +# msgstr "" +# +# msgid "Protocol" +# msgstr "" +# +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "MAC" +#~ msgstr "MAC" diff --git a/luci-app-firewall/po/hu/firewall.po b/luci-app-firewall/po/hu/firewall.po new file mode 100644 index 000000000..cf1c6aad5 --- /dev/null +++ b/luci-app-firewall/po/hu/firewall.po @@ -0,0 +1,1454 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2020-03-31 13:27+0000\n" +"Last-Translator: Tamas Szanto \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "-- IP-cím hozzáadása --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "-- MAC-cím hozzáadása --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "Forrás felülírásának tiltása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Továbbítás ide: %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Eldobás %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "Egy átírási IP-t meg kell adni!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "ELFOGADÁS – címátírás letiltása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Művelet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"További nyers iptables argumentumok a zóna célforgalmának " +"besorolásához, például -p tcp --dport 443 csak a kimenő HTTPS " +"forgalom illesztéséhez." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"További nyers iptables argumentumok a zóna forrásforgalmának " +"besorolásához, például -p tcp --sport 443 csak a bejövő HTTPS " +"forgalom illesztéséhez." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Speciális beállítások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "„Érvénytelen” forgalom engedélyezése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Továbbítás engedélyezése a forrászónákból:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Továbbítás engedélyezése ezekbe a célzónákba:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Bármelyik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "Bármely nap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"A megadott érték és a meglévő jelölésérték bitenkénti kizáró vagy " +"műveletének alkalmazása a kiépített kapcsolatokon. A formátum: érték[/" +"maszk]. Ha egy maszk meg van adva, akkor a maszkban beállított bitek ki " +"lesznek nullázva." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" +"A megadott DSCP-osztály vagy érték alkalmazása a kiépített kapcsolatokra." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"A megadott kapcsolatkövető segítőjének hozzárendelése az illesztett " +"forgalomhoz." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "Automatikus segítő hozzárendelés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Kapcsolatkövető segítők automatikus hozzárendelése a forgalom protokollja és " +"portja alapján" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "Kapcsolatkövető beállításai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "Kapcsolatkövető segítők" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "A tartalom mentésre került." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "Tovább" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "Lefedett eszközök" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Lefedett hálózatok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "Lefedett alhálózatok" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Egyéni szabályok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Az egyéni szabályok lehetővé teszik tetszőleges iptables parancsok " +"végrehajtását, amelyeket a tűzfal keretrendszer egyébként nem fed le. A " +"parancsok minden tűzfal-újraindítás után végrehajtásra kerülnek, közvetlenül " +"az alapértelmezett szabálykészletek betöltődése után." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "DSCP osztályozás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "DSCP jelölés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "DSCP jelölés szükséges" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Célcím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Célport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Célzóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "Eszköz neve" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Ne telepítsen további szabályokat az érvénytelen kapcsolatkövető " +"állapottal rendelkező továbbított forgalom visszautasításához." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Érvénytelen csomagok eldobása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Engedélyezés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "NAT visszacsatolás engedélyezése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "SYN-elárasztás elleni védelem engedélyezése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Naplózás engedélyezése ezen a zónán" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "Elvárás: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "Kísérleti funkció. Nem teljesen kompatibilis a QoS/SQM használatával." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Határozottan kiválasztja az engedélyezett kapcsolatkövető segítőket a " +"zónaforgalomhoz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Külső IP-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Külső port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "További argumentumok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "További célargumentumok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "További iptables argumentumok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "További forrásargumentumok" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Tűzfal" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Tűzfal – egyéni szabályok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "Tűzfal – NAT szabályok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Tűzfal – porttovábbítások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Tűzfal – forgalmi szabályok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Tűzfal – Zóna beállításai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Továbbítás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "Péntek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Általános beállítások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "Hardveres áramláskiürítés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 és IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "Csak IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "Csak IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "Bejövő eszköz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Bemenet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Belső IP-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Belső port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Belső zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "Érvénytelen DSCP jelölés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "Érvénytelen korlátérték" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "Löket korlátozása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Naplóüzenetek korlátozása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "Illesztés korlátozása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "Korlátozza a megadott sebességre illeszkedő forgalmat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "Visszacsatolás forrás IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "ÁLCÁZÁS – átírás automatikusan a kimenő csatoló IP-jére" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "MSS összefogás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Álcázás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Illesztés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "DSCP illesztése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "ICMP-típus illesztése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "Eszköz illesztése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "A megadott IP-címre irányított továbbított forgalom illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"A megadott célportra vagy porttartományra irányított továbbított forgalom " +"illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "Erről az IP-ről vagy tartományról továbbított forgalom illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"A megadott forrásportról vagy porttartományból eredő továbbított forgalom " +"illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "Illesztési segítő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Az ezen a gépen lévő megadott célportra vagy porttartományra irányított " +"bejövő forgalom illesztése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "Jelölés illesztése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Forgalom illesztése a megadott kapcsolatkövető segítő használatával." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Egy bizonyos tűzfaljelölést vagy különböző jelölések tartományát illeszti." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"A megadott kimeneti hálózati eszköz használatával illeszti a továbbított " +"forgalmat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "A megadott DSCP jelölést szállító forgalmat illeszti." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Az illesztendő csomagok legnagyobb kezdeti száma: ez a szám újratöltődik " +"minden alkalommal, amikor a fent meghatározott korlátot nem érik el, " +"legfeljebb eddig a számig." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "Hétfő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "Hónap napjai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "NAT szabályok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"A NAT szabályok lehetővé teszik a részletes szabályozást a kimenő vagy " +"továbbított forgalomnál használandó forrás IP fölött." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Név" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Csak a megadott IP-címre irányított bejövő forgalom illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "Csak ezekről a MAC-ekről érkező bejövő forgalom illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" +"Csak erről az IP-ről vagy tartományból érkező bejövő forgalom illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Csak az ügyfélgépen lévő megadott forrásportról vagy porttartományból eredő " +"bejövő forgalom illesztése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "Kimeneti eszköz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "Kimenő zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Kimenet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"Átadja a további argumentumokat az iptables részére. Használja " +"körültekintően!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"A forrás- és célforgalom osztályozási szabályainak való nyers iptables " +"argumentumok átadása lehetővé teszi a csomagoknak a csatolóktól vagy " +"alhálózatoktól eltérő feltételek alapján történő illesztését. Ezeket a " +"kapcsolókat rendkívül óvatosan kell használni, mivel az érvénytelen értékek " +"tönkre tehetik a tűzfalszabálykészleteket, ezáltal teljesen feltárva az " +"összes szolgáltatást." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Porttovábbítások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"A porttovábbítás lehetővé teszi az interneten lévő távoli számítógépeknek a " +"személyes helyi hálózat bizonyos számítógépéhez vagy szolgáltatásához " +"történő csatlakozását." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protokoll" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "Egyező bejövő forgalom átirányítása a belső gép megadott portjára" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Egyező bejövő forgalom átirányítása a megadott belső gépre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "Hardveres NAT támogatás szükséges. Legalább az mt7621-hez megvalósítva" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Álcázás korlátozása a megadott célalhálózatokra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "Álcázás korlátozása a megadott forrás alhálózatokra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Korlátozás címcsaládra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "IP-cím átírása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Illesztett forgalom átírása a megadott forrás IP-címre." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Illesztett forgalom átírása a megadott forrásportra vagy porttartományra." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "Port átírása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "Útválasztás vagy NAT kiürítés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT – átírás egy adott forrás IP-re vagy portra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "Szombat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "Jelölés beállítása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"A megadott jelölésérték beállítása a kiépített kapcsolatokon. A formátum: " +"érték[/maszk]. Ha egy maszk meg van adva, akkor csak a maszkban beállított " +"bitek lesznek módosítva." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "Szoftver alapú kiürítés az útválasztásnál vagy NAT-nál" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "Szoftveres áramláskiürítés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Forrás IP-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "Forrás MAC-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Forráscím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Forrásport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Forrászóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Meghatározza, hogy ezt a forgalomszabályt egy adott bejövő vagy kimenő " +"hálózati eszközhöz kell kötni." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Meghatározza, hogy a külső vagy a belső IP-címet használja a visszatükrözött " +"forgalomnál." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Kezdés dátuma (ÉÉÉÉ-HH-NN)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "Kezdés ideje (ÓÓ.PP.MM)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Leállítás dátuma (ÉÉÉÉ-HH-NN)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "Leállítás ideje (ÓÓ.PP.MM)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "Vasárnap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"A tűzfal zónákat hoz létre a hálózati csatolók fölött a hálózati forgalom " +"áramlásának szabályozásához." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Az alábbi beállítások vezérlik a továbbítási szabályokat a jelenlegi zóna " +"(%s) és a többi zóna között. A célzónák fedik le a továbbított " +"forgalmat, amelynek forrása %q. A forrászónák " +"illesztik a továbbított forgalmat más zónákból, amelynek célja %q. A továbbítási szabály egyirányú, például egy továbbítás " +"LAN-ból WAN-ba nem jelenti azt, hogy a továbbítás WAN-ból LAN-ba is " +"engedélyezett." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Ez a szakasz a(z) %q közös tulajdonságait határozza meg. A bemenet " +"és kimenet beállításai határozzák meg a zónába be- és kilépő " +"forgalom alapértelmezett szabályait, míg a továbbítási beállítás a " +"különböző hálózatok közötti továbbított forgalom szabályát írja le a zónán " +"belül. A lefedett hálózatok adják meg, hogy mely elérhető hálózatok " +"tagjai ennek a zónának." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "Csütörtök" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "Időkorlátozások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "Idő UTC szerint" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "Követési segítő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Forgalmi szabályok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"A forgalmi szabályok a különböző zónák között utazó csomagokra vonatkozó " +"szabályokat határozzák meg, például bizonyos gépek közötti forgalom " +"visszautasításához vagy WAN portok megnyitásához az útválasztón." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "Kedd" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "Nem lehet elmenteni a tartalmat: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Ismeretlen vagy nem telepített kapcsolatkövető segítő: „%s”" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "Névtelen NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "Névtelen továbbítás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "Névtelen szabály" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "Névtelen zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "Külső IP-cím használata" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "Belső IP-cím használata" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Használja ezt a beállítást a zónaforgalom nyers, nem uci által " +"kezelt hálózati eszközök szerint történő besorolásához." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Használja ezt a beállítást a zónaforgalom forrás- vagy célalhálózat szerint " +"történő besorolásához a hálózatok vagy eszközök helyett." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "Érvényes tűzfaljelölés szükséges" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "Szerda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "Hétköznapok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "kizáró vagy tűzfaljelölés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "kizáró vagy jelölés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "Zóna ⇒ Továbbítások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zónák" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "elfogadás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "bármely" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "bármely zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "tűzfaljelölés alkalmazása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "kapcsolatkövető segítő hozzárendelése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "nap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "ne írja át" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "ne kövessen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "eldobás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "óra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "perc" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "visszautasítás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "másodperc" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "ez az új zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "korlátlan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "nincs meghatározva" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "érvényes tűzfaljelölés" + +#~ msgid "Rewrite to" +#~ msgstr "Átírás erre:" + +#~ msgid "Rewrite to outbound device IP" +#~ msgstr "Átírás a kimenő eszköz IP-jére" + +#~ msgid "%s in %s" +#~ msgstr "%s ebben: %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s ezzel: %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s ebben: %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d csomag / %s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "%d csomag / %s, löket %d csomag" + +#~ msgid "%s and limit to %s" +#~ msgstr "%s és korlátozás erre: %s" + +#~ msgid "Accept forward" +#~ msgstr "Továbbítás elfogadása" + +#~ msgid "Accept input" +#~ msgstr "Bemenet elfogadása" + +#~ msgid "Accept output" +#~ msgstr "Kimenet elfogadása" + +#~ msgid "Destination IP address" +#~ msgstr "Cél IP-cím" + +#~ msgid "Discard forward" +#~ msgstr "Továbbítás elvetése" + +#~ msgid "Discard input" +#~ msgstr "Bemenet elvetése" + +#~ msgid "Discard output" +#~ msgstr "Kimenet elvetése" + +#~ msgid "Do not rewrite" +#~ msgstr "Ne írja felül" + +#~ msgid "Do not track forward" +#~ msgstr "Ne kövesse a továbbítást" + +#~ msgid "Do not track input" +#~ msgstr "Ne kövesse a bemenetet" + +#~ msgid "Do not track output" +#~ msgstr "Ne kövesse a kimenetet" + +#~ msgid "Forward to" +#~ msgstr "Továbbítás ide" + +#~ msgid "From %s in %s" +#~ msgstr "Innen: %s, ebben: %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "Innen: %s, ebben: %s, ezzel a forrással: %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "Innen: %s, ebben: %s, ezekkel a forrásokkal: %s és %s" + +#~ msgid "From %s on this device" +#~ msgstr "Ettől: %s, ezen az eszközön" + +#~ msgid "From %s on this device with source %s" +#~ msgstr "Ettől: %s, ezen az eszközön, ezzel a forrással: %s" + +#~ msgid "From %s on this device with source %s and %s" +#~ msgstr "" +#~ "Ettől: %s, ezen az eszközön, ezekkel a forrásokkal: %s és %s" + +#~ msgid "IP" +#~ msgstr "IP" + +#~ msgid "IP range" +#~ msgstr "IP-tartomány" + +#~ msgid "IPs" +#~ msgstr "IP-k" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "MACs" +#~ msgstr "MAC-ek" + +#~ msgid "Network" +#~ msgstr "Hálózat" + +#~ msgid "Refuse forward" +#~ msgstr "Továbbítás visszautasítása" + +#~ msgid "Refuse input" +#~ msgstr "Bemenet visszautasítása" + +#~ msgid "Refuse output" +#~ msgstr "Kimenet visszautasítása" + +#~ msgid "To %s at %s on this device" +#~ msgstr "Ide: %s, ekkor: %s, ezen az eszközön" + +#~ msgid "To %s in %s" +#~ msgstr "Ide: %s, ebben: %s" + +#~ msgid "To %s on this device" +#~ msgstr "Ide: %s, ezen az eszközön" + +#~ msgid "To %s, %s in %s" +#~ msgstr "Erre: %s, %s ebben: %s" + +#~ msgid "Via %s" +#~ msgstr "Ezen keresztül: %s" + +#~ msgid "Via %s at %s" +#~ msgstr "Ezen keresztül: %s, itt: %s" + +#~ msgid "any host" +#~ msgstr "bármely gép" + +#~ msgid "any router IP" +#~ msgstr "bármely útválasztó IP" + +#~ msgid "not" +#~ msgstr "nem" + +#~ msgid "port" +#~ msgstr "port" + +#~ msgid "ports" +#~ msgstr "portok" + +#~ msgid "type" +#~ msgstr "típus" + +#~ msgid "types" +#~ msgstr "típusok" + +#~ msgid "Force connection tracking" +#~ msgstr "Kapcsolat követés kényszerítése" + +#~ msgid "Add" +#~ msgstr "Hozzáadás" + +#~ msgid "Add and edit..." +#~ msgstr "Hozzáadás és szerkesztés..." + +#~ msgid "External zone" +#~ msgstr "Külső zóna" + +#~ msgid "New SNAT rule" +#~ msgstr "Új SNAT szabály" + +#~ msgid "New forward rule" +#~ msgstr "Új továbbítási szabály" + +#~ msgid "New input rule" +#~ msgstr "Új bemeneti szabály" + +#~ msgid "New port forward" +#~ msgstr "Új port továbbítás" + +#~ msgid "New source NAT" +#~ msgstr "Új forrás NAT" + +#~ msgid "Open ports on router" +#~ msgstr "Port megnyitása a routeren" + +#~ msgid "Other..." +#~ msgstr "Egyéb..." + +#~ msgid "To source IP" +#~ msgstr "Forrás IP-re" + +#~ msgid "To source port" +#~ msgstr "Forrás portra" + +#~ msgid "(Unnamed Entry)" +#~ msgstr "(Névtelen bejegyzés)" + +#~ msgid "(Unnamed Rule)" +#~ msgstr "(Névtelen szabály)" + +#~ msgid "(Unnamed SNAT)" +#~ msgstr "(Névtelen SNAT)" + +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "Zónák-közötti továbbítás" + +#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgstr "" +#~ "Továbbított forgalom szűrése a megadott cél port, vagy port tartomány " +#~ "szerint." + +#~ msgid "" +#~ "Match incoming traffic originating from the given source port or port " +#~ "range on the client host." +#~ msgstr "" +#~ "Az ügyfél gép megadott portjáról, vagy port tartományából indított " +#~ "forgalom szűrése. " + +#~ msgid "Rewrite matched traffic to the given address." +#~ msgstr "Az összeíllő forgalom átírása a megadott címre." + +#~ msgid "" +#~ "Rewrite matched traffic to the given source port. May be left empty to " +#~ "only rewrite the IP address." +#~ msgstr "" +#~ "Az összeillő forgalom átírása a megadott forrás portra. Amennyibe üresen " +#~ "van hagyva, csak az IP cím kerül átírásra." + +#~ msgid "Rewrite to source %s" +#~ msgstr "Átírás %s forrásra" + +#~ msgid "Rewrite to source %s, %s" +#~ msgstr "Átírás %s, %s forrásra" + +#~ msgid "SNAT IP address" +#~ msgstr "SNAT IP cím" + +#~ msgid "SNAT port" +#~ msgstr "SNAT port" + +#~ msgid "Source NAT" +#~ msgstr "Forrás NAT" + +#~ msgid "" +#~ "Source NAT is a specific form of masquerading which allows fine grained " +#~ "control over the source IP used for outgoing traffic, for example to map " +#~ "multiple WAN addresses to internal subnets." +#~ msgstr "" +#~ "A forrás NAT az álcázás olyan speciális formája, mely lehetővé teszi a " +#~ "kimenő forgalomhoz használt forrás IP címek aprólékos szabályozását, " +#~ "például több WAN cím hozzárendelését a belső alhálózatokhoz." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the port forwarding " +#~ "entry. In most cases there is no need to modify those settings." +#~ msgstr "" +#~ "Ez a lap lehetővé teszi a port továbbítási bejegyzések speciális " +#~ "tulajdonságainak módosítását. A legtöbb esetben ezeknek a beállításoknak " +#~ "a módosítása nem szükséges." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the traffic rule " +#~ "entry, such as matched source and destination hosts." +#~ msgstr "" +#~ "Ez a lap lehetővé teszi a forgalmi szabály bejegyzés speciális " +#~ "tulajdonságainak módosítását, mint a forrás- és célgépek megfeleltetése." + +#~ msgid "" +#~ "You may specify multiple by selecting \"-- custom --\" and then entering " +#~ "protocols separated by space." +#~ msgstr "" +#~ "Az \"-- egyéni --\" lehetőség választásával több protokoll megadása " +#~ "lehetséges egymástól szóközzell elválasztva." + +#~ msgid "Zone %q" +#~ msgstr "Zóna %q" diff --git a/luci-app-firewall/po/it/firewall.po b/luci-app-firewall/po/it/firewall.po new file mode 100644 index 000000000..31b3ecd9b --- /dev/null +++ b/luci-app-firewall/po/it/firewall.po @@ -0,0 +1,1357 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-03-03 13:34+0000\n" +"Last-Translator: TuxAlex0 \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Azione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Impostazioni Avanzate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "Consenti traffico \"non valido\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Permetti routing da zone di origine:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Permetti rounting a zone di destinazione:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Qualsiasi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "Qualsiasi giorno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "Dispositivi coperti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Reti coperte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "Sottoreti coperte" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Regole Personalizzate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Le regole personalizzate ti permettorno di eseguire comandi iptables " +"arbitrari che non sono altrimenti coperti dall'applicazione firewall. I " +"comandi sono eseguiti dopo ogni riavvio del firewall, giusto dopo le altre " +"regole che sono state caricate." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Indirizzo di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Porta di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Zona di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Scarta pacchetti invalidi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Abilita" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "Attiva NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Attiva protezione SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Attiva registro su questa zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Indirizzo IP Esterno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Porta Esterna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Comandi extra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Regole Personalizzate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Inoltro Porte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Regole Traffico" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Opzioni delle Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Inoltra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "Venerdì" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Impostazioni Generali" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 e IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "Solo IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "Solo IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Ingresso" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Indirizzo IP interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Porta interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Zona Interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Limita messaggi del registro" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Corrispondenza" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Corrispondenza tipo ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Corrispondi traffico in entrata diretto alla porta o intervallo di porte " +"dato su questo host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "Lunedì" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "Giorni del Mese" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Corrispondi solo traffico in entrata diretto al dato indirizzo IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "Corrispondi solo traffico in entrata da questi MAC." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "Corrispondi solo traffico in entrata da questo IP o intervallo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Corrispondi solo traffico in entrata originato dalla porta o intervallo di " +"porte sorgenti su host cliente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Passa comandi addizionali a iptables. Usare con cura!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Inoltri Porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"L'inoltro delle porte permette ai computer in remoto su Internet di " +"connettersi a uno specifico computer o servizio presente nella LAN privata" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protocollo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "Reindirizza il traffico in entrata alla porta data su host interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Reindirizza il traffico in entrata allo specifico host interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Limita il Masquerading alle subnet di destinazione date" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "Limita il Masquerading alle subnet sorgente date" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Limita agli indirizzi famiglia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "Sabato" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# msgid "Traffic Redirection" +# msgstr "" +# msgid "" +# "Traffic redirection allows you to change the destination address of " +# "forwarded packets." +# msgstr "" +# msgid "Overview" +# msgstr "" +# msgid "Name" +# msgstr "" +# msgid "Source zone" +# msgstr "" +# msgid "Source MAC-address" +# msgstr "" +# msgid "Source port" +# msgstr "" +# msgid "Protocol" +# msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Indirizzo IP di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "Indirizzo MAC di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Indirizzo di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Porta di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Zona di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Data di Inizio (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Data di Stop (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "Domenica" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Il firewall crea delle zone nelle tue interfacce di rete per controllare il " +"flusso del traffico." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Queste opzioni controllano le regole di inoltro tra questa zona (%s) e altre " +"zone. Le zone di destinazione coprono il traffico inoltrato " +"originato da %q. Le zone di origine corrispondono " +"il traffico inoltrato da altre zone che puntano a %q. La " +"regola di inoltro è unidirezionale, esempio: un inoltro dalla lan " +"alla wan non implica anche un permesso da inoltrare dalla wan alla " +"lan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Questa sezione definisce le proprietà comuni di %q. Le opzioni " +"diingresso e uscita definiscono le regole di default per " +"il traffico in entrata e uscita di questa zona mentre l'opzione di " +"inoltro descrive il metodo per il traffico inoltrato tra reti " +"differenti nella zona. Le reti coperte specificano quali reti " +"disponibili sono membri di questa zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "Giovedì" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "Orario in UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Regole di Traffico" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"Le regole del traffico definiscono il metodo per il viaggio dei pacchetti " +"tra zone differenti, per esempio per rifiutare il traffico tra certi host o " +"per aprire porte WAN sul router." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "Martedì" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "Regola senza nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "Zona senza nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "Mercoledì" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "Giorni della Settimana" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "Zona ⇒ Inoltri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "accetta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "qualsiasi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "qualsiasi zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "giorno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "non tracciare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "scarta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "rifiuta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "questa nuova zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s con %s" + +#~ msgid "%s and limit to %s" +#~ msgstr "%s e limita a %s" + +#~ msgid "Accept input" +#~ msgstr "Accetta input" + +#~ msgid "Accept output" +#~ msgstr "Accetta output" + +#~ msgid "Destination IP address" +#~ msgstr "Indirizzo IP destinazione" + +#~ msgid "Do not rewrite" +#~ msgstr "Non riscrivere" + +#~ msgid "Forward to" +#~ msgstr "Inoltra a" + +#~ msgid "From %s in %s" +#~ msgstr "Da %s a %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "Da %s a %s con sorgente %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "Da %s a %s con sorgente %s e %s" + +#~ msgid "IP" +#~ msgstr "IP" + +#~ msgid "IP range" +#~ msgstr "Intervallo IP" + +#~ msgid "IPs" +#~ msgstr "IPs" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "MACs" +#~ msgstr "MACs" + +#~ msgid "Network" +#~ msgstr "Rete" + +#~ msgid "To %s at %s on this device" +#~ msgstr "Verso %s a %s su questo dispositivo" + +#~ msgid "To %s in %s" +#~ msgstr "Verso %s in %s" + +#~ msgid "To %s on this device" +#~ msgstr "Verso %s su questo dispositivo" + +#~ msgid "To %s, %s in %s" +#~ msgstr "Verso %s, %s in %s" + +#~ msgid "Via %s at %s" +#~ msgstr "Via %s a %s" + +#~ msgid "any host" +#~ msgstr "qualsiasi host" + +#~ msgid "any router IP" +#~ msgstr "qualsiasi router IP" + +#~ msgid "not" +#~ msgstr "non" + +#~ msgid "ports" +#~ msgstr "porti" + +#~ msgid "types" +#~ msgstr "tipi" + +#~ msgid "Force connection tracking" +#~ msgstr "Forza tracciamento connessione" + +#~ msgid "Restart Firewall" +#~ msgstr "Riavvia Firewall" + +#~ msgid "Add" +#~ msgstr "Aggiungi" + +#~ msgid "Add and edit..." +#~ msgstr "Aggiungi e modifica..." + +#~ msgid "External zone" +#~ msgstr "Zona Esterna" + +#~ msgid "New SNAT rule" +#~ msgstr "Nuova regola SNAT" + +#~ msgid "New forward rule" +#~ msgstr "Nuova regola di inoltro" + +#~ msgid "New input rule" +#~ msgstr "Nuova regola di ingresso" + +#~ msgid "New port forward" +#~ msgstr "Nuova porta di inoltro" + +#~ msgid "New source NAT" +#~ msgstr "Nuova sorgente NAT" + +#~ msgid "Open ports on router" +#~ msgstr "Porte aperte sul router" + +#~ msgid "Other..." +#~ msgstr "Altri..." + +#~ msgid "To source IP" +#~ msgstr "Verso IP sorgente" + +#~ msgid "To source port" +#~ msgstr "Verso la porta sorgente" + +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "Inoltro tra le zone" + +#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgstr "" +#~ "Corrispondi traffico inoltrato alla porta o intervallo di porte dato." + +#~ msgid "" +#~ "Match incoming traffic originating from the given source port or port " +#~ "range on the client host." +#~ msgstr "" +#~ "Corrispondi traffico in entrata originato dalla porta o intervallo di " +#~ "porte dato su host cliente" + +#~ msgid "Rewrite matched traffic to the given address." +#~ msgstr "Riscrivi il traffico verso l'indirizzo dato." + +#~ msgid "" +#~ "Rewrite matched traffic to the given source port. May be left empty to " +#~ "only rewrite the IP address." +#~ msgstr "" +#~ "Riscrivi il traffico corrispondente alla porta sorgente data. Può essere " +#~ "lasciato vuoto per riscrivere solo l'indirizzo IP." + +#~ msgid "Rewrite to source %s" +#~ msgstr "Riscrivi alla sorgente %s" + +#~ msgid "Rewrite to source %s, %s" +#~ msgstr "Riscrivi alla sorgente %s, %s" + +#~ msgid "SNAT IP address" +#~ msgstr "Indirizzo IP SNAT" + +#~ msgid "SNAT port" +#~ msgstr "Porta SNAT" + +#~ msgid "Source NAT" +#~ msgstr "NAT di origine" + +#~ msgid "" +#~ "Source NAT is a specific form of masquerading which allows fine grained " +#~ "control over the source IP used for outgoing traffic, for example to map " +#~ "multiple WAN addresses to internal subnets." +#~ msgstr "" +#~ "La sorgente NAT è una forma specifica di masquerading che consente un " +#~ "controllo preciso sull'IP sorgente usato per il traffico in uscita, per " +#~ "esempio per mappare indirizzi WAN multipli verso le subnet interne." + +#~ msgid "Start Time (hh:mm:ss)" +#~ msgstr "Ora di Inizio (hh:mm:ss)" + +#~ msgid "Stop Time (hh:mm:ss)" +#~ msgstr "Ora di Stop (hh:mm:ss)" + +#~ msgid "" +#~ "This page allows you to change advanced properties of the port forwarding " +#~ "entry. In most cases there is no need to modify those settings." +#~ msgstr "" +#~ "Questa pagina ti consente di cambiare le opzioni avanzate della voce " +#~ "porta di inoltro. Nella maggioranza dei casi non serve modificare queste " +#~ "impostazioni." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the traffic rule " +#~ "entry, such as matched source and destination hosts." +#~ msgstr "" +#~ "Questa pagina ti consente di cambiare le opzioni avanzate della voce " +#~ "regola del traffico, come la sorgente corrispondente e gli host di " +#~ "destinazione." + +#~ msgid "" +#~ "You may specify multiple by selecting \"-- custom --\" and then entering " +#~ "protocols separated by space." +#~ msgstr "" +#~ "Puoi specificare multipli selezionando \"-- custom --\" e poi inserendo i " +#~ "protocolli separati da uno spazio." + +#~ msgid "Zone %q" +#~ msgstr "Zona %q" + +#~ msgid "traffic" +#~ msgstr "traffico" diff --git a/luci-app-firewall/po/ja/firewall.po b/luci-app-firewall/po/ja/firewall.po new file mode 100644 index 000000000..7c97d27f4 --- /dev/null +++ b/luci-app-firewall/po/ja/firewall.po @@ -0,0 +1,1448 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-02-22 11:57+0000\n" +"Last-Translator: INAGAKI Hiroshi \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.11.1\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{ipv6?%{ipv4?IPv4IPv6:IPv6}:IPv4} の %{src?%{dest?転送:受信}:送信}%{proto?, プロトコル %{proto#" +"%{next?, }%{item.types?%{item.name}" +"含まれる ICMP タイプ - %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, マーク " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, ヘルパー " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "-- IP を追加 --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "-- MAC を追加 --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"%{src?%{dest?転送:受信}:送信} を 許可" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "アクセス元の書き換えを防止" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"%{dest}%{dest_ip? IP %{dest_ip}}%{dest_port? port " +"%{dest_port}} へ転送" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "%{src?%{dest?転送:受信}:送信} を 破棄" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"DSCP 区分の割り当て - %{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" +"conntrack ヘルパーの割り当て - %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"ファイアウォール マークの%{set_mark?割り当て:XOR}" +" - %{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" +"アクセス元 IP を 自動的に書き換え" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"%{src?%{dest?転送:受信}:送信} を追跡しない" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"%{src?%{dest?転送:受信}:送信} を拒否" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"アクセス元 %{snat_ip?IP %{snat_ip}} %{snat_port?ポート " +"%{snat_port}} への静的書き換え" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "書き換え先 IP の指定が必要です!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - アドレス書き換えを無効化" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "アクション" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"ゾーンの送信先へのトラフィックを区分するために付加する、生の iptables 引数です。(例: HTTPS 送信トラフィックのみにマッチさせる -p tcp --" +"dport 443)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"ゾーンを送信元とするトラフィックを区分するために付加する、生の iptables 引数です。(例: HTTPS 受信トラフィックのみにマッチさせる -p tcp --" +"sport 443)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "詳細設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "\"invalid\" トラフィックの許可" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "送信元ゾーンからの転送を許可する:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "宛先ゾーンへの転送を許可する:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "全て" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "全日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "指定された DSCP クラスまたは値を確立された接続に適用します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "指定された接続追跡ヘルパーを対象のトラフィックに割り当てます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "自動ヘルパー割り当て" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"トラフィックのプロトコルとポートに基づいて、 conntrack ヘルパーを自動的に割り" +"当てます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "Conntrack 設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "Conntrack ヘルパー" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "内容が保存されました。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "続行" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "カバーされるデバイス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "対象ネットワーク" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "カバーされるサブネット" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "手動設定ルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"手動設定ルールの設定では、ファイアウォールの設定画面ではサポートされていない" +"ような、任意のiptablesコマンドを実行することが可能です。これらの任意のコマン" +"ドは、ファイアウォール機能の起動ごとに、標準のルールが読み込まれた後に実行さ" +"れます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "DSCP 区分" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "DSCP マーク" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "DSCP マークが必要です" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "宛先アドレス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "宛先ポート" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "宛先ゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "デバイス名" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"conntrack ステートが invalid である転送されたトラフィックを拒否する" +"追加ルールをインストールしません。これは、複雑で非対称なルートのセットアップ" +"に必要となることがあります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "無効なパケットを遮断する" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "有効" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "NATループバックを有効にする" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "SYN-Floodプロテクションを有効にする" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "このゾーンのログ記録を有効にする" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "期待される値: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "実験的な機能です。 QoS/SQM との完全な互換性はありません。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "ゾーン トラフィックの接続追跡ヘルパーを明示的に選択します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "外部IPアドレス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "外部ポート" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "追加の引数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "追加の送信先引数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "追加の iptables 引数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "追加の送信元引数" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "ファイアウォール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "ファイアウォール - 手動設定ルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "ファイアウォール - NAT ルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "ファイアウォール - ポートフォワーディング" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "ファイアウォール - トラフィック・ルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "ファイアウォール - ゾーン設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "ファイアウォール設定マイグレーション" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "転送" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" +"IPv4 の転送%{proto?, プロトコル %{proto#%{next?, }%{item.name}}}%{mark?, マーク %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "金曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"送信元: %{src}%{src_device?, インターフェース %{src_device}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, ポート " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"送信元: %{src}%{src_device?, インターフェース %{src_device}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, ポート " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"送信元: %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"ポート %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#" +"%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "一般設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "ハードウェア フローオフロード" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4及びIPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "IPv4のみ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "IPv6のみ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "受信側デバイス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"IPv4 の受信%{proto?, プロトコル %{proto#%{next?, }%{item.types?%{item.name}含まれる " +"ICMP タイプ - %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, マーク " +"%{mark.val}}%{helper?, ヘルパー %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "受信" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "内部IPアドレス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "内部ポート" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "内部ゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "無効な DSCP マーク" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "無効な制限値" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "バースト制限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "ログメッセージを制限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "一致の制限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"一致するパケット数を %{limit.unit} あたり %{limit.num} " +"に制限%{limit.burst?(バースト %{limit.burst})}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "トラフィックを指定されたレートに制限します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "ループバック元 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - 自動的に送信側インターフェース IP へ書き換え" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "MSSクランプ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "マスカレード" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "対象" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "DSCP の一致" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "ICMPタイプの一致" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "デバイスの一致" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "指定された IP アドレスに転送されるトラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"指定されたポートまたはポート範囲に転送されるトラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "この IP または範囲からのトラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"指定された送信元ポートまたはポート範囲から発信されたトラフィックが対象になり" +"ます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "ヘルパーの一致" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"設定された宛先ポート(またはポート範囲)に一致した受信トラフィックが対象になり" +"ます" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "マークの一致" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "指定された接続追跡ヘルパーを使用するトラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"特定のファイアウォール マークまたは異なる複数のマークの範囲が対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"指定された送信側ネットワーク デバイスを使用して転送されるトラフィックが対象に" +"なります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "指定された DSCP マークを持っているトラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"対象となるパケットの最初の最大数です。この数は、上のレート制限で上限に到達し" +"なかった場合に、その時間毎にここで指定された数まで1ずつ回復します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "月曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "月間" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "NAT ルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"NAT ルールは、送信または転送トラフィックのために使用するアクセス元 IP に対し" +"て、とても細かな制御を可能にします。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "名前" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "設定された宛先IPアドレスと一致した受信トラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "設定されたMACアドレスと一致した受信したトラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" +"設定されたIPアドレス (または範囲) と一致した受信したトラフィックが対象になり" +"ます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"設定されたクライアントホストの送信元ポート(またはポート範囲)からの受信トラ" +"フィックと一致したトラフィックのみを対象にします。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "送信側デバイス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "送信側ゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "送信" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"iptablesにパススルーする追加の引数を設定してください。ただし、注意して設定し" +"てください!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"送信元と送信先のトラフィックの区分ルールを、インターフェースやサブネット以外" +"の基準に基づいてマッチすることができるように、生の iptables 引数を渡します。" +"これらのオプションは、無効な値がファイアウォール ルールセットの破壊を引き起こ" +"し、全サービスを外部に晒す恐れがあることに、特段の注意を払い使用されなければ" +"なりません。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "ポートフォワーディング" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"ポートフォワーディングは、インターネット上のリモートコンピュータから、プライ" +"ベートなネットワーク上の、特定のコンピュータやサービスへのアクセスを可能にし" +"ます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "プロトコル" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"ルールに一致した受信トラフィックを、内部ホストの設定されたポートへ転送します" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "ルールに一致した受信トラフィックを、設定された内部ホストへ転送します" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" +"ハードウェア NAT サポートが必要です。 mt7621 のみにおいて実装されています。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "設定された宛先サブネットへのマスカレードを制限する" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "設定された送信元サブネットへのマスカレードを制限する" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "アドレスファミリの制限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "IP アドレスの書き換え" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "対象のトラフィックを指定されたアクセス元 IP アドレスに書き換えます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"対象のトラフィックを指定されたアクセス元ポートまたはポート範囲に書き換えま" +"す。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "ポートの書き換え" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "ルーティング/NAT オフロード" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - 特定のアクセス元 IP またはポートへの書き換え" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "土曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "マークの設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"確立された接続にマーク値を設定します。フォーマットは value[/mask] です。もし" +"マスクが指定されている場合、マスクによって有効なビットのみ設定されます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "ルーティング/NAT のための、ソフトウェアベースのオフロードです。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "ソフトウェア フローオフロード" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "送信元IPアドレス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "送信元MACアドレス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "送信元アドレス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "送信元ポート" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "送信元ゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"このトラフィック ルールを関連付ける、特定の受信側または送信側ネットワークデバ" +"イスを指定します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"反映されるトラフィックに対し、外部または内部 IP アドレスのどちらを使用するか" +"を指定します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "開始日 (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "開始時刻 (hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "停止日 (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "停止時刻 (hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "日曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"既存のファイアウォール設定は、 LuCI が正常に機能するように変更する必要があり" +"ます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"ファイアウォール機能は、各ネットワークインターフェース上にゾーンを作成してト" +"ラフィックの制御を行います。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"下記の設定は、このゾーン (%s)とその他のゾーン間の転送ポリシーを制御します。" +"宛先ゾーンへの転送 は、%q から転送されたトラフィッ" +"クに対して転送を許可します。 送信元ゾーンからの転送 は、別のゾーンか" +"ら%qへ の転送を許可します。トラフィック転送設定は、一方" +"向であり、例えばlanからwanへの転送設定は、wanからlanへの転送を許可し" +"ません。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"このセクションでは、%sの標準的な動作を設定します。受信及び送信オプションは、このゾーンに対して入出力するトラフィックに対する標準のポリ" +"シーを設定し、転送オプションは、ゾーン間の転送トラフィックに対する標" +"準のポリシーになります。対象ネットワークは、どのネットワーク設定がこ" +"のゾーンに属するかを設定します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "木曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "時間制限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "UTC時刻を使用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"送信先: %{dest}%{dest_device?, インターフェース %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, ポート " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"送信先: %{dest}%{dest_device?, 経由インターフェース %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, ポート " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"送信先: %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, ポート %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "追跡ヘルパー" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "トラフィック・ルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"トラフィック・ルールの設定では、ゾーン間を行き来するパケットのポリシーを設定" +"します。例えば、特定のホスト間や、ルーターのWANポートへのトラフィックの拒否を" +"設定することができます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "火曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "内容を保存できません: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "不明またはインストールされていない conntrack ヘルパー \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "名称未設定の NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "名称未設定の転送" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "名称未設定のルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "名称未設定のゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "認識されていないプロトコル" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"\"続行\" を押下すると、 \"SNAT\" ターゲットを持つ \"redirect\" セクションは " +"\"nat\" セクションに変換されたうえで、ファイアウォールは更新された設定を適用" +"するために再起動されます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "外部 IP アドレスを使用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "内部 IP アドレスを使用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"生の、または非 uci 管理下にあるデバイスによるゾーン トラフィックの区" +"分にこのオプションを使用します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"ネットワークまたはデバイスに代わり、アクセス元またはアクセス先サブネットによ" +"るゾーン トラフィックの区分にこのオプションを使用します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "有効なファイアウォール マークが必要です" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "水曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "ファイアウォール マークの XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "マークの XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "ゾーン ⇒ 転送" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "ゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "許可" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "全て" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "全てのゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "ファイアウォール マークの適用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "conntrack ヘルパーの割り当て" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "書き換えない" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "コネクション追跡を行わない" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "破棄" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "時間" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "分" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "拒否" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "秒" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "このデバイス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "この新しいゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "無制限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "設定しない" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "有効なファイアウォール マーク" + +#~ msgid "%s in %s" +#~ msgstr "%s (%s)" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s ,%s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s (%s)" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d パケット / %s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "" +#~ "%d パケット / %s, バースト %d パケット" + +#~ msgid "%s and limit to %s" +#~ msgstr "%s, %s を上限に設定" + +#~ msgid "Accept forward" +#~ msgstr "転送を許可" + +#~ msgid "Accept input" +#~ msgstr "入力を許可" + +#~ msgid "Accept output" +#~ msgstr "出力を許可" + +#~ msgid "Discard forward" +#~ msgstr "転送を破棄" + +#~ msgid "Discard input" +#~ msgstr "入力を破棄" + +#~ msgid "Discard output" +#~ msgstr "出力を破棄" + +#~ msgid "Do not rewrite" +#~ msgstr "リライトしない" + +#~ msgid "Do not track forward" +#~ msgstr "転送を追跡しない" + +#~ msgid "Do not track input" +#~ msgstr "入力を追跡しない" + +#~ msgid "Do not track output" +#~ msgstr "出力を追跡しない" + +#~ msgid "Forward to" +#~ msgstr "転送先" + +#~ msgid "From %s in %s" +#~ msgstr "送信元 %s (%s)" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "送信元 %s (%s) , %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "送信元 %s (%s) , %s, %s" + +#~ msgid "From %s on this device" +#~ msgstr "送信元 %s (デバイス)" + +#~ msgid "From %s on this device with source %s" +#~ msgstr "送信元 %s, %s (デバイス)" + +#~ msgid "From %s on this device with source %s and %s" +#~ msgstr "送信元 %s, %s, %s (デバイス)" + +#~ msgid "IP" +#~ msgstr "IP" + +#~ msgid "IP range" +#~ msgstr "IP の範囲" + +#~ msgid "IPs" +#~ msgstr "IP" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "MACs" +#~ msgstr "MAC" + +#~ msgid "Network" +#~ msgstr "ネットワーク" + +#~ msgid "Refuse forward" +#~ msgstr "転送を拒否" + +#~ msgid "Refuse input" +#~ msgstr "入力を拒否" + +#~ msgid "Refuse output" +#~ msgstr "出力を拒否" + +#~ msgid "To %s at %s on this device" +#~ msgstr "宛先 %s, %s (デバイス)" + +#~ msgid "To %s in %s" +#~ msgstr "宛先 %s (%s)" + +#~ msgid "To %s on this device" +#~ msgstr "宛先 %s (デバイス)" + +#~ msgid "To %s, %s in %s" +#~ msgstr "宛先 %s, %s (%s)" + +#~ msgid "Via %s" +#~ msgstr "経由 %s" + +#~ msgid "Via %s at %s" +#~ msgstr "経由 %s , %s" + +#~ msgid "any host" +#~ msgstr "全てのホスト" + +#~ msgid "any router IP" +#~ msgstr "全てのルーターIP" + +#~ msgid "port" +#~ msgstr "ポート" + +#~ msgid "ports" +#~ msgstr "ポート" + +#~ msgid "type" +#~ msgstr "タイプ" + +#~ msgid "types" +#~ msgstr "タイプ" + +#~ msgid "Force connection tracking" +#~ msgstr "強制的にコネクション追跡を行う" + +#~ msgid "" +#~ "Prevent the installation of NOTRACK rules which would bypass " +#~ "connection tracking." +#~ msgstr "" +#~ "コネクション追跡をバイパスさせる NOTRACK ルールのインストールを防" +#~ "ぎます。" + +#~ msgid "Disable" +#~ msgstr "無効" + +#~ msgid "Restart Firewall" +#~ msgstr "ファイアウォールの再起動" + +#~ msgid "Rule is disabled" +#~ msgstr "ルールは無効です" + +#~ msgid "Rule is enabled" +#~ msgstr "ルールは有効です" + +#~ msgid "Add" +#~ msgstr "追加" + +#~ msgid "Add and edit..." +#~ msgstr "追加及び編集..." + +#~ msgid "External zone" +#~ msgstr "外部ゾーン" + +#~ msgid "New SNAT rule" +#~ msgstr "SNATルールの新規作成" + +#~ msgid "New forward rule" +#~ msgstr "転送ルールの新規作成" + +#~ msgid "New input rule" +#~ msgstr "受信ルールの新規作成" + +#~ msgid "New port forward" +#~ msgstr "転送設定の新規作成" + +#~ msgid "New source NAT" +#~ msgstr "SNATルールの新規作成" + +#~ msgid "Open ports on router" +#~ msgstr "ポートの開放" + +#~ msgid "Other..." +#~ msgstr "その他のプロトコル" + +#~ msgid "To source IP" +#~ msgstr "変換後送信元IP" + +#~ msgid "To source port" +#~ msgstr "変換後送信元ポート" diff --git a/luci-app-firewall/po/ko/firewall.po b/luci-app-firewall/po/ko/firewall.po new file mode 100644 index 000000000..02c610889 --- /dev/null +++ b/luci-app-firewall/po/ko/firewall.po @@ -0,0 +1,1183 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-01-14 15:22+0000\n" +"Last-Translator: Franco Castillo \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Source zone 로부터의 forward 허용:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Destination zone 으로 forward 허용:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Custom Rule" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Custom rule 은 방화벽 UI 로 해결이 되지 않는 임의의 iptables 명령을 실행할 " +"수 있도록 합니다. 입력된 명령어들은 매 방화벽 재시작시 실행되는데 default " +"ruleset 이 load 된 후 시점입니다." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Destination 주소" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "활성화" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "NAT Loopback 활성화" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "SYN-flood protection 활성화" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "zone 의 logging 활성화" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "외부 IP 주소" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "외부 port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "추가 argument" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "방화벽" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "방화벽 - Custom Rules" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "방화벽 - Port Forwards" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "방화벽 - Traffic Rules" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "방화벽 - Zone 설정" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "금요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "내부 IP 주소" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "내부 port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "내부 zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "월요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "이름" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "iptables 명령에 추가 인자들을 더합니다. 조심해 사용하세요!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Port Forward" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Port forwarding 기능은 인터넷 상의 원격 컴퓨터가 내부 LAN 에 속한 특정 컴퓨터" +"나 서비스에 접속할 수 있도록 합니다." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "주어진 destination subnet 으로 Masquerading 제한" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "주어진 source subnet 으로 Masquerading 제한" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Address family 제한" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "토요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Source IP 주소" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "Source MAC 주소" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Source 주소" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "시작 날짜 (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "종료 날짜 (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "일요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"방화벽 기능을 이용하여 네트워크 인터페이스와 연결된 zone 을 생성할 수 있고 이" +"를 이용하여 네트워크 traffic flow 를 제어할 수 있습니다." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"이 zone (%s) 과 다른 zone 들 사이의 forwarding 정책을 제어하는 옵션들입니다. " +"Destination zones%q 에서 출발한 forward " +"traffic 을 뜻하고, Source zones 은 다른 zone 들에서 %q 로 전" +"달되는 forward traffic 을 뜻합니다. Forwarding rule 은 " +"unidirectional 인데, 예를 들어 LAN 에서 WAN 으로의 forward 규칙이 " +"WAN 에서 LAN 으로의 forward 를 허락하는 것이 아닙니다." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#, fuzzy +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"이 섹션은 %q 의 공통 속성을 설정할 수 있습니다. input 과 " +"output 옵션은 이 zone 으로 전달되어 들오거나 나가는 트래픽에 대한 기" +"본 정책을 뜻합니다. forward 옵션은 zone 내에서 다른 네트워크들 사이" +"를 오가는 forward traffic 에 대한 정책을 뜻합니다. Covered networks " +"에서는 zone 의 영향을 받을 네트워크들을 지정할 수 있습니다." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "목요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "UTC 기준시" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Traffic Rule" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"Traffic rule 은 서로 다른 zone 사이를 오가는 패킷들에 대한 정책을 정의합니" +"다. 예를 들어 특정 host 들 사이의 트래픽을 차단하거나 공유기의 WAN port 를 " +"open 할때 사용됩니다." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "화요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "수요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "주일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zone 내역" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s ,%s" + +#~ msgid "Destination IP address" +#~ msgstr "Destination IP 주소" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "Add and edit..." +#~ msgstr "추가 후 수정..." + +#~ msgid "External zone" +#~ msgstr "외부 zone" + +#~ msgid "New SNAT rule" +#~ msgstr "새로운 SNAT rule" + +#~ msgid "New forward rule" +#~ msgstr "새로운 forward rule" + +#~ msgid "New input rule" +#~ msgstr "새로운 input rule" + +#~ msgid "New port forward" +#~ msgstr "새로운 port forward" + +#~ msgid "New source NAT" +#~ msgstr "새로운 source NAT" + +#~ msgid "" +#~ "Source NAT is a specific form of masquerading which allows fine grained " +#~ "control over the source IP used for outgoing traffic, for example to map " +#~ "multiple WAN addresses to internal subnets." +#~ msgstr "" +#~ "Source NAT 기능은 masquerading 의 한 형태로써 outgoing 트래픽이 사용할 " +#~ "source IP 를 세밀하게 제어할 수 있습니다. 예를 들어 다수의 WAN 주소들을 " +#~ "내부 subnet 에 매핑(mapping) 할 경우 사용됩니다." + +#~ msgid "Start Time (hh:mm:ss)" +#~ msgstr "시작 시간 (hh:mm:ss)" + +#~ msgid "Stop Time (hh:mm:ss)" +#~ msgstr "종료 시간 (hh:mm:ss)" + +#~ msgid "" +#~ "This page allows you to change advanced properties of the port forwarding " +#~ "entry. In most cases there is no need to modify those settings." +#~ msgstr "" +#~ "이 메뉴에서는 port forwarding 의 고급 설정 정보를 변경할 수 있습니다. 대부" +#~ "분의 경우 이 설정을 수정할 일이 없습니다." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the traffic rule " +#~ "entry, such as matched source and destination hosts." +#~ msgstr "" +#~ "이 메뉴에서는 traffic rule 항목의 고급 설정, 예를 들어 source host 와 " +#~ "destination host 매칭, 을 변경할 수 있습니다." diff --git a/luci-app-firewall/po/mr/firewall.po b/luci-app-firewall/po/mr/firewall.po new file mode 100644 index 000000000..ae3c81857 --- /dev/null +++ b/luci-app-firewall/po/mr/firewall.po @@ -0,0 +1,1139 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-02-07 09:18+0000\n" +"Last-Translator: Prachi Joshi \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "प्रगत सेटिंग्ज" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "गंतव्य पोर्ट" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "सक्षम करा" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "सामान्य सेटिंग्ज" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 आणि IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "केवळ IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "केवळ IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "चिन्ह जुळवा" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "नाव" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "प्रोटोकॉल" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# +# msgid "Traffic Redirection" +# msgstr "" +# +# msgid "" +# "Traffic redirection allows you to change the destination address of " +# "forwarded packets." +# msgstr "" +# +# msgid "Overview" +# msgstr "" +# +# msgid "Name" +# msgstr "" +# +# msgid "Source zone" +# msgstr "" +# +# msgid "Source MAC-address" +# msgstr "" +# +# msgid "Source port" +# msgstr "" +# +# msgid "Protocol" +# msgstr "" +# +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "स्रोत पोर्ट" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "MAC" +#~ msgstr "MAC" diff --git a/luci-app-firewall/po/ms/firewall.po b/luci-app-firewall/po/ms/firewall.po new file mode 100644 index 000000000..dfc6fad65 --- /dev/null +++ b/luci-app-firewall/po/ms/firewall.po @@ -0,0 +1,1103 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2020-01-14 15:22+0000\n" +"Last-Translator: Franco Castillo \n" +"Language-Team: Malay \n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Tindakan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "MAC" +#~ msgstr "MAC" diff --git a/luci-app-firewall/po/nb_NO/firewall.po b/luci-app-firewall/po/nb_NO/firewall.po new file mode 100644 index 000000000..cc73c222e --- /dev/null +++ b/luci-app-firewall/po/nb_NO/firewall.po @@ -0,0 +1,1316 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-01-14 15:22+0000\n" +"Last-Translator: Franco Castillo \n" +"Language-Team: Norwegian Bokmål \n" +"Language: no\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Handling" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Avanserte Innstillinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Tillat videresending fra kilde soner:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Tillat videresending til destinasjon soner:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Enhver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Gjeldene nettverk" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Egendefinerte Regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Egendefinerte regler tillater deg å utføre vilkårlige iptables kommandoer " +"som ikke dekkes av brannmurens standardoppsett. Kommandoene utføres etter " +"hver omstart av brannmuren, rett etter at standard regelsett er lastet." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Destinasjon adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Destinasjon port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Destinasjon sone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Forkast ugyldige pakker" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Aktiver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "Aktiver NAT Tilbakekobling" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Aktiver SYN-flood beskyttelse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Aktiver logging av denne sonen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Ekstern IP adressse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Ekstern port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Ekstra argumenter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Brannmur" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Brannmur - Egendefinerte Regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Brannmur - Port Videresending" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Brannmur - Trafikk Regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Brannmur - Sone Innstillinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Videresend" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Generelle Innstillinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 og IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "Kun IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "Kun IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Inndata" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Intern IP adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Intern port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Intern sone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Begrens logging" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "MSS Kontroll (Clamping)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Masquerading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Match" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Match ICMP type" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Match innkommende trafikk rettet mot den oppgitte destinasjonsport eller " +"portområdet på denne verten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Navn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Match kun innkommende trafikk rettet mot den oppgitt IP adresse." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "Match kun innkommende trafikk fra disse MAC adresser." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "Match kun innkommende trafikk fra denne IP eller IP område." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Match kun innkommende trafikk som kommer fra den oppgitte kildeport eller " +"fra portområdet til klienten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Utdata" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Sender flere argumenter til iptables. Bruk med forsiktighet!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Port Videresendinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Port videresending tillater at eksterne datamaskiner på Internett kan koble " +"seg til en bestemt maskin eller tjeneste innenfor det private LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protokoll" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Viderekoble matchet innkommende trafikk til den oppgitte porten på intern " +"vert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Viderekoble matchet innkommende trafikk til den angitte interne vert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Begrens Masquerading til oppgitt destinasjons subnett" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "Begrens Masqeuerading til oppgitt kilde subnett" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Begrens til adresse familie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Kilde IP adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "Kilde MAC adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Kilde adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Kilde port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Kilde sone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Brannmuren skaper soner over nettverkets grensesnitt for å styre " +"nettverkstrafikken." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Med valgene under konfigurerer man videresending mellom denne sone (%s) og " +"andre soner. Destinasjons soner omhandler videresendt trafikk " +"med opprinnelse fra %q. Kilde soner matcher " +"videresendt trafikk fra andre soner rettet mot %q. Reglene " +"ved videresending er enveis, d.v.s at videresending fra LAN til WAN " +"ikke automatisk også tillater videresending fra WAN til LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#, fuzzy +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Denne seksjonen definerer de vanligste valg for %q. Med Inndata og " +"Utdata fastsetter man vanlige regler for trafikk gjennom sonen, " +"mens videresend valget definerer regler for videresendt trafikk " +"mellom forskjellige nettverk i sonen. Gjeldene nettverk " +"spesifiserer hvilken av de tilgjengelige nettverk som er medlem av denne " +"sone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Trafikk Regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"Trafikk regler definerer regler for sending av pakker mellom ulike soner, " +"for eksempel for å avvise trafikk mellom visse verter eller for å åpne WAN " +"porter på ruteren." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "Sone = Videresendinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Soner" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "godta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "enhver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "enhver sone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "ikke track" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "forkast" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "avslå" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "%s in %s" +#~ msgstr "%s i %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s med %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s i %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d pakker per %s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "%d pakker per %s, burst %dpakker." + +#~ msgid "%s and limit to %s" +#~ msgstr "%s og begrens til %s" + +#~ msgid "Destination IP address" +#~ msgstr "Destinasjon IP adresse" + +#~ msgid "Do not rewrite" +#~ msgstr "Ikke omskriv" + +#~ msgid "Forward to" +#~ msgstr "Videresend til" + +#~ msgid "From %s in %s" +#~ msgstr "Fra %s i %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "Fra %s i %s med kilde %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "Fra %s i %s med kilde %s og %s" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "To %s at %s on this device" +#~ msgstr "Til %s på %s på denne enheten" + +#~ msgid "To %s in %s" +#~ msgstr "Til %s i %s" + +#~ msgid "To %s on this device" +#~ msgstr "Til %s på denne enheten" + +#~ msgid "To %s, %s in %s" +#~ msgstr "Til %s, %s i %s" + +#~ msgid "Via %s" +#~ msgstr "Via %s" + +#~ msgid "Via %s at %s" +#~ msgstr "Via %s på %s" + +#~ msgid "any host" +#~ msgstr "enhver vert" + +#~ msgid "any router IP" +#~ msgstr "enhver ruter IP" + +#~ msgid "Force connection tracking" +#~ msgstr "" +#~ "Bruk forbindelse sporing" + +#~ msgid "Add" +#~ msgstr "Legg til" + +#~ msgid "Add and edit..." +#~ msgstr "Legg til og redigere..." + +#~ msgid "External zone" +#~ msgstr "Ekstern sone" + +#~ msgid "New SNAT rule" +#~ msgstr "Ny SNAT regel" + +#~ msgid "New forward rule" +#~ msgstr "Ny videresending regel" + +#~ msgid "New input rule" +#~ msgstr "Ny inndata regel" + +#~ msgid "New port forward" +#~ msgstr "Ny port videresending" + +#~ msgid "New source NAT" +#~ msgstr "Ny kilde NAT" + +#~ msgid "Open ports on router" +#~ msgstr "Åpne porter på ruteren" + +#~ msgid "Other..." +#~ msgstr "Andre..." + +#~ msgid "To source IP" +#~ msgstr "Til kilde IP" + +#~ msgid "To source port" +#~ msgstr "Til kilde port" + +#~ msgid "(Unnamed Entry)" +#~ msgstr "(oppføring uten navn)" + +#~ msgid "(Unnamed Rule)" +#~ msgstr "(regel uten navn)" + +#~ msgid "(Unnamed SNAT)" +#~ msgstr "(SNAT uten navn)" + +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "Sone til Sone Videresending" + +#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgstr "" +#~ "Match videresendt trafikk til den oppgitte destinasjonsport eller " +#~ "portområdet." + +#~ msgid "" +#~ "Match incoming traffic originating from the given source port or port " +#~ "range on the client host." +#~ msgstr "" +#~ "Match innkommende trafikk som kommer fra den oppgitte kildeport eller " +#~ "portområdet på klienten." + +#~ msgid "Rewrite matched traffic to the given address." +#~ msgstr "Omskriv matchet trafikk til den oppgitte adressen." + +#~ msgid "" +#~ "Rewrite matched traffic to the given source port. May be left empty to " +#~ "only rewrite the IP address." +#~ msgstr "" +#~ "Omskriv matchet trafikk til den oppgitte kildeport. Kan stå tom for kun " +#~ "omskriving av IP adressen." + +#~ msgid "Rewrite to source %s" +#~ msgstr "Omskriv til kilde %s" + +#~ msgid "Rewrite to source %s, %s" +#~ msgstr "Omskriv til kilde %s, %s" + +#~ msgid "SNAT IP address" +#~ msgstr "SNAT IP adresse" + +#~ msgid "SNAT port" +#~ msgstr "SNAT port" + +#~ msgid "Source NAT" +#~ msgstr "Kilde NAT" + +#~ msgid "" +#~ "Source NAT is a specific form of masquerading which allows fine grained " +#~ "control over the source IP used for outgoing traffic, for example to map " +#~ "multiple WAN addresses to internal subnets." +#~ msgstr "" +#~ "Kilde NAT er en spesifikk form for masquerading som tillater finkornet " +#~ "kontroll over kilde IP adressen som brukes for utgående trafikk, for " +#~ "eksempel for å mappe flere WAN adresser til interne subnett." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the port forwarding " +#~ "entry. In most cases there is no need to modify those settings." +#~ msgstr "" +#~ "Denne siden lar deg endre avanserte egenskaper til port videresending " +#~ "oppføringer. I de fleste tilfeller er det ikke nødvendig å endre disse " +#~ "innstillingene." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the traffic rule " +#~ "entry, such as matched source and destination hosts." +#~ msgstr "" +#~ "Denne siden lar deg endre de avanserte egenskapene til trafikken regel " +#~ "oppføringer, som for eksempel matchet kilde og destinasjons vert." + +#~ msgid "" +#~ "You may specify multiple by selecting \"-- custom --\" and then entering " +#~ "protocols separated by space." +#~ msgstr "" +#~ "Du kan spesifisere flere ved å velge \"-- egendefinert --\" og deretter " +#~ "skrive flere protokoller atskilt med mellomrom." + +#~ msgid "Zone %q" +#~ msgstr "Sone %q" diff --git a/luci-app-firewall/po/pl/firewall.po b/luci-app-firewall/po/pl/firewall.po new file mode 100644 index 000000000..538e8713f --- /dev/null +++ b/luci-app-firewall/po/pl/firewall.po @@ -0,0 +1,1559 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-01-26 21:49+0000\n" +"Last-Translator: Marcin Net \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 i " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP z odmianami %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "-- dodaj IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "-- dodaj MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Akceptuj %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "Zapobieganie przepisywaniu źródła" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Przekazuj do %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Porzuć %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Przydziel DSCP klasyfikacja %{set_dscp}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" +"Przydziel conntrack pomoc %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} znacznik zapory " +"sieciowej %{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" +"Automatycznie przepisz źródłowy adres " +"IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Nie śledź %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Odrzucaj %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Statystycznie przepisz do źródła %{snat_ip?" +"IP %{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "Należy podać adres IP do ponownego zapisu!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "AKCEPTUJ - Wyłącz przepisywanie adresów" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Akcja" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Dodatkowe surowe iptables argumenty do klasyfikacji ruchu w strefie " +"docelowej, np. -p tcp --dport 443 tylko w celu dopasowania " +"ruchu wychodzącego HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Dodatkowe surowe iptables argumenty do klasyfikacji ruchu w strefie " +"docelowej, np. -p tcp --sport 443 tylko w celu dopasowania " +"ruchu przychodzącego HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Ustawienia zaawansowane" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "Zezwól na \"nieprawidłowy\" ruch" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Zezwól na przekazywanie z strefy źródłowej:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Zezwól na przekazywanie do strefy docelowej:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Każdy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "Każdy dzień" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Zastosuj bitowy XOR podanej wartości i istniejącej wartości znacznika na " +"ustanowionych połączeniach. Format to wartość [/mask]. Jeśli maska jest " +"określona, wówczas ustawione w niej bity są zerowane." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Zastosuj daną klasę lub wartość DSCP do ustanowionych połączeń." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Przypisz określonego pomocnika śledzenia połączeń do dopasowanego ruchu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "Automatyczne przydzielanie pomocy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Automatycznie przydzielaj pomocników conntrack'a na podstawie protokołu " +"ruchu i portu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "Ustawienia conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "Pomocnicy conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "Zawartość została zapisana." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "Kontynuuj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "Objęte urządzenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Objęte sieci" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "Objęte podsieci" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Własne reguły" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Własne reguły pozwalają na arbitralne wykonanie poleceń iptables, które nie " +"są objęte składnią zapory. Polecenia wykonywane są po każdym restarcie " +"zapory, zaraz po załadowaniu zestawu reguł domyślnych." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "Klasyfikacja DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "Znacznik DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "Wymagany znacznik DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Adres docelowy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Port docelowy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Strefa docelowa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "Nazwa urządzenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Nie instaluj dodatkowych reguł odrzucania ruchu przekazywanego z conntrack " +"state invalid. Może to być wymagane w przypadku skomplikowanych " +"asymetrycznych ustawień trasy." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Porzuć wadliwe pakiety" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Włącz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "Włącz NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Włącz ochronę SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Włącz logowanie tej strefy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "Zaleca się użyć: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "Funkcja eksperymentalna. Nie w pełni kompatybilna z QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Dokładnie wybiera dozwolone pomoce śledzenia połączeń dla ruchu strefowego" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Zewnętrzne adresy IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Port zewnętrzny" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Dodatkowe argumenty" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "Dodatkowe argumenty przeznaczenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "Dodatkowe argumenty tablicy IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "Dodatkowe argumenty zródłowe" + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Zapora sieciowa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Zapora sieciowa - Własne reguły" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "Zapora sieciowa - Zasady NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Zapora sieciowa - Przekazywane porty" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Zapora sieciowa - Reguły ruchu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Zapora sieciowa - Ustawienia strefy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "Migracja konfiguracji zapory sieciowej" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Przekazuj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" +"Przekazywanie IPv4 %{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "Piątek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Z %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Z %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Z %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Ustawienia główne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "Sprzętowy flow offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 i IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "Tylko IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "Tylko IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "Urządzenie przychodzące" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Przychodzące IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Ruch przychodzący" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Wewnętrzny adres IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Port wewnętrzny" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Strefa wewnętrzna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "Nieprawidłowy znacznik DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "Nieprawidłowa wartość graniczna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "Naruszenie limitu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Ograniczenie logowania" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "Dopasowanie limitu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Dopasowanie limitu do %{limit.num} pakiety na %{limit.unit}%{limit.burst? burst %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "Ogranicza ruch zgodny z określoną stawką." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "Źródło pętli zwrotnej IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Automatyczne przepisywanie na interfejs wyjściowy IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "Dostosuj MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Maskarada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Dopasuj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "Dopasuj DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Dopasuj typ ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "Dopasuj urządzenie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Dopasuj przesyłany ruch skierowany na podany adres IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Dopasuj przesyłany ruch skierowany na dany port docelowy lub zakres portów." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "Dopasuj przesyłany ruch z tego adresu IP lub zakresu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Dopasuj przesyłany ruch pochodzący z danego portu źródłowego lub zakresu " +"portów." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "Dopasuj pomocnika" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Dopasuj ruch przychodzący do danego portu docelowego lub zakresu portów na " +"tym hoście" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "Znacznik dopasowania" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Dopasuj ruch, używając określonego pomocnika śledzenia połączeń." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "Odpowiada konkretnemu znakowi zapory lub zakresowi różnych znaków." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Dopasowuje przesyłany ruch przy użyciu określonego wychodzącego urządzenia " +"sieciowego." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Dopasowuje ruch niosący określone oznaczenie DSCP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Maksymalna początkowa liczba pakietów do dopasowania: ta liczba jest " +"ładowana jednorazowo za każdym razem, gdy limit określony powyżej nie " +"zostanie osiągnięty, aż do tej liczby." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "Poniedziałek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "Dni miesiąca" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "Zasady NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Reguły NAT umożliwiają precyzyjną kontrolę źródłowego adresu IP w celu " +"użycia ruchu wychodzącego lub przekazywanego." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Nazwa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Dopasuj tylko przychodzący ruch skierowany do danego adresu IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "Dopasuj tylko ruch z tych adresów MAC." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "Dopasuj tylko ruch przychodzący z tego adresu IP lub zakresu adresów." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Dopasuj tylko ruch przychodzący z podanego portu źródłowego lub zakresu " +"portów na hoście klienta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "Urządzenie wychodzące" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "Strefa wychodząca" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Ruch wychodzący" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"Przekazuje dodatkowe argumenty do iptables. Zachowaj szczególną ostrożność!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Przekazywanie surowych argumentów iptables do reguł klasyfikacji ruchu " +"źródłowego i docelowego pozwala na dopasowanie pakietów w oparciu o inne " +"kryteria niż interfejsy lub podsieci. Opcje te powinny być używane ze " +"szczególną ostrożnością, ponieważ nieprawidłowe wartości mogą spowodować " +"złamanie zestawu reguł zapory sieciowej, całkowicie odsłaniając wszystkie " +"usługi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Przekazywanie portów" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Przekazanie portów pozwala komputerom z internetu na połączenia z " +"komputerami z sieci LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protokół" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Przekieruj ruch przychodzący na podany port do wskazanego hosta w sieci " +"wewnętrznej" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Przekieruj ruch przychodzący do wskazanego hosta w sieci wewnętrznej" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "Wymaga sprzętowej obsługi NAT. Wdrożono dla co najmniej mt7621" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Ogranicz maskaradę do wskazanych podsieci docelowych" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "Ogranicz maskaradę do wskazanych podsieci źródłowych" + +# Wstawiłem rodzinę gdyż gdzieś wcześniej było tak opisane ale klasa pasuje mi tu bardziej. +# Obsy - niestety ale "rodzina". W gui dotyczy to wyboru IPv4/IPv6, więc "rodzina" a nie klasa. +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Ogranicz do rodziny adresów" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "Przepisz adres IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Przepisz dopasowany ruch do określonego źródłowego adresu IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Przepisz dopasowany ruch do określonego portu źródłowego lub zakresu portów." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "Przepisz port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "Trasowanie/NAT Offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Przepisz do określonego źródłowego adresu IP lub portu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "Sobota" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "Ustaw znacznik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Ustaw podaną wartość znaku na ustanowionych połączeniach. Format to wartość " +"[/mask]. Jeśli maska jest określona, modyfikowane są tylko te bity ustawione " +"w masce." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "Oprogramowanie oparte na offloading dla trasowania/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "Programowy flow offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Źródłowy adres IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "Źródłowy adres MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Adres źródłowy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Port źródłowy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Strefa źródłowa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Określa, czy powiązać tę regułę ruchu z określonym przychodzącym, czy " +"wychodzącym urządzeniem sieciowym." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Określa, czy użyć zewnętrznego czy wewnętrznego adresu IP do odbijanego " +"ruchu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Data rozpoczęcia (rrrr-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "Czas rozpoczęcia (hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Data zakończenia (yyyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "Czas zatrzymania (yyyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "Niedziela" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Istniejąca konfiguracja zapory sieciowej musi zostać zmieniona, aby LuCI " +"mógł działać prawidłowo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Zapora tworzy strefy z twoich interfejsów sieciowych, aby kontrolować ruch " +"sieciowy." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Opcje poniżej kontrolują politykę przekazywania pomiędzy tą strefą (%s) a " +"innymi strefami. Strefy docelowe obejmują przekazywany ruch " +"pochodzący z %q. Strefy źródłowe match forwarded " +"traffic from other zones skierowane do %q. Reguła " +"przekazywania jest jednokierunkowa, np. przekazywanie z sieci LAN " +"do WAN nie implikuje pozwolenia na przekazywanie z sieci WAN do LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Ta sekcja definiuje ustawienia ogólne %q. Opcje wejście i " +"wyjście określające domyślną politykę dla ruchu przychodzącego i " +"wychodzącego w tej strefie, podczas gdy przekazywanie opisuje " +"politykę ruchu przekazywanego pomiędzy różnymi sieciami wewnątrz strefy. " +"Objęte sieci określają dostępne sieci będące członkami tej strefy." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "Czwartek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "Ograniczenia czasowe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "Czas w UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Do %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Do %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Do %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "Pomocnik śledzenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Reguły ruchu sieciowego" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"Reguły ruchu sieciowego definiują politykę dla pakietów przechodzących " +"między strefami, na przykład aby odrzucać ruch między konkretnymi hostami " +"albo otworzyć porty WAN routera." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "Wtorek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "Nie można zapisać zawartości: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Nieznany lub nie zainstalowany pomocnik conntrack \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "Nienazwany NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "Przekazywanie bez nazwy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "Nieznana zasada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "Strefa bez nazwy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "Nierozpoznany protokół" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Po naciśnięciu przycisku „Kontynuuj” sekcje przekierowujące z docelowym " +"\"SNAT\" zostaną przekonwertowane na sekcje \"nat\", a zapora sieciowa " +"zostanie ponownie uruchomiona w celu zastosowania zaktualizowanej " +"konfiguracji." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "Użyj zewnętrznego adresu IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "Użyj wewnętrznego adresu IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Opcja ta służy do klasyfikacji ruchu strefowego według surowych, nie-" +"uci obsługiwanych urządzeń sieciowych." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Opcji tej należy używać do klasyfikacji ruchu strefowego według źródła lub " +"podsieci docelowej zamiast sieci lub urządzeń." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "Wymagany prawidłowy znacznik zapory sieciowej" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "Środa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "Dni tygodnia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "Znacznik zapory XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "Znacznik XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "Strefa ⇒ Przekazywanie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Strefy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "akceptuj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "dowolny" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "dowolna strefa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "Zastosuj znacznik zapory" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "przypisz pomocnika conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "Dzień" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "Nie przepisuj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "nie śledź" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "porzuć" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "godzina" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "minuta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "odrzucaj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "sekunda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "to urządzenie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "ta nowa strefa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "nielimitowane" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "nieokreślone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "prawidłowy znacznik zapory sieciowej" + +#~ msgid "%s in %s" +#~ msgstr "%s w %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s z %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s w %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d pakietów na %s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "" +#~ "%d pakietów na %s, popsutych %d pakietów." + +#~ msgid "%s and limit to %s" +#~ msgstr "%s i limit do %s" + +#~ msgid "Accept forward" +#~ msgstr "Zaakceptuj przekazywanie" + +#~ msgid "Accept input" +#~ msgstr "Zaakceptuj wejście" + +#~ msgid "Accept output" +#~ msgstr "Zaakceptuj wyjście" + +#~ msgid "Destination IP address" +#~ msgstr "Docelowy adres IP" + +#~ msgid "Discard forward" +#~ msgstr "Odrzuć przekazywanie" + +#~ msgid "Discard input" +#~ msgstr "Odrzuć wejście" + +#~ msgid "Discard output" +#~ msgstr "Odrzuć wyjście" + +#~ msgid "Do not rewrite" +#~ msgstr "Nie przepisuj" + +#~ msgid "Do not track forward" +#~ msgstr "Nie śledź przekazywania" + +#~ msgid "Do not track input" +#~ msgstr "Nie śledź wejścia" + +#~ msgid "Do not track output" +#~ msgstr "Nie śledź wyjścia" + +#~ msgid "Forward to" +#~ msgstr "Przekazuj do" + +#~ msgid "From %s in %s" +#~ msgstr "Z %s w %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "Z %s w %s ze źródłem %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "Z %s w %s ze źródłem %s i %s" + +#~ msgid "From %s on this device" +#~ msgstr "Z %s na to urządzenie" + +#~ msgid "From %s on this device with source %s" +#~ msgstr "Z %s na to urządzenie ze źródłem %s" + +#~ msgid "From %s on this device with source %s and %s" +#~ msgstr "Z %s na to urządzenie ze źródłem %s oraz %s" + +#~ msgid "From %{ipaddr?:any host} %{port?with source %{port}}" +#~ msgstr "Z %{ipaddr?:any host} %{port?with source %{port}}" + +#~ msgid "IP" +#~ msgstr "IP" + +#~ msgid "IP range" +#~ msgstr "Zakres IP" + +#~ msgid "IPs" +#~ msgstr "IPs" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "MACs" +#~ msgstr "MACs" + +#~ msgid "" +#~ "Match %{protocol?%{family} %{protocol} traffic:any %{family} traffic} " +#~ "%{mark?with firewall mark %{mark}} %{limit?limited to %{limit}}" +#~ msgstr "" +#~ "Dopasuj %{protocol?%{family} %{protocol} traffic:any %{family} traffic} " +#~ "%{mark?with firewall mark %{mark}} %{limit?limited to %{limit}}" + +#~ msgid "Network" +#~ msgstr "Sieć" + +#~ msgid "Refuse forward" +#~ msgstr "Odmowa przekazania" + +#~ msgid "Refuse input" +#~ msgstr "Odmowa wejścia" + +#~ msgid "Refuse output" +#~ msgstr "Odmowa wyjścia" + +#~ msgid "Rewrite to" +#~ msgstr "Przepisz do" + +#~ msgid "Rewrite to %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" +#~ msgstr "Przepisz do %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" + +#~ msgid "Rewrite to outbound device IP" +#~ msgstr "Przepisz do adresu IP urządzenia wychodzącego" + +#~ msgid "To %s at %s on this device" +#~ msgstr "Do %s w %s na tym urządzeniu" + +#~ msgid "To %s in %s" +#~ msgstr "Do %s w %s" + +#~ msgid "To %s on this device" +#~ msgstr "Do %s na tym urządzeniu" + +#~ msgid "To %s, %s in %s" +#~ msgstr "Do %s, %s w %s" + +#~ msgid "" +#~ "To %{ipaddr?:any destination} %{port?at %{port}} %{zone?via zone %{zone}} " +#~ "%{device?egress device %{device}}" +#~ msgstr "" +#~ "Do %{ipaddr?:any destination} %{port?at %{port}} %{zone?via zone %{zone}} " +#~ "%{device?egress device %{device}}" + +#~ msgid "Via %s" +#~ msgstr "Przez %s" + +#~ msgid "Via %s at %s" +#~ msgstr "Przez %s w %s" + +#~ msgid "any host" +#~ msgstr "dowolny host" + +#~ msgid "any router IP" +#~ msgstr "dowolne IP routera" + +#~ msgid "not" +#~ msgstr "Nie" + +#~ msgid "port" +#~ msgstr "port" + +#~ msgid "ports" +#~ msgstr "porty" + +#~ msgid "type" +#~ msgstr "typ" + +#~ msgid "types" +#~ msgstr "typy" + +#~ msgid "Force connection tracking" +#~ msgstr "Wymuś śledzenie połączeń" + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#~ msgid "Add and edit..." +#~ msgstr "Dodaj i edytuj..." + +#~ msgid "External zone" +#~ msgstr "Strefa zewnętrzna" + +#~ msgid "New SNAT rule" +#~ msgstr "Nowa reguła SNAT" + +#~ msgid "New forward rule" +#~ msgstr "Nowa reguła przekazywania (forward)" + +#~ msgid "New input rule" +#~ msgstr "Nowa reguła wejściowa (input)" + +#~ msgid "New port forward" +#~ msgstr "Nowe przekierowanie portu" + +#~ msgid "New source NAT" +#~ msgstr "Nowy NAT źródłowy" + +#~ msgid "Open ports on router" +#~ msgstr "Otwarte porty na routerze" + +#~ msgid "Other..." +#~ msgstr "Inne..." + +#~ msgid "To source IP" +#~ msgstr "Do źródłowego IP" + +#~ msgid "To source port" +#~ msgstr "Do źródłowego portu" + +#~ msgid "(Unnamed Entry)" +#~ msgstr "(Nienazwany wpis)" + +#~ msgid "(Unnamed Rule)" +#~ msgstr "(Nienazwana reguła)" + +#~ msgid "(Unnamed SNAT)" +#~ msgstr "(Nienazwany SNAT)" + +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "Przekazywanie pomiędzy strefami" + +#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgstr "" +#~ "Dopasuj przekazywany ruch do danego docelowego portu lub zakresu portów" + +#~ msgid "" +#~ "Match incoming traffic originating from the given source port or port " +#~ "range on the client host." +#~ msgstr "" +#~ "Dopasuj przychodzący ruch pochodzący z danego portu źródłowego lub " +#~ "zakresu portów na hoście klienta." + +# Dosłownie przetłumaczone, nie bardzo wiem czy chodzi o czynność przepisywania pakietu przez usługę czy to jakieś ogólne sformułowanie... +#~ msgid "Rewrite matched traffic to the given address." +#~ msgstr "Przepisz dopasowany ruch do wskazanych adresów." + +# Jak wyżej chodzi o przepisanie pakietu przez usługę? +#~ msgid "" +#~ "Rewrite matched traffic to the given source port. May be left empty to " +#~ "only rewrite the IP address." +#~ msgstr "" +#~ "Przepisz dopasowany ruch do danego portu źródłowego. Można zostawić puste " +#~ "aby przepisać tylko adres IP" + +#~ msgid "Rewrite to source %s" +#~ msgstr "Przepisz do źródła %s" + +#~ msgid "Rewrite to source %s, %s" +#~ msgstr "Przepisz do źródła %s, %s" + +#~ msgid "SNAT IP address" +#~ msgstr "Adres IP SNAT" + +#~ msgid "SNAT port" +#~ msgstr "Port SNAT" + +#~ msgid "Source NAT" +#~ msgstr "NAT źródłowy" + +# http://www.digipedia.pl/def/doc/id/677604507/name/SNAT/ +#~ msgid "" +#~ "Source NAT is a specific form of masquerading which allows fine grained " +#~ "control over the source IP used for outgoing traffic, for example to map " +#~ "multiple WAN addresses to internal subnets." +#~ msgstr "" +#~ "SNAT używany jest wtedy, gdy zmieniane są adresy pakietów połączenia " +#~ "wychodzącego, czyli pakiety źródłowe. Wykonywany jest zawsze po " +#~ "routowaniu (POSTROUTING), a więc w chwili, gdy pakiety są gotowe opuścić " +#~ "host. IPmasquerading jest formą SNAT." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the port forwarding " +#~ "entry. In most cases there is no need to modify those settings." +#~ msgstr "" +#~ "Ta strona pozwala zmienić zaawansowane ustawienia przekierowania portów. " +#~ "W większości przypadków nie ma potrzeby zmieniać tych ustawień." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the traffic rule " +#~ "entry, such as matched source and destination hosts." +#~ msgstr "" +#~ "Ta strona pozwala zmienić zaawansowane ustawienia reguły ruchu " +#~ "sieciowego, takie jak pasujące źródło i hosty docelowe." + +#~ msgid "" +#~ "You may specify multiple by selecting \"-- custom --\" and then entering " +#~ "protocols separated by space." +#~ msgstr "" +#~ "Możesz określić kilka wybierając \"-- własne --\" i wpisując protokoły " +#~ "rozdzielone spacją." + +#~ msgid "Zone %q" +#~ msgstr "Strefa %q" diff --git a/luci-app-firewall/po/pt/firewall.po b/luci-app-firewall/po/pt/firewall.po new file mode 100644 index 000000000..d031d7171 --- /dev/null +++ b/luci-app-firewall/po/pt/firewall.po @@ -0,0 +1,1421 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-01-20 05:58+0000\n" +"Last-Translator: ssantos \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "-- adicionar IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "-- adicionar MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Aceitar %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "Prevenir a reescrita da fonte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "Um IP reescrito deve ser especificado!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Deactivate reescrever endereços" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Ação" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Argumentos brutos adicionais iptables para classificar o tráfego de " +"destino da zona, por exemplo, -p tcp -- dport 443 para " +"corresponder apenas ao tráfego https de saída." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Argumentos adicionais brutos iptables para classificar o tráfego de " +"fonte de zona, por exemplo, -p tcp - esporte 443 para " +"corresponder apenas ao tráfego HTTPS de entrada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Definições Avançadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "Permitir o tráfego \"inválido\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Permitir encaminhamento de zonas de origem:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Permitir encaminhamento para zonas de destino:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Qualquer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "Qualquer dia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Aplique um XOR bit a bit do valor dado e o valor da marca existente nas " +"ligações estabelecidas. Formato é valor[/máscara]. Se uma máscara for " +"especificada, os bits definidos na máscara são zerados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Aplique a classe ou valor de DSCP dado às conexões estabelecidas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Atribua o ajudante de rastreamento de conexão especificado para o tráfego " +"combinado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "Atribuição automática de assistentes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Atribuir assistentes de conntrack automaticamente com base no protocolo de " +"tráfego e na porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "Configurações do Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "Assistentes do Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "Os conteúdos foram gravados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "Continuar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "Aparelhos abrangidos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Redes abrangidas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "Subredes abrangidas" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Regras Personalizadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"As regras personalizadas permitem-lhe executar comandos arbitrários iptables " +"os quais não são possiveis de aplicar usando a framework da firewall. Os " +"comandos são executados a seguir ao reinicio da firewall, logo a seguir ao " +"conjunto de regras predefinidas serem carregadas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "Classificação de DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "Marca de DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "Marca de DSCP necessária" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Endereço de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Porta de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Zona de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "Nome do aparelho" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Não instalae regras adicionais para rejeitar tráfego encaminhado com estado " +"conntrack invalid. Isto pode ser necessário para configurações " +"complexas de rotas assimétricas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Cancelar pacotes inválidos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Ativar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "Ativar NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Ativar a Proteção SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Ativar registo nesta zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "À espera de: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "Característica experimental. Não totalmente compatível com QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Escolhe explicitamente os assistentes de rastreamento de conexão permitidos " +"para o tráfego da zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Endereço IP externo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Porta externa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Argumentos adicionais" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "Argumentos adicionais de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "Argumentos adicionais do iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "Argumentos adicionais da fonte" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Regras Personalizadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "Firewall - Regras de NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Encaminhamento de Portas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Regras de Tráfego" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Definições de Zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Encaminhar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "Sexta-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Configurações Gerais" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "Descarga de fluxo em hardware" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 e IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "Só IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "Só IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "Aparelho de entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Endereço IP interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Porta interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Zona Interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "Marca de DSCP inválida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "Valor limite inválido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "Limite de burst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Limitar registo de mensagens" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "Limitar a correspondência" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "Limita o tráfego de acordo com a taxa especificada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "IP fonte de loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "Fixação de MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Mascaramento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Corresponder" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Correspondência do tipo de ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"O tráfego de entrada corresponde a uma dada porta de destino ou intervalo de " +"portas neste host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "Segunda-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "Dias do mês" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Só se tráfego de entrada corresponder ao endereço IP fornecido." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "Só se o tráfego de entrada corresponder a um destes MACs." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "Só se o tráfego de entrada corresponder a este IP ou intervalo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Só se o tráfego de entrada corresponder à porta de origem fornecida ou de um " +"intervalo de portas no host cliente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Saída" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Passa argumentos adicionais para o iptables. Usar com cuidado!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Passar argumentos brutos do iptables para regras de classificação de tráfego " +"de origem e destino permite combinar pacotes baseados em outros critérios " +"além de interfaces ou sub-redes. Essas opções devem ser usadas com extremo " +"cuidado, pois valores inválidos podem tornar o conjunto de regras do " +"firewall quebrado, expondo completamente todos os serviços." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Encaminhamento de Portas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"O Encaminhamento de Portas permite que computadores remotos na internet se " +"liguem a um computador ou serviço especifico na rede privada (LAN)." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protocolo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Redirecionar a entrada de trafego correspondente à porta fornecida no host " +"interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Redirecionar o tráfego de entrada correspondente para o host interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" +"Requer suporte de hardware para NAT. Implementado pelo menos para mt7621" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Restringir o Mascaramento às sub-redes de destino dadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "Restringir Mascaramento a sub-redes de origem fornecidas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Restringir a família de endereços" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "Descargar Roteamento/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "Sábado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "Descarga baseada em software para roteamento/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "Descarga de fluxo de software" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Endereço IP de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "Endereço MAC de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Endereço de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Porta de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Zona de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Data de Início (aaaaa-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "Hora de início (hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Data de Paragem (aaaaa-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "Tempo de Parada (hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "Domingo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"A firewall cria zonas sobre as interfaces de rede para controlar o fluxo do " +"tráfego." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"As opções abaixo controlam as políticas de encaminhamento entre esta zona " +"(%s) e outras zonas. Zonas de destino cobrem tráfego encaminhado " +"originando de %q. Zonas de origem correspondem ao " +"tráfego encaminhado de outras zonas alvo em %q. A regra de " +"encaminhamento é unidirecional, por exemplo, um encaminhamento de " +"lan para wan não implica uma permissão para avançar de wan para lan " +"também." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Esta secção define propriedades comuns de %q. As opções input e " +"output definem as políticas padrão para entrada e saída de tráfego " +"nessa zona, enquanto a opção forward descreve a política para " +"tráfego encaminhado entre redes diferentes dentro da zona. Redes " +"abrangidas especifica quais das redes disponíveis são membros desta " +"zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "Quinta-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "Restrições de Tempo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "Tempo em UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Regras de Tráfego" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"As Regras de Tráfego definem políticas para os pacotes que viajam entre " +"diferentes zonas, por exemplo, para rejeitar trafego entre certos hosts ou " +"para abrir portas WAN no router." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "Terça-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "Incapaz de gravar conteúdos: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "Encaminhamento sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "Regra sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "Zona sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Use esta opção para classificar o tráfego da zona por aparelhos de rede " +"brutos, não geridos por uci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Use esta opção para classificar o tráfego da zona por sub-rede de origem ou " +"destino em vez de redes ou aparelhos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "Quarta-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "Dias úteis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "Zona ⇒ Encaminhamentos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zonas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "aceitar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "qualquer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "qualquer zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "dia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "não seguir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "descartar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "hora" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "minuto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "rejeitar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "segundo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "esta nova zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "ilimitado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "não especificado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "From %{ipaddr?:any host} %{port?with source %{port}}" +#~ msgstr "De %{ipaddr?:qualquer host} %{port?com fonte %{port}}" + +#~ msgid "%s in %s" +#~ msgstr "%s em %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s with %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s em %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d pkts. por %s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "%d pcts. por %s, burst %d pcts." + +#~ msgid "%s and limit to %s" +#~ msgstr "%s e limite a %s" + +#~ msgid "Accept forward" +#~ msgstr "Aceitar o encaminhamento" + +#~ msgid "Accept input" +#~ msgstr "Aceitar a entrada" + +#~ msgid "Accept output" +#~ msgstr "Aceitar a saída" + +#~ msgid "Destination IP address" +#~ msgstr "Endereço IP de destino" + +#~ msgid "Discard forward" +#~ msgstr "Descartar o encaminhamento" + +#~ msgid "Discard input" +#~ msgstr "Descartar a entrada" + +#~ msgid "Discard output" +#~ msgstr "Descartar a saída" + +#~ msgid "Do not rewrite" +#~ msgstr "Não re-escrever" + +#~ msgid "Do not track forward" +#~ msgstr "Não rastrear o encaminhamento" + +#~ msgid "Do not track input" +#~ msgstr "Não rastrear a entrada" + +#~ msgid "Do not track output" +#~ msgstr "Não rastrear a saída" + +#~ msgid "Forward to" +#~ msgstr "Encaminhar para" + +#~ msgid "From %s in %s" +#~ msgstr "De %s em %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "De %s em %s com origem %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "De %s em %s com origem %s e %s" + +#~ msgid "From %s on this device" +#~ msgstr "De %s neste aparelho" + +#~ msgid "From %s on this device with source %s" +#~ msgstr "De %s neste aparelho com a fonte %s" + +#~ msgid "From %s on this device with source %s and %s" +#~ msgstr "De %s neste aparelho com as fontes %s e %s" + +#~ msgid "IP" +#~ msgstr "IP" + +#~ msgid "IP range" +#~ msgstr "Intervalo de IP" + +#~ msgid "IPs" +#~ msgstr "IPs" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "MACs" +#~ msgstr "MACs" + +#~ msgid "Network" +#~ msgstr "Rede" + +#~ msgid "Refuse forward" +#~ msgstr "Recusar encaminhamento" + +#~ msgid "Refuse input" +#~ msgstr "Recusar entrada" + +#~ msgid "Refuse output" +#~ msgstr "Recusar saída" + +#~ msgid "To %s at %s on this device" +#~ msgstr "Para %s no %s em este dispositivo" + +#~ msgid "To %s in %s" +#~ msgstr "Para %s em %s" + +#~ msgid "To %s on this device" +#~ msgstr "Para %s em este dispositivo" + +#~ msgid "To %s, %s in %s" +#~ msgstr "Para %s, %s em %s" + +#~ msgid "Via %s" +#~ msgstr "Via %s" + +#~ msgid "Via %s at %s" +#~ msgstr "Via %s no %s" + +#~ msgid "any host" +#~ msgstr "qualquer host" + +#~ msgid "any router IP" +#~ msgstr "qualquer IP do router" + +#~ msgid "not" +#~ msgstr "não" + +#~ msgid "port" +#~ msgstr "porta" + +#~ msgid "ports" +#~ msgstr "portas" + +#~ msgid "type" +#~ msgstr "tipo" + +#~ msgid "types" +#~ msgstr "tipos" + +#~ msgid "Force connection tracking" +#~ msgstr "Forçar rasto de ligação" + +#~ msgid "" +#~ "Prevent the installation of NOTRACK rules which would bypass " +#~ "connection tracking." +#~ msgstr "" +#~ "Prevenir a instalação de regras NOTRACK que contornariam o " +#~ "rastreamento de conexão." + +#~ msgid "Disable" +#~ msgstr "Desativar" + +#~ msgid "Add" +#~ msgstr "Adicionar" + +#~ msgid "Add and edit..." +#~ msgstr "Adicionar e editar..." + +#~ msgid "External zone" +#~ msgstr "Zona externa" + +#~ msgid "New SNAT rule" +#~ msgstr "Nova regra SNAT" + +#~ msgid "New forward rule" +#~ msgstr "Nova regra de encaminhamento" + +#~ msgid "New input rule" +#~ msgstr "Nova regra de entrada" + +#~ msgid "New port forward" +#~ msgstr "Novo encaminhamento de porta" + +#~ msgid "New source NAT" +#~ msgstr "Nova origem de NAT" + +#~ msgid "Open ports on router" +#~ msgstr "Abrir portas no router" + +#~ msgid "Other..." +#~ msgstr "Outro..." + +#~ msgid "To source IP" +#~ msgstr "Para o IP de origem" + +#~ msgid "To source port" +#~ msgstr "Para a porta de origem" + +#~ msgid "(Unnamed Entry)" +#~ msgstr "(Entrada Sem Nome)" + +#~ msgid "(Unnamed Rule)" +#~ msgstr "(Regra Sem Nome)" + +#~ msgid "(Unnamed SNAT)" +#~ msgstr "(SNAT Sem Nome)" + +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "Encaminhamento Inter-Zona" + +#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgstr "" +#~ "O tráfego encaminhado corresponde a uma determinada porta de destino ou " +#~ "intervalo de portas." + +#~ msgid "" +#~ "Match incoming traffic originating from the given source port or port " +#~ "range on the client host." +#~ msgstr "" +#~ "O tráfego de entrada corresponde a uma dada porta ou de um intervalo de " +#~ "portas no host cliente." + +#~ msgid "Rewrite to source %s" +#~ msgstr "Re-escrever para a origem %s" + +#~ msgid "Rewrite to source %s, %s" +#~ msgstr "Re-escrever para a origem %s, %s" + +#~ msgid "SNAT IP address" +#~ msgstr "Endereço IP da SNAT" + +#~ msgid "SNAT port" +#~ msgstr "Porta SNAT" + +#~ msgid "Source NAT" +#~ msgstr "NAT de origem" + +#~ msgid "" +#~ "Source NAT is a specific form of masquerading which allows fine grained " +#~ "control over the source IP used for outgoing traffic, for example to map " +#~ "multiple WAN addresses to internal subnets." +#~ msgstr "" +#~ "NAT de origem é uma forma especifica de mascarar que permite um controlo " +#~ "melhorado sobre o IP de origem usado para o tráfego de saída, por " +#~ "exemplo, para mapear múltiplos endereços para as sub-redes internas." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the traffic rule " +#~ "entry, such as matched source and destination hosts." +#~ msgstr "" +#~ "Esta página permite-lhe alterar as definições avançadas da regra de " +#~ "entrada de tráfego, tal como correspondências de hosts de origem e " +#~ "destino." + +#~ msgid "" +#~ "You may specify multiple by selecting \"-- custom --\" and then entering " +#~ "protocols separated by space." +#~ msgstr "" +#~ "Pode especificar múltiplos seleccionando \"-- personalizado --\" e depois " +#~ "introduzir os protocolos separados por espaço." + +#~ msgid "Zone %q" +#~ msgstr "Zona %q" diff --git a/luci-app-firewall/po/pt_BR/firewall.po b/luci-app-firewall/po/pt_BR/firewall.po new file mode 100644 index 000000000..481bc8c3f --- /dev/null +++ b/luci-app-firewall/po/pt_BR/firewall.po @@ -0,0 +1,1567 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-02-22 11:57+0000\n" +"Last-Translator: Wellington Terumi Uemura \n" +"Language-Team: Portuguese (Brazil) \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.11.1\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 e " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP com tipos %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, helper %{helper.inv?" +"%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "-- Adicionar IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "-- Adicionar MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Aceite %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "Prevenir a reescrita da fonte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Encaminhar para %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Derruba %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Atribuir DSCP classificação %{set_dscp}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" +"Atribuir auxiliar conntrack %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} marca do firewall " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" +"Reescrever automaticamente o IP de " +"origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Não rastreie %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Rejeita %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Reescrever estaticamente para a origem " +"%{snat_ip?IP %{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "Um IP de reescrita deve ser especificado!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACEITAR - Desativar a reescrita do endereço" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Ação" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Comandos iptables adicionais para classificar o tráfego de destino " +"da zona, por exemplo, -p tcp --dport 443 para corresponder " +"apenas ao tráfego HTTPS de saída." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Comandos iptables adicionais para classificar o tráfego de origem " +"da zona, por exemplo, -p tcp --sport 443 para corresponder " +"apenas ao tráfego HTTPS de entrada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Configurações Avançadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "Permitir tráfego \"inválido\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Permite o encaminhamento da zona de origem:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Permite o encaminhamento para a zona de destino:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Qualquer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "Qualquer dia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Aplique um XOR bitwise do valor dado e o valor da marca existente nas " +"ligações estabelecidas. O formato é o valor[/mask]. Se uma máscara for " +"especificada, então os bits definidos na máscara são zerados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Aplique a classe ou valor DSCP dado às conexões estabelecidas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Atribua o auxiliar de rastreamento de conexão especificado para o tráfego " +"combinado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "Atribuição automática de assistentes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Atribuir automaticamente ajudantes de conntrack com base no protocolo de " +"tráfego e na porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "Configurações do Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "Ajudantes do Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "O conteúdo foi salvo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "Continuar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "Dispositivos cobertos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Redes cobertas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "Sub-redes cobertas" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Regras Personalizadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"As regras personalizadas permitem executar comandos iptables arbitrários não " +"cobertos por esta ferramenta. Os comandos serão executados após cada " +"reinício do firewall, logo após a carga do conjunto de regras padrão." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "Classificação DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "Marca DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "Marca DSCP necessária" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Endereço de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Porta de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Zona de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "Nome do dispositivo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Não instale regras extras para rejeitar o tráfego encaminhado quando o " +"estado do conntrack for invalid. Isto pode ser necessário para " +"configurações complexas e de rotas assimétricas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Descartar pacotes inválidos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Ativar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "Habilite o Loopback do NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Habilite proteção contra SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Habilite o registro nesta zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "Esperando: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" +"Funcionalidade experimental. Ela não é totalmente compatível com QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Escolhe explicitamente os assistentes de rastreamento de conexão permitidos " +"para o tráfego da zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Endereço IP externo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Porta Externa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Argumentos extras" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "Argumentos extra de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "Argumentos extras para o iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "Argumentos extras da fonte" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Regras personalizadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "Firewall - Regras NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Encaminhamento de Portas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Regras de Tráfego" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Configurações de Zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "Migração de configuração do Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Encaminhar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +"val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "Sexta-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#" +"%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Configurações Gerais" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "Aceleração de fluxo de dados via Hardware" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 e IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "Somente IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "Somente IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "Dispositivo de entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Endereço IP interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Porta Interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Zona interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "Marca DSCP inválida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "Valor limite inválido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "Estouro limite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Limita as mensagens de registro" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "Limitar as correspondências" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Limitar a correspondência de %{limit.num} pacotes por " +"%{limit.unit}%{limit.burst? estouro %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "Limita a correspondência de tráfego à taxa especificada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "IP da fonte de Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Reescreve automaticamente para o IP da interface de saída" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "Ajuste do MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Mascaramento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Casa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "Correspondência DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Casa com ICMP tipo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "Dispositivo de correspondência" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" +"Encaminha o tráfego que obteve correspondência para um determinado endereço " +"de IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Encaminha o tráfego que obteve correspondência para uma determinada porta de " +"destino ou uma faixa de portas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" +"Encaminha o tráfego que obteve correspondência deste IP ou uma faixa de IPs." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Encaminha o tráfego que obteve correspondência originado de uma determinada " +"porta de origem ou faixa de portas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "Auxiliar de correspondência" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Casa o tráfego entrante direcionado para uma porta ou faixa de portas de " +"destino específica neste computador" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "Marca de correspondência" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Corresponder o tráfego usando uma conexão definida pelo auxiliar de " +"rastreamento." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Corresponder uma marca de firewall especifica ou uma variedade de diferentes " +"marcas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Corresponda o tráfego encaminhado usando um dispositivo de rede de saída " +"indicado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" +"Casa o tráfego correspondente que esteja carregando uma marca DSCP " +"específica." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Número inicial máximo de pacotes para combinar: este número é recarregado " +"por um cada vez que o limite especificado acima não é atingido, até este " +"número." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "Segunda-Feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "Dias do mês" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "Regras NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"As regras da NAT permitem o controle fino sobre o IP de origem para usar com " +"o tráfego de saída ou tráfego de encaminhamento." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" +"Somente case o tráfego entrante direcionado para o endereço IP fornecido." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "Somente case o tráfego entrante destes endereços MAC." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "Somente case o tráfego entrante desta faixa de endereços IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Somente case o tráfego entrante vindo da porta de origem fornecida ou " +"intervalo de portas no equipamento cliente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "Dispositivo de saída" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "Zona de saída" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Saída" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Passa argumentos adicionais para o iptables. Use com cuidado!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Passar comandos diretos ao iptables para regras de classificação de tráfego " +"de origem e destino, permite combinar pacotes baseados em outros critérios " +"que não sejam interfaces ou sub-redes. Estas opções devem ser usadas com " +"extremo cuidado, pois valores inválidos podem quebrar todo o conjunto de " +"regras do firewall expondo todos os serviços completamente." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Encaminhamentos de Porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"O encaminhamento de portas permite que computadores remotos na Internet " +"conectem a um computador ou serviço específico dentro da rede local privada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protocolo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Redireciona tráfego entrante para a porta especificada no computador interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Redireciona tráfego entrante para o computador interno especificado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "Requer suporte de NAT em hardware. Implementado ao menos para mt7621" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Restringe o mascaramento para uma subrede de destino específica" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "Restringe o mascaramento para uma subrede de origem específica" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Restringe para uma família de endereços" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "Reescreva o endereço IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" +"Reescreva o tráfego compatível com o endereço IP de origem especificado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Reescrever tráfego compatível com a porta de origem especificado ou uma " +"faixa de portas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "Reescrever porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "Aceleração de Roteamento/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Reescrever para um IP de origem ou uma porta específica" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "Sábado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "Definir marca" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Defina o valor da marca dada nas ligações estabelecidas. o formato é valor[/" +"mask]. Se uma máscara for especificada, então apenas os bits definidos na " +"máscara são modificados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "Aceleração de roteamento/NAT baseada em Software" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "Aceleração de fluxo de dados via Software" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Endereço IP de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "Endereço MAC de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Endereço de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Porta de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Zona de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Especifica se esta regra de tráfego deve ser ligada a um dispositivo de rede " +"específico de entrada ou de saída." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Especifica se deve usar o endereço de IP externo ou interno para o tráfego " +"refletido." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Dia inicial (aaaa-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "Hora de Início (hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Dia final (aaaa-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "Hora de Parada (hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "Domingo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"A configuração de firewall existente precisa ser alterada para que o LuCI " +"funcione corretamente." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"O firewall cria zonas sobre as interfaces de rede para controlar o fluxo do " +"tráfego de rede." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"As opções abaixo controlam as políticas de encaminhamento entre esta zona " +"(%s) e outras zonas. Zonas de destino incluem tráfego encaminhado " +"originado de %q. Zonas de origem casam com tráfego " +"encaminhado de outras zonas apontando para %q. A regra de " +"encaminhamento é unidirecional, ex: um encaminhamento da LAN para " +"WAN não implica na permissão de encaminhar da WAN para LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Esta seção define as propriedades comuns de %q. As opções de entrada e saída definem as políticas padrão para o tráfego entrando e " +"saindo desta zona, enquanto a opção de encaminhamento descreve a " +"política para encaminhar o tráfego entre diferentes redes dentro da zona. " +"Redes Cobertas especificam que redes disponíveis são membros desta " +"zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "Quita-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "Restrições de tempo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "Hora em UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Para %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Para %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Para %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "Auxiliar de rastreamento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Regras de tráfego" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"Regras de tráfego definem políticas para a passagem de pacotes entre as " +"diferentes zonas. Por exemplo, rejeitar o tráfego entre certos equipamentos " +"ou abrir portas WAN no roteador." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "Terça-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "Não foi possível salvar os conteúdos: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Auxiliar conntrack desconhecido ou não instalado \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "NAT sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "Encaminhamento sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "Regra sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "Zona sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "Protocolo desconhecido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Ao pressionar \"Continue\", as seções \"redirecionar\" com o alvo \"SNAT\" " +"serão convertidas para seções \"nat\" e o firewall será reiniciado para " +"aplicar e atualizar as novas configurações." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "Usar endereço IP externo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "Usar endereço IP interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Use esta opção para classificar o tráfego bruto da zona por dispositivos de " +"rede não gerenciados pelauci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Use esta opção para classificar o tráfego da zona por sub-rede de origem ou " +"destino em vez de redes ou dispositivos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "Marca de firewall válida necessária" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "Quarta-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "Dias da semana" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "Marca de firewall XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "Marca XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "Zona ⇒ Encaminhamentos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zonas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "aceitar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "qualquer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "qualquer zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "aplicar marca de firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "atribuir auxiliar conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "dia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "não reescrever" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "não rastrear" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "descartar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "hora" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "minuto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "rejeitar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "segundo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "este dispositivo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "esta nova zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "ilimitado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "não especificado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "marca de firewall válida" + +#~ msgid "%s in %s" +#~ msgstr "%s in %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s com %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s em %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d pcts. por %s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "%d pcts. por %s, pico %d pcts." + +#~ msgid "%s and limit to %s" +#~ msgstr "%s e limite a %s" + +#~ msgid "Accept forward" +#~ msgstr "Aceitar encaminhamento" + +#~ msgid "Accept input" +#~ msgstr "Aceitar entrada" + +#~ msgid "Accept output" +#~ msgstr "Aceitar saída" + +#~ msgid "Destination IP address" +#~ msgstr "Endereço IP de destino" + +#~ msgid "Discard forward" +#~ msgstr "Descartar o encaminhamento" + +#~ msgid "Discard input" +#~ msgstr "Descartar a entrada" + +#~ msgid "Discard output" +#~ msgstr "Descartar a saída" + +#~ msgid "Do not rewrite" +#~ msgstr "Não sobrescreva" + +#~ msgid "Do not track forward" +#~ msgstr "Não rastrear o encaminhamento" + +#~ msgid "Do not track input" +#~ msgstr "Não rastrear a entrada" + +#~ msgid "Do not track output" +#~ msgstr "Não rastrear a saída" + +#~ msgid "Forward to" +#~ msgstr "Encaminhar para" + +#~ msgid "From %s in %s" +#~ msgstr "Vindo de %s em %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "Vindo de %s em %s com origem %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "Vindo de %s em %s com origem %s e %s" + +#~ msgid "From %s on this device" +#~ msgstr "De %s neste dispositivo" + +#~ msgid "From %s on this device with source %s" +#~ msgstr "De %s neste dispositivo com origem %s" + +#~ msgid "From %s on this device with source %s and %s" +#~ msgstr "De %s neste dispositivo com origem %s e %s" + +#~ msgid "IP" +#~ msgstr "IP" + +#~ msgid "IP range" +#~ msgstr "Faixa IP" + +#~ msgid "IPs" +#~ msgstr "IPs" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "MACs" +#~ msgstr "MACs" + +#~ msgid "Network" +#~ msgstr "Rede" + +#~ msgid "Refuse forward" +#~ msgstr "Recusar encaminhamento" + +#~ msgid "Refuse input" +#~ msgstr "Recusar entrada" + +#~ msgid "Refuse output" +#~ msgstr "Recusar saída" + +#~ msgid "To %s at %s on this device" +#~ msgstr "Para %s em %s neste dispositivo" + +#~ msgid "To %s in %s" +#~ msgstr "Para %s em %s" + +#~ msgid "To %s on this device" +#~ msgstr "Para %s neste dispositivo" + +#~ msgid "To %s, %s in %s" +#~ msgstr "Para %s, %s em %s" + +#~ msgid "Via %s" +#~ msgstr "Via %s" + +#~ msgid "Via %s at %s" +#~ msgstr "Através do %s na %s" + +#~ msgid "any host" +#~ msgstr "qualquer equipamento" + +#~ msgid "any router IP" +#~ msgstr "qualquer endereço IP do roteador" + +#~ msgid "not" +#~ msgstr "não" + +#~ msgid "port" +#~ msgstr "porta" + +#~ msgid "ports" +#~ msgstr "portas" + +#~ msgid "type" +#~ msgstr "tipo" + +#~ msgid "types" +#~ msgstr "tipos" + +#~ msgid "Force connection tracking" +#~ msgstr "Force o rastreamento da conexão" + +#~ msgid "Disable" +#~ msgstr "Desabilitar" + +#~ msgid "Restart Firewall" +#~ msgstr "Reiniciar o Firewall" + +#~ msgid "Rule is disabled" +#~ msgstr "A regra está desabilitada" + +#~ msgid "Rule is enabled" +#~ msgstr "A regra está habilitada" + +#~ msgid "Add" +#~ msgstr "Adicionar" + +#~ msgid "Add and edit..." +#~ msgstr "Adicionar e editar..." + +#~ msgid "External zone" +#~ msgstr "Zona externa" + +#~ msgid "New SNAT rule" +#~ msgstr "Nova regra de SNAT" + +#~ msgid "New forward rule" +#~ msgstr "Nova regra de encaminhamento" + +#~ msgid "New input rule" +#~ msgstr "Nova regra de entrada" + +#~ msgid "New port forward" +#~ msgstr "Novo encaminhamento de porta" + +#~ msgid "New source NAT" +#~ msgstr "Nova origem NAT" + +#~ msgid "Open ports on router" +#~ msgstr "Abrir portas no roteador" + +#~ msgid "Other..." +#~ msgstr "Outro..." + +#~ msgid "To source IP" +#~ msgstr "Para o endereço IP de origem" + +#~ msgid "To source port" +#~ msgstr "Para a porta de origem" + +#~ msgid "Output zone" +#~ msgstr "Zona de saída" + +#~ msgid "(Unnamed Entry)" +#~ msgstr "(Entrada Sem Nome)" + +#~ msgid "(Unnamed Rule)" +#~ msgstr "(Regra Sem Nome)" + +#~ msgid "(Unnamed SNAT)" +#~ msgstr "(SNAT Sem Nome)" + +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "Encaminhamento entre Zonas" + +#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgstr "" +#~ "Casa o tráfego encaminhado para uma porta ou faixa de portas de destino " +#~ "específica." + +#~ msgid "" +#~ "Match incoming traffic originating from the given source port or port " +#~ "range on the client host." +#~ msgstr "" +#~ "Casa o tráfego entrante originado de uma porta ou faixa de portas no " +#~ "equipamento cliente." + +#~ msgid "Rewrite matched traffic to the given address." +#~ msgstr "Reescreva o tráfego correspondente para o endereço fornecido." + +#~ msgid "" +#~ "Rewrite matched traffic to the given source port. May be left empty to " +#~ "only rewrite the IP address." +#~ msgstr "" +#~ "Reescreva o tráfego correspondente para a porta de origem fornecida. Pode " +#~ "ficar em branco para somente reescrever o endereço IP." + +#~ msgid "Rewrite to source %s" +#~ msgstr "Reescrever para a origem %s" + +#~ msgid "Rewrite to source %s, %s" +#~ msgstr "Reescrever para a origem %s, %s" + +#~ msgid "SNAT IP address" +#~ msgstr "Endereço IP da SNAT" + +#~ msgid "SNAT port" +#~ msgstr "Porta da SNAT" + +#~ msgid "Source NAT" +#~ msgstr "NAT origem" + +#~ msgid "" +#~ "Source NAT is a specific form of masquerading which allows fine grained " +#~ "control over the source IP used for outgoing traffic, for example to map " +#~ "multiple WAN addresses to internal subnets." +#~ msgstr "" +#~ "NAT origem é uma forma específica de mascaramento que permite o controle " +#~ "fino do endereço IP de origem usado no tráfego sainte. Por exemplo, para " +#~ "mapear múltiplos endereços WAN para subredes internas." + +#~ msgid "Start Time (hh:mm:ss)" +#~ msgstr "Hora inicial (hh:mm:ss)" + +#~ msgid "Stop Time (hh:mm:ss)" +#~ msgstr "Hora final (hh:mm:ss)" + +#~ msgid "" +#~ "This page allows you to change advanced properties of the port forwarding " +#~ "entry. In most cases there is no need to modify those settings." +#~ msgstr "" +#~ "Esta página permite que você mude propriedades avançadas da entrada do " +#~ "encaminhamento de porta. Na maioria dos casos, não é necessário modificar " +#~ "estas configurações." + +#~ msgid "" +#~ "This page allows you to change advanced properties of the traffic rule " +#~ "entry, such as matched source and destination hosts." +#~ msgstr "" +#~ "Esta página permite que você mude propriedades avançadas da entrada da " +#~ "regra de tráfego, como os equipamentos de origem e destino." + +#~ msgid "Unnamed SNAT" +#~ msgstr "SNAT sem nome" + +#~ msgid "" +#~ "You may specify multiple by selecting \"-- custom --\" and then entering " +#~ "protocols separated by space." +#~ msgstr "" +#~ "Você pode especificar múltiplas entradas selecionando \"-- personalizado " +#~ "--\" e então entrando os protocolos separados por espaço." + +#~ msgid "Zone %q" +#~ msgstr "Zona %q" + +# 20140621: edersg: tradução +#~ msgid "traffic" +#~ msgstr "tráfego" diff --git a/luci-app-firewall/po/ro/firewall.po b/luci-app-firewall/po/ro/firewall.po new file mode 100644 index 000000000..8fa1ff30a --- /dev/null +++ b/luci-app-firewall/po/ro/firewall.po @@ -0,0 +1,1161 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2020-03-29 12:19+0000\n" +"Last-Translator: Cristian Ionescu \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Actiune" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Setări avansate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Permite trecerea din zonele sursa." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Permite trecerea catre zonele sursa." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Oricare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "Orice zi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "Conţinutul a fost salvat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Retele acoperite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Reguli suplimentare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Destinaţie adresă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Portul destinatie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Zonă de destinație" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Descarcă pachetele invalide" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Activează" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "Activează loopback NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Activează protecţia SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Activeaza log in aceasta zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "Funcție experimentală. Nu este complet compatibiă cu QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Adresă IP externă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Port extern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Reguli particularizate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Port-uri forwardate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Reguli ale traficului" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Setari zona la firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Forward" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "Vineri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Setări generale" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 şi IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "doar IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "doar IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Intrare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Adresa IP interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Port intern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Zonă internă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Limitează mesaje în log" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "Ajustare MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Translatare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Potrivire" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Potriveste pe tipul de ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "Luni" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Nume" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Ieşire" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protocol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "Sâmbătă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "Sursă adresă IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "Sursă adresă MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Adresa sursa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Port sursa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Zona sursa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "Duminică" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "Joi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "Restricţii de timp" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "Marţi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "Miercuri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "accept" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "oricare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "orice zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "zi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "oră" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "minut" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "secundă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "%s in %s" +#~ msgstr "%s în %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s cu %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s în %s" + +#~ msgid "Destination IP address" +#~ msgstr "Destinaţie adresă IP" + +#~ msgid "Do not rewrite" +#~ msgstr "Nu rescrie" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "type" +#~ msgstr "tip" + +#~ msgid "Force connection tracking" +#~ msgstr "Forteaza urmarirea conexiunilor" + +#~ msgid "Add" +#~ msgstr "Adaugă" + +#~ msgid "Add and edit..." +#~ msgstr "Adaugă şi editează..." + +#~ msgid "External zone" +#~ msgstr "Zonă externă" + +#~ msgid "New SNAT rule" +#~ msgstr "Regulă nouă SNAT" + +#~ msgid "Other..." +#~ msgstr "Altele..." + +#~ msgid "(Unnamed Entry)" +#~ msgstr "(Intrare fără nume)" + +#~ msgid "(Unnamed Rule)" +#~ msgstr "(Regulă fără nume)" + +#~ msgid "(Unnamed SNAT)" +#~ msgstr "(SNAT fără nume)" + +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "Forwardare intre-zone" + +#~ msgid "Source NAT" +#~ msgstr "Sursă NAT" + +#~ msgid "Zone %q" +#~ msgstr "Zona %q" diff --git a/luci-app-firewall/po/ru/firewall.po b/luci-app-firewall/po/ru/firewall.po new file mode 100644 index 000000000..59e3a75d8 --- /dev/null +++ b/luci-app-firewall/po/ru/firewall.po @@ -0,0 +1,1512 @@ +msgid "" +msgstr "" +"Project-Id-Version: LuCI: firewall\n" +"POT-Creation-Date: 2013-09-05 16:02+0200\n" +"PO-Revision-Date: 2020-02-12 11:00+0000\n" +"Last-Translator: Alex Ky \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 3.11-dev\n" +"Project-Info: Это технический перевод, не дословный. Главное-удобный русский " +"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Перенаправление:Входящий}:Исходящий} %{ipv6?%{ipv4?IPv4 и IPv6:IPv6}:IPv4}%{proto?, протокол " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP с типами %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, метка %{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, помощник %{helper.inv?%{helper." +"val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "-- добавить IP-адрес --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "-- добавить MAC-адрес --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Разрешить %{src?%{dest?перенаправляемый:" +"входящий}:исходящий} трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "Предотвращать перезапись источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Перенаправлять на %{dest}%{dest_ip? IP-" +"адрес %{dest_ip}}%{dest_port? порт %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Отбрасывать %{src?%{dest?перенаправляемый:" +"входящий}:исходящий} трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Назначить DSCP классификатор " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" +"Назначить помощника отслеживания " +"соединений %{set_helper}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Назначить метку:XOR метки} " +"брандмауэра %{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" +"Автоматически перезаписывать IP-адрес " +"источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Не отслеживать %{src?%{dest?" +"перенаправляемый:входящий}:исходящий} трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Отклонять %{src?%{dest?перенаправляемый:" +"входящий}:исходящий} трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Статически переписывать %{snat_ip?IP-адрес " +"источника на %{snat_ip}} %{snat_port?порт источника на " +"%{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "IP-адрес для перезаписи должен быть указан!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT — отключить перезапись адреса" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Действие" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Дополнительные аргументы iptables для классификации трафика зоны " +"назначения, например -p tcp --dport 443 для соответствия только " +"исходящему HTTPS трафику." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Дополнительные аргументы iptables для классификации трафика зоны " +"источника, например -p tcp --sport 443 для соответствия только " +"входящему HTTPS трафику." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Дополнительные настройки" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "Разрешить «недействительный» трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Разрешить перенаправление из 'зон источников':" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Разрешить перенаправление в 'зоны назначения':" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Любой" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "Любой день" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Применить побитовую операцию XOR заданного значения и существующего значения " +"метки для уже установленных соединений. Формат — значение[/маска]. Если " +"задана маска, то биты, заданные в маске, обнуляются." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" +"Применить заданный класс DSCP или значение к установленным соединениям." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Назначить указанного помощника отслеживания соединений для соответствующего " +"трафика." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "Автоматическое назначение помощников" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Автоматическое назначение помощников отслеживания соединений (conntrack) на " +"основе протокола и порта трафика" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "Отслеживание соединений (conntrack)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "Помощники отслеживания соединений" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "Содержимое сохранено." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "Продолжить" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "Охватываемые устройства" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Охватываемые сети" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "Охватываемые подсети" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Пользовательские правила" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Пользовательские правила позволяют выполнять произвольные команды iptables, " +"которые не охвачены рамками межсетевого экрана. Команды выполняются после " +"каждой перезагрузки межсетевого экрана, сразу после загрузки набора правил " +"по умолчанию." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "DSCP классификация" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "DSCP метка" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "Требуется DSCP метка" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Адрес назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Порт назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Зона назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "Имя устройства" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Не устанавливать дополнительные правила для отклонения перенаправляемого " +"трафика с состоянием недействительный (invalid). Это может " +"потребоваться для сложных настроек асимметричной маршрутизации." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Отбрасывать некорректные пакеты" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Включить" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "Включить NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Включить защиту от SYN-flood атак" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Включить журналирование в этой зоне" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "Ожидается: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "Экспериментальный функционал. Не полностью совместим с QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Явно определяет допустимые варианты помощников (helpers) отслеживания " +"соединений (connection tracking) трафика в зоне" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Внешний IP-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Внешний порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Дополнительные аргументы" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "Дополнительные аргументы для назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "Дополнительные аргументы iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "Дополнительные аргументы для источника" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Межсетевой экран" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Межсетевой экран - Пользовательские правила" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "Межсетевой экран - Правила NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Межсетевой экран - Перенаправление портов" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Межсетевой экран - Правила для трафика" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Межсетевой экран - Настройка зон" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "Миграция конфигурации межсетевого экрана" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Перенаправление" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" +"Перенаправление IPv4%{proto?, протокол %{proto#%{next?, }%{item.name}}}%{mark?, метка %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "Пятница" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Из %{src}%{src_device?, интерфейс %{src_device}}%{src_ip?, IP-" +"адрес %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Из %{src}%{src_device?, интерфейс %{src_device}}%{src_ip?, IP-" +"адрес %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC-адрес %{src_mac#" +"%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Из %{src}%{src_ip?, IP-адрес %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC-адрес %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Основные настройки" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "Аппаратный flow offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 и IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "Только IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "Только IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "Входящее устройство" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Входящий IPv4%{proto?, протокол %{proto#%{next?, }%{item.types?%{item.name}ICMP с " +"типами %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, метка %{mark.val}}%{helper?, помощник %{helper.inv?" +"%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Входящий трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Внутренний IP-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Внутренний порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Внутренняя зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "Неверная DSCP метка" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "Неверное значение ограничения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "Ограничение барста (burst)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Ограничить журнал сообщений" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "Соответствие по ограничениям" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Ограничение до %{limit.num} пакетов в %{limit.unit}" +"%{limit.burst? барст (burst) %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "Ограничивает сопоставление трафика указанной скорости." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "IP-адрес источника петли (Loopback)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" +"MASQUERADE — автоматически переписывать на IP-адрес исходящего интерфейса" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "Ограничение MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Маскарадинг" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Соответствие" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "Соответствие DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Соответствие ICMP типу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "Соответствие устройству" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" +"Соответствие перенаправляемого трафика, направленного на заданный IP-адрес." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Соответствие перенаправляемого трафика, направленного на заданный порт " +"назначения или диапазон портов." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" +"Соответствие перенаправляемого трафика от данного IP-адреса или диапазона." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Соответствие перенаправляемого трафика, исходящего от заданного порта " +"источника или диапазона портов." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "Соответствие помощнику" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Порт или диапазон портов, входящие подключения на который будут " +"перенаправляться на внутренний порт внутреннего IP-адреса (см. ниже)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "Соответствие метки" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Сопоставление трафика с помощью указанного помощника отслеживания соединений." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Соответствие определённой метке брандмауэра или диапазона различных меток." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Соответствие перенаправляемого трафика, использующего указанное исходящее " +"сетевое устройство." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Сопоставляет трафик с указанной DSCP-маркировкой." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Максимальное начальное количество совпадающих пакетов: это число будет " +"пополняться на один каждый раз, когда лимит, указанный выше, не будет " +"достигнут, вплоть до этого числа." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "Понедельник" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "Дни месяца" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "Правила NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Правила NAT позволяют точно контролировать IP-адрес источника в исходящем " +"или перенаправляемом трафике." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Имя" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" +"Применять правило только для входящих подключений на указанный IP-адрес." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "Применять правило только для входящего трафика от этих MAC-адресов." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" +"Применять правило только для входящего трафика от этого IP-адреса или " +"диапазона адресов." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Применять правило только для входящего трафика от указанного порта или " +"диапазона портов клиентского хоста" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "Исходящее устройство" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "Исходящая зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Исходящий трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"Передаёт дополнительные аргументы таблице iptables. Используйте с " +"осторожностью!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Передача аргументов iptables в правилах классификации входящего и исходящего " +"трафика позволяет сопоставлять пакеты, основанные на других критериях, " +"нежели чем интерфейсы или подсети. Эти опции следует использовать с особой " +"осторожностью, так как неверные значения могут привести к нарушению работы " +"правил межсетевого экрана, полностью открывая доступ ко всем службам системы." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Перенаправление портов" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Перенаправленные портов позволяет удалённым компьютерам из Интернета " +"соединяться с компьютером или службой внутри частной локальной сети." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Протокол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Перенаправлять трафик на указанный порт или диапазон портов внутреннего IP-" +"адреса" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Перенаправлять трафик на указанный IP-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" +"Требуется аппаратная поддержка NAT. Реализовано, по крайней мере, для mt7621" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Использовать маскарадинг только для указанных подсетей-получателей" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "Использовать маскарадинг только для указанных подсетей-отправителей" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Использовать протокол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "IP-адрес для перезаписи" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Перезаписать соответствующий трафик на указанный IP-адрес источника." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Перезаписать соответствующий трафик на указанный порт источника или диапазон " +"портов." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "Порт для перезаписи" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "Маршрутизация/NAT offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT — перезаписать на указанный IP-адрес источника или порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "Суббота" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "Установить метку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Значение метки для уже установленных соединений. Формат — значение[/маска]. " +"Если указана маска, то изменяются только те биты, которые установлены в " +"маске." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "Программная реализация offloading для маршрутизации/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "Программный flow offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "IP-адрес источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "MAC-адрес источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Адрес источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Порт источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Зона источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Определяет, привязывать ли это правило трафика к конкретному входящему или " +"исходящему сетевому устройству." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Определяет, использовать внешний или внутренний IP-адрес для отраженного " +"трафика." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Дата начала (год-мес-день)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "Время начала (чч.мм.сс)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Дата окончания (год-мес-день)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "Время окончания (чч.мм.сс)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "Воскресенье" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Для правильной работы LuCI необходимо изменить существующую конфигурацию " +"межсетевого экрана." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "Межсетевой экран создает зоны в вашей сети для контроля трафика." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Данные настройки управляют политиками перенаправления трафика между этой " +"(%s) и другими зонами. Трафиком 'зон-назначения' является " +"перенаправленный трафик 'исходящий из %q'. Трафиком " +"'зон-источников' является трафик 'направленый в %q'. Перенаправление является 'однонаправленным', то есть " +"перенаправление из lan в wan 'не' допускает перенаправление трафика " +"из wan в lan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Страница содержит общие свойства %q. Режимы 'Входящий трафик' и " +"'Исходящий трафик' устанавливают политики по умолчанию для трафика, " +"поступающего и покидающего эту зону, в то время как режим " +"'Перенаправление' описывает политику перенаправления трафика между " +"различными сетями внутри зоны. 'Использовать сети' указывает, какие " +"доступные сети являются членами этой зоны." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "Четверг" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "Временные ограничения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "Время UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"В %{dest}%{dest_device?, интерфейс %{dest_device}}%{dest_ip?, IP-" +"адрес %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"В %{dest}%{dest_device?, через интерфейс %{dest_device}}%{dest_ip?, IP-адрес %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"В %{dest}%{dest_ip?, IP-адрес %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "Помощник отслеживания" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Правила для трафика" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"Правила для трафика определяют политику прохождения пакетов между разными " +"зонами, например, запрет трафика между некоторыми хостами или открытие WAN-" +"портов маршрутизатора." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "Вторник" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "Невозможно сохранить содержимое: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Неизвестный или не установленный помощник «‎%s»" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "NAT без имени" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "Перенаправление без имени" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "Правило без имени" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "Зона без имени" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "Нераспознанный протокол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"После нажатия кнопки «Продолжить», разделы правил перенаправления «redirect» " +"типа «SNAT» будут сконвертированы в разделы «nat» и межсетевой экран будет " +"перезапущен для применения и обновления конфигурации." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "Использовать внешний IP-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "Использовать внутренний IP-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Используйте эту опцию для классификации трафика зоны по сетевым устройствам, " +"управляемым не через uci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Используйте эту опцию для классификации трафика зоны по источнику или " +"подсети назначения вместо сети или устройств." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "Требуется верная метка брандмауэра" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "Среда" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "Дни недели" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "XOR метка брандмауэра" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "XOR метка" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "Зона ⇒ Перенаправления" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Зоны" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "принимать" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "любой" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "любая зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "применить метку брандмауэра" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "назначить помощника отслеживания соединений" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "день" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "не перезаписывать" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "не отслеживать" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "не обрабатывать" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "час" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "минута" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "отвергать" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "секунда" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "это устройство" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "эта новая зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "без ограничений" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "не определено" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "верная метка брандмауэра" + +#~ msgid "%s in %s" +#~ msgstr "%s в %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s с %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s в %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d пакетов за %s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "" +#~ "%d пакетов за %s, подряд %d пакетов" + +#~ msgid "%s and limit to %s" +#~ msgstr "%s с пределом в %s" + +#~ msgid "Accept forward" +#~ msgstr "Принимать перенаправляемый трафик" + +#~ msgid "Accept input" +#~ msgstr "Принимать входящий трафик" + +#~ msgid "Accept output" +#~ msgstr "Принимать исходящий трафик" + +#~ msgid "Destination IP address" +#~ msgstr "IP-адрес назначения" + +#~ msgid "Discard forward" +#~ msgstr "Отклонять перенаправляемый трафик" + +#~ msgid "Discard input" +#~ msgstr "Отклонять входящий трафик" + +#~ msgid "Discard output" +#~ msgstr "Отклонять исходящий трафик" + +#~ msgid "Do not rewrite" +#~ msgstr "Не перезаписывать" + +#~ msgid "Do not track forward" +#~ msgstr "Не отслеживать перенаправляемый трафик" + +#~ msgid "Do not track input" +#~ msgstr "Не отслеживать входящий трафик" + +#~ msgid "Do not track output" +#~ msgstr "Не отслеживать исходящий трафик" + +#~ msgid "Forward to" +#~ msgstr "Перенаправлять на" + +#~ msgid "From %s in %s" +#~ msgstr "Из %s в %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "Из %s в %s с источником %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "Из %s в %s с источниками %s и %s" + +#~ msgid "From %s on this device" +#~ msgstr "Из %s в это устройство" + +#~ msgid "From %s on this device with source %s" +#~ msgstr "Из %s в это устройство с источником %s" + +#~ msgid "From %s on this device with source %s and %s" +#~ msgstr "Из %s в это устройство с источниками %s and %s" + +#~ msgid "From %{ipaddr?:any host} %{port?with source %{port}}" +#~ msgstr "Из %{ipaddr?:любой хост} %{port?с источником %{port}}" + +#~ msgid "IP" +#~ msgstr "IP-адрес" + +#~ msgid "IP range" +#~ msgstr "Диапазон IP-адресов" + +#~ msgid "IPs" +#~ msgstr "IP-адреса" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "MACs" +#~ msgstr "MAC-адреса" + +#~ msgid "" +#~ "Match %{protocol?%{family} %{protocol} traffic:any %{family} traffic} " +#~ "%{mark?with firewall mark %{mark}} %{limit?limited to %{limit}}" +#~ msgstr "" +#~ "Соответствует %{protocol?%{family} %{protocol} трафику:любому %{family} " +#~ "трафику} %{mark?с меткой брандмауэра %{mark}}" + +#~ msgid "Network" +#~ msgstr "Сеть" + +#~ msgid "Refuse forward" +#~ msgstr "Сбрасывать перенаправляемый трафик" + +#~ msgid "Refuse input" +#~ msgstr "Сбрасывать входящий трафик" + +#~ msgid "Refuse output" +#~ msgstr "Сбрасывать исходящий трафик" + +#~ msgid "Rewrite to" +#~ msgstr "Перезаписать" + +#~ msgid "Rewrite to %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" +#~ msgstr "" +#~ "Перезаписать на %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" + +#~ msgid "Rewrite to outbound device IP" +#~ msgstr "Перезаписать на IP-адрес исходящего устройства" + +#~ msgid "To %s at %s on this device" +#~ msgstr "К %s, %s на этом устройстве" + +#~ msgid "To %s in %s" +#~ msgstr "К %s в %s" + +#~ msgid "To %s on this device" +#~ msgstr "К %s на этом устройстве" + +#~ msgid "To %s, %s in %s" +#~ msgstr "К %s, %s в %s" + +#~ msgid "" +#~ "To %{ipaddr?:any destination} %{port?at %{port}} %{zone?via zone %{zone}} " +#~ "%{device?egress device %{device}}" +#~ msgstr "" +#~ "На %{ipaddr?:любой адрес назначения} %{port?порт %{port}} %{zone?через " +#~ "зону %{zone}} %{device?исходящее устройство %{device}}" + +#~ msgid "Via %s" +#~ msgstr "Через %s" + +#~ msgid "Via %s at %s" +#~ msgstr "Через %s, %s" + +#~ msgid "any host" +#~ msgstr "любого хоста" + +#~ msgid "any router IP" +#~ msgstr "любой IP-адрес маршрутизатора" + +#~ msgid "not" +#~ msgstr "нет" + +#~ msgid "port" +#~ msgstr "порт" + +#~ msgid "ports" +#~ msgstr "порты" + +#~ msgid "type" +#~ msgstr "тип" + +#~ msgid "types" +#~ msgstr "типы" + +#~ msgid "Force connection tracking" +#~ msgstr "Принудительно включать отслеживание соединений" + +#~ msgid "" +#~ "Prevent the installation of NOTRACK rules which would bypass " +#~ "connection tracking." +#~ msgstr "" +#~ "Предотвратить установку NOTRACK правил, которые позволяют " +#~ "обходить отслеживание соединений (connection tracking)." + +#~ msgid "Disable" +#~ msgstr "Отключить" + +#~ msgid "Restart Firewall" +#~ msgstr "Перезапустить межсетевой экран" + +#~ msgid "Rule is disabled" +#~ msgstr "Правило отключено" + +#~ msgid "Rule is enabled" +#~ msgstr "Правило включено" + +#~ msgid "Add" +#~ msgstr "Добавить" + +#~ msgid "Add and edit..." +#~ msgstr "Добавить и редактировать..." + +#~ msgid "External zone" +#~ msgstr "Внешняя зона" + +#~ msgid "New SNAT rule" +#~ msgstr "Новое правило SNAT" + +#~ msgid "New forward rule" +#~ msgstr "Новое правило перенаправления" + +#~ msgid "New input rule" +#~ msgstr "Новое правило для входящего трафика" + +#~ msgid "New port forward" +#~ msgstr "Новое перенаправление порта" + +#~ msgid "New source NAT" +#~ msgstr "Новый SNAT" + +#~ msgid "Open ports on router" +#~ msgstr "Открыть порты на маршрутизаторе" + +#~ msgid "Other..." +#~ msgstr "Другое..." + +#~ msgid "To source IP" +#~ msgstr "К IP-адресу источника" + +#~ msgid "To source port" +#~ msgstr "К порту источника" + +#~ msgid "Output zone" +#~ msgstr "Исходящая зона" diff --git a/luci-app-firewall/po/sk/firewall.po b/luci-app-firewall/po/sk/firewall.po new file mode 100644 index 000000000..492ae91ef --- /dev/null +++ b/luci-app-firewall/po/sk/firewall.po @@ -0,0 +1,1103 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2020-04-04 17:34+0000\n" +"Last-Translator: Dušan Kazik \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Akcia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Pokročilé nastavenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "Obsah bol uložený." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "Pokračovať" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Cieľová zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "Očakáva sa: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Brána Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Všeobecné nastavenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "Iba IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Názov" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "Nie je možné uložiť obsah: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "neobmedzené" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "neurčené" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "MAC" +#~ msgstr "MAC" diff --git a/luci-app-firewall/po/sv/firewall.po b/luci-app-firewall/po/sv/firewall.po new file mode 100644 index 000000000..9df7a0926 --- /dev/null +++ b/luci-app-firewall/po/sv/firewall.po @@ -0,0 +1,1246 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2020-01-14 15:22+0000\n" +"Last-Translator: Franco Castillo \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Åtgärd" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Avancerade inställningar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Tillåt vidarebefordring från källzonerna:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Till vidarebefordring till destinationszonerna::" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Något" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "Innehåll har sparats." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Nätverk som omfattas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Anpassade regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Destinationens adress" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Destinationsport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Destinationens zon" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Släpp ogiltiga paket" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Aktivera" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Aktivera loggning i den här zonen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Extern IP-adress" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Extern port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Extra argument" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Brandvägg" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Brandvägg - Anpassade regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Brandvägg - Vidarebefordring av port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Brandvägg - Trafikregler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Brandvägg - Zoninställningar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Vidarebefordra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "Fredag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Generella inställningar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 och IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "Endast IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "Endast IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Inmatning" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Intern IP-adress" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Intern port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Intern zon" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Begränsa loggmeddelanden" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Maskering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Matcha" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Matchar ICMP-typ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Matcha inkommande trafik dirigerad till den angivna destinationsporten eller " +"portens räckvidd på den här värden" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "Måndag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "Dagar i månaden" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Namn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" +"Matcha endast inkommande trafik från den här IP-adressen eller räckvidden." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Utmatning" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Vidarebefordringar av port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Protokoll" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Begränsa till adressfamilj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "Lördag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "IP-adress för källa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "MAC-adress för källa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Adress för källkod" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Startdatum (åååå-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Stopptid (åååå-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "Söndag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "Torsdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "Tid enligt UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Trafikregler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "Tisdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "Onsdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "Veckodagar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zoner" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "acceptera" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "något" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "alla zoner" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "spåra inte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "släpp" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "neka" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "%s in %s" +#~ msgstr "%s i %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s med %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%2, %s i %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d pkt. per %s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "%d pkt. per %s, brustna %d pkt." + +#~ msgid "%s and limit to %s" +#~ msgstr "%s och gränsen till %s" + +#~ msgid "Destination IP address" +#~ msgstr "Destinationens IP-adress" + +#~ msgid "Do not rewrite" +#~ msgstr "Skriv inte om igen" + +#~ msgid "Forward to" +#~ msgstr "Vidarebefordra till" + +#~ msgid "From %s in %s" +#~ msgstr "Från %s i %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "Från %s i %s med källa %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "Från %s i %s med källa %s och %s" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "Network" +#~ msgstr "Nätverk" + +#~ msgid "To %s at %s on this device" +#~ msgstr "Till %s vid %s på den här enheten" + +#~ msgid "To %s in %s" +#~ msgstr "Till %s i %s" + +#~ msgid "To %s on this device" +#~ msgstr "Till %s på den här enheten" + +#~ msgid "To %s, %s in %s" +#~ msgstr "Till %s, %s i %s" + +#~ msgid "Via %s" +#~ msgstr "Via %s" + +#~ msgid "any host" +#~ msgstr "alla värdar" + +#~ msgid "port" +#~ msgstr "port" + +#~ msgid "ports" +#~ msgstr "portar" + +#~ msgid "type" +#~ msgstr "typ" + +#~ msgid "Disable" +#~ msgstr "Inaktivera" + +#~ msgid "Restart Firewall" +#~ msgstr "Starta om brandvägg" + +#~ msgid "Add" +#~ msgstr "Lägg till" + +#~ msgid "Add and edit..." +#~ msgstr "Lägg till och redigera..." + +#~ msgid "External zone" +#~ msgstr "Extern zon" + +#~ msgid "New SNAT rule" +#~ msgstr "Ny SNAT-regel" + +#~ msgid "New forward rule" +#~ msgstr "Ny regel för vidarebefordring" + +#~ msgid "New input rule" +#~ msgstr "Ny inmatningsregel" + +#~ msgid "New port forward" +#~ msgstr "Ny vidarebefordring av port" + +#~ msgid "New source NAT" +#~ msgstr "Ny käll-NAT" + +#~ msgid "Open ports on router" +#~ msgstr "Öppna portar i router" + +#~ msgid "Other..." +#~ msgstr "Andra..." + +#~ msgid "(Unnamed Entry)" +#~ msgstr "(Namnlös post)" + +#~ msgid "(Unnamed Rule)" +#~ msgstr "(Namnlös regel)" + +#~ msgid "(Unnamed SNAT)" +#~ msgstr "(Namnlös SNAT)" + +#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgstr "" +#~ "Matcha vidarebefordrad trafik till den angivna destinationsporten eller " +#~ "portens räckvidd." + +#~ msgid "Rewrite to source %s" +#~ msgstr "Skriv om igen till källan %s" + +#~ msgid "SNAT IP address" +#~ msgstr "IP-adress för SNAT" + +#~ msgid "SNAT port" +#~ msgstr "SNAT-port" + +#~ msgid "Start Time (hh:mm:ss)" +#~ msgstr "Starttid (tt:mm:ss)" + +#~ msgid "Stop Time (hh:mm:ss)" +#~ msgstr "Stopptid (tt:mm:ss)" + +#~ msgid "Zone %q" +#~ msgstr "Zon %q" + +#~ msgid "traffic" +#~ msgstr "trafik" diff --git a/luci-app-firewall/po/templates/firewall.pot b/luci-app-firewall/po/templates/firewall.pot new file mode 100644 index 000000000..f5f97c59a --- /dev/null +++ b/luci-app-firewall/po/templates/firewall.pot @@ -0,0 +1,1086 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/tr/firewall.po b/luci-app-firewall/po/tr/firewall.po new file mode 100644 index 000000000..0f934366f --- /dev/null +++ b/luci-app-firewall/po/tr/firewall.po @@ -0,0 +1,1103 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2020-01-14 15:22+0000\n" +"Last-Translator: Franco Castillo \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Eylem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "MAC" +#~ msgstr "MAC" diff --git a/luci-app-firewall/po/uk/firewall.po b/luci-app-firewall/po/uk/firewall.po new file mode 100644 index 000000000..b6fea811a --- /dev/null +++ b/luci-app-firewall/po/uk/firewall.po @@ -0,0 +1,1435 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"PO-Revision-Date: 2020-02-19 13:41+0000\n" +"Last-Translator: Yurii Petrashko \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 3.11\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Переспрямовування:Вхідний}:Вихідний} %{ipv6?%{ipv4?IPv4 та IPv6:IPv6}:IPv4}%{proto?, протокол " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP із типами %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, позначка %{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, помічник %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "-- додати IP-адресу --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "-- додати MAC-адресу --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Приймати %{src?%{dest?переспрямований:" +"вхідний}:вихідний} трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "Запобігати перезапису джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Переспрямовувати на %{dest}%{dest_ip? IP-" +"адресу %{dest_ip}}%{dest_port? порт %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Відхиляти %{src?%{dest?переспрямований:" +"вхідний}:вихідний} трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Призначити DSCP класифікатор " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" +"Призначити помічника відслідковування " +"з'єднань %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Призначити мітку:XOR мітки} " +"брандмауера %{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" +"Автоматично перезаписувати IP-адресу " +"джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Не відслідковувати %{src?%{dest?" +"переспрямований:вхідний}:вихідний} трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Відхиляти %{src?%{dest?переспрямований:" +"вхідний}:вихідний} трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Статично перезаписувати %{snat_ip?IP-адресу " +"джерела на %{snat_ip}} %{snat_port?порт джерела на " +"%{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "Потрібно вказати IP-адресу для перезапису!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT — Вимкнути перезапис адреси" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Дія" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Додаткові аргументи raw iptables для класифікації трафіку " +"призначення зони, наприклад, -p tcp --dport 443, щоб зіставляти " +"лише вихідний трафік HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Додаткові аргументи raw iptables для класифікації трафіку джерела " +"зони, наприклад, -p tcp --sport 443, щоб зіставляти лише " +"вхідний трафік HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "Додаткові параметри" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "Дозволити \"неправильний\" трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "Дозволити переспрямовування від зон джерела:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "Дозволити переспрямовування до зон призначення:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "Будь-який" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "Будь-який день" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Застосувати побітове XOR заданого та наявного значень мітки для вже " +"встановлених з'єднань. Формат — значення[/маска]. Якщо маску вказано, то " +"біти, встановлені в масці, обнуляються." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Застосувати заданий клас або значення DSCP до встановлених з'єднань." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Призначити вказаного помічника відслідковування з'єднань для відповідного " +"трафіку." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "Автоматичне призначення помічника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Автоматично призначати помічників відслідковування з'єднань (Conntrack) на підставі протоколу та порту " +"трафіку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" +"Параметри відслідковування з'єднань (Conntrack)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" +"Помічники відслідковування з'єднань (Conntrack)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "Вміст збережено." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "Продовжити" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "Охоплені пристрої" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "Охоплені мережі" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "Охоплені підмережі" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "Настроювані правила" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Настроювані правила дозволяють виконувати довільні команди iptables, які в іншому випадку не охоплено в межах брандмауера. Команди " +"виконуються після кожного перезавантаження брандмауера, відразу після " +"завантаження типового набору правил." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "класифікація DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "Позначка DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "Потрібна позначка DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Адреса призначення" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Порт призначення" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "Зона призначення" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "Назва пристрою" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Не встановлювати додаткові правила для відхилення переспрямованого трафіку " +"зі станом відслідковування з'єднань invalid. Це може знадобитися " +"для складних налаштувань асиметричного маршруту." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Відхиляти помилкові пакети" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Увімкнути" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "Увімкнути NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "Увімкнути захист від SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "Увімкнути реєстрування у цій зоні" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "Очікується: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "Експериментальна функція. Не повністю сумісно з QoS / SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"В явному вигляді дозволені помічники відслідковування з'єднань для трафіку " +"зони" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "Зовнішня IP-адреса" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "Зовнішній порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "Додаткові аргументи" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "Додаткові аргументи для призначення" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "Додаткові аргументи iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "Додаткові аргументи для джерела" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Брандмауер" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "Брандмауер — Настроювані правила" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "Брандмауер — Правила NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "Брандмауер — Переспрямовування портів" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "Брандмауер — Правила трафіку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "Брандмауер — Параметри зон" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "Переміщення конфігурації брандмауера" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "Переспрямовування" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" +"Переспрямовування IPv4%{proto?, протокол %{proto#%{next?, }%{item.name}" +"}}%{mark?, позначка %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "П'ятниця" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Із %{src}%{src_device?, інтерфейс %{src_device}}%{src_ip?, IP-" +"адреса %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Із %{src}%{src_device?, інтерфейс %{src_device}}%{src_ip?, IP-" +"адреса %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC-адреса %{src_mac#" +"%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Із %{src}%{src_ip?, IP-адреса %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC-адреса %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "Загальні параметри" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "Апаратні засоби розвантаження потоку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 та IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "Лише IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "Лише IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "Вхідний пристрій" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Вхідний IPv4%{proto?, протокол %{proto#%{next?, }%{item.types?%{item.name}ICMP із " +"типами %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, позначка %{mark.val}}%{helper?, помічник " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Вхідний трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "Внутрішня IP-адреса" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "Внутрішній порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "Внутрішня зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "Неприпустима позначка DHCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "Неприпустиме значення обмеження" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "Обмеження блоку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "Обмеження повідомлень журналу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "Обмеження зіставляння" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Обмеження зіставляння до %{limit.num} пакетів на %{limit." +"unit}%{limit.burst? блок %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "Обмеження зіставляння трафіку із вказаною швидкістю." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "IP-адреса джерела зворотної петлі" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" +"MASQUERADE - Автоматично переписувати на IP-адресу вихідного інтерфейсу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "Обмежування MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "Підміна" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "Зіставляти" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "Зіставляти DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "Зіставляти ICMP типу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "Зіставляти пристрою" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" +"Зіставляння переспрямованого трафіку, спрямованого на вказану IP-адресу." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Зіставляння переспрямованого трафіку, спрямованого на вказаний порт " +"призначення або діапазон портів." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "Зіставляння переспрямованого трафіку від цієї IP-адреси або діапазону." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Зіставляння переспрямованого трафіку, що походить із заданого порту джерела " +"або діапазону портів." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "Зіставляти помічнику" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Зіставляти вхідний трафік, спрямований на заданий порт призначення або " +"діапазон портів цього вузла" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "Зіставляти позначці" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Зіставляти трафік за допомогою вказаного помічника відслідковування з'єднань." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Зіставляти вказаній позначці брандмауера або діапазону різних позначок." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Зіставляння переспрямованого трафіку за допомогою вказаного вихідного " +"мережевого пристрою." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Зіставляти трафік із вказаною позначкою DSCP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Максимальна початкова кількість пакетів, що зіставляються: це число " +"збільшується на одиницю щоразу, коли вказане вище обмеження не досягнуто, аж " +"до цього числа." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "Понеділок" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "Дні місяця" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "Правила NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Правила NAT дозволяють тонко контролювати IP-адресу джерела, що " +"використовується для вихідного чи переспрямованого трафіку." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "Назва" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Зіставляти тільки вхідний трафік, спрямований на вказану IP-адресу." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "Зіставляти тільки вхідний трафік від цих MAC-адрес." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "Зіставляти тільки вхідний трафік від цього IP чи діапазону." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Зіставляти тільки вхідний трафік, що виникає на заданому порту джерела або " +"діапазоні портів вузла клієнта" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "Вихідний пристрій" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "Вихідна зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Вихідний трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"Передавання додаткових аргументів для IPTables. Використовуйте з обережністю!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Передавання аргументів raw iptables до правил класифікації вихідного трафіку " +"та трафіку призначення дозволяє зіставляти пакети на підставі інших " +"критеріїв, ніж інтерфейси чи підмережі. Ці параметри слід використовувати з " +"особливою обережністю, оскільки невірні значення можуть призвести до " +"порушення набору правил брандмауера, повністю відкриваючи всі служби." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "Переспрямовування портів" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Переспрямовування портів дозволяє віддаленим комп'ютерам з Інтернету " +"підключатися до певного комп'ютера або служби у приватній мережі." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Протокол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Переспрямувати відповідний вхідний трафік на заданий порт внутрішнього вузла" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Переспрямувати відповідний вхідний трафік на заданий внутрішній вузол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "Необхідна апаратна підтримка NAT. Упроваджено принаймні для mt7621" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Обмежити підміну заданими підмережами призначення" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "Обмежити підміну заданими підмережами джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "Обмежити сімейство протоколів" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "IP-адреса для перезапису" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Перезаписати відповідний трафік на вказану IP-адресу джерела." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Перезаписати відповідний трафік на вказаний порт джерела або діапазон портів." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "Порт для перезапису" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "Розвантаження маршрутизації/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Перезаписати на вказану IP-адресу джерела або порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "Субота" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "Установити позначку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Встановіть задане значення позначки для встановлених з'єднаннях. Формат — " +"значення[/маска]. Якщо вказано маску, то змінюються лише ті біти, які " +"встановлені в масці." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "Програмне розвантаження для маршрутизації/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "Програмне розвантаження потоку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "IP-адреса джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "MAC-адреса джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "Адреса джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Порт джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "Зона джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Визначає, чи слід прив'язувати це правило трафіку до певного вхідного або " +"вихідного мережевого пристрою." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Визначає, чи використовувати зовнішню або внутрішню IP-адресу для відбитого " +"трафіку." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Дата початку (рррр-мм-дд)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "Час початку (гг:хх:сс)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Дата зупинки (рррр-мм-дд)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "Час зупинки (гг:хх:сс)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "Неділя" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Для належного функціонування LuCI потрібно змінити існуючу конфігурацію " +"брандмауера." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Брандмауер створює зони поверх ваших мережевих інтерфейсів для управління " +"потоком мережевого трафіку." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Опції, наведені нижче, керують політиками переспрямовування між цією (%s) та " +"іншими зонами. Зони призначення покриваються переспрямованим " +"трафіком, що виходить з %q. Зони джерела " +"покриваються трафіком з інших зон, переспрямованим на %q. " +"Правило переспрямовування є односпрямованим, тобто, спрямовування " +"від LAN до WAN не означає, що є також дозвіл спрямовувати від WAN " +"до LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Цей розділ визначає загальні властивості %q. Параметри вхідний і " +"вихідний задають типову політику для трафіку на вході й виході з " +"цієї зони, а параметр переспрямовування описує політику " +"спрямовування трафіку між різними мережами в межах зони. Пункт Покриті " +"мережі визначає, які доступні мережі є членами цієї зони." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "Четвер" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "Часові обмеження" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "Час в UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"До %{dest}%{dest_device?, інтерфейс %{dest_device}}%{dest_ip?, IP-" +"адреса %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"До %{dest}%{dest_device?, через інтерфейс %{dest_device}}%{dest_ip?, IP-адреса %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"До %{dest}%{dest_ip?, IP-адреса %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "Помічник відслідковування" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "Правила трафіку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"Правила трафіку визначають політику для пакетів, що пересилаються між " +"різними зонами, наприклад, відхиляти трафік між певними вузлами або відкрити " +"порти WAN на маршрутизаторі." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "Вівторок" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "Не вдалося зберегти вміст: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" +"Невідомий або не інстальований помічник відслідковування з'єднань \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "NAT без назви" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "Переспрямовування без назви" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "Правило без назви" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "Зона без назви" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "Нерозпізнаний протокол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Після натискання кнопки \"Продовжити\" розділи \"redirect\" з цільовою \"SNAT" +"\" буде перетворено на розділи \"nat\", і брандмауер буде перезапущено для " +"застосування оновленої конфігурації." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "Використовувати зовнішню IP-адресу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "Використовувати внутрішню IP-адресу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Використовуйте цей параметр для класифікації трафіку зон за мережевими " +"пристроями raw, які не управляються через uci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Використовуйте цей параметр для класифікації трафіку зон за підмережею " +"джерела чи призначення замість мереж або пристроїв." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "Потрібна дійсна позначка брандмауера" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "Середа" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "Дні тижня" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "XOR позначки брандмауера" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "XOR позначки" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "Зона ⇒ Переспрямовування" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Зони" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "приймати" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "будь-який" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "будь-якої зони" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "застосувати позначку брандмауера" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "призначити помічника відслідковування з'єднань" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "день" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "не переписувати" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "не відстежувати" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "опускати" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "година" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "хвилина" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "відхиляти" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "секунду" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "цього пристрою" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "ця нова зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "необмежено" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "невизначено" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "дійсна розначка брандмауера" + +#~ msgid "%s in %s" +#~ msgstr "%s у %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s із %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s у %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d пакетів за %s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "" +#~ "%d пакетів за %s, підряд %d пакетів" + +#~ msgid "%s and limit to %s" +#~ msgstr "%s з лімітом %s" + +#~ msgid "Accept forward" +#~ msgstr "Приймати переспрямовування" + +#~ msgid "Accept input" +#~ msgstr "Приймати вхідний" + +#~ msgid "Accept output" +#~ msgstr "Приймати вихідний" + +#~ msgid "Discard forward" +#~ msgstr "Відкидати переспрямовування" + +#~ msgid "Discard input" +#~ msgstr "Відкидати вхідний" + +#~ msgid "Discard output" +#~ msgstr "Відкидати вихідний" + +#~ msgid "Do not track forward" +#~ msgstr "Не відслідковувати переспрямовування" + +#~ msgid "Do not track input" +#~ msgstr "Не відслідковувати вхідний" + +#~ msgid "Do not track output" +#~ msgstr "Не відслідковувати вихідний" + +#~ msgid "Forward to" +#~ msgstr "переспрямовування до" + +#~ msgid "From %s in %s" +#~ msgstr "%s у %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "%s у %s з джерелом %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "%s у %s з джерелом %s та %s" + +#~ msgid "From %s on this device" +#~ msgstr "Від %s на цьому пристрої" + +#~ msgid "From %s on this device with source %s" +#~ msgstr "Від %s на цьому пристрої з джерелом %s" + +#~ msgid "From %s on this device with source %s and %s" +#~ msgstr "Від %s на цьому пристрої з джерелом %s та %s" + +#~ msgid "IP" +#~ msgstr "IP-адреса" + +#~ msgid "IP range" +#~ msgstr "Діапазон IP" + +#~ msgid "IPs" +#~ msgstr "IP-адреси" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC-адреса" + +#~ msgid "MACs" +#~ msgstr "MAC-адреси" + +#~ msgid "Network" +#~ msgstr "Мережа" + +#~ msgid "Refuse forward" +#~ msgstr "Відхиляти переспрямовування" + +#~ msgid "Refuse input" +#~ msgstr "Відхиляти вхідний" + +#~ msgid "Refuse output" +#~ msgstr "Відхиляти вихідний" + +#~ msgid "To %s at %s on this device" +#~ msgstr "%s на %s цього пристрою" + +#~ msgid "To %s in %s" +#~ msgstr "%s у %s" + +#~ msgid "To %s on this device" +#~ msgstr "%s на цього пристрою" + +#~ msgid "To %s, %s in %s" +#~ msgstr "%s, %s у %s" + +#~ msgid "Via %s" +#~ msgstr "Через %s" + +#~ msgid "Via %s at %s" +#~ msgstr "Через %s на %s" + +#~ msgid "any host" +#~ msgstr "будь-який вузол" + +#~ msgid "any router IP" +#~ msgstr "будь-який IP роутера" + +#~ msgid "not" +#~ msgstr "не" + +#~ msgid "port" +#~ msgstr "порт" + +#~ msgid "ports" +#~ msgstr "порти" + +#~ msgid "type" +#~ msgstr "типом" + +#~ msgid "types" +#~ msgstr "типами" + +#~ msgid "Force connection tracking" +#~ msgstr "Примусове відслідковування з'єднань" + +#~ msgid "" +#~ "Prevent the installation of NOTRACK rules which would bypass " +#~ "connection tracking." +#~ msgstr "" +#~ "Запобігати встановленню правил NOTRACK, які могли б обійти " +#~ "відслідковування з'єднань." + +#~ msgid "Disable" +#~ msgstr "Вимкнути" + +#~ msgid "Restart Firewall" +#~ msgstr "Перезавантажити брандмауер" + +#~ msgid "Rule is disabled" +#~ msgstr "Правило вимкнено" + +#~ msgid "Rule is enabled" +#~ msgstr "Правило ввімкнено" diff --git a/luci-app-firewall/po/vi/firewall.po b/luci-app-firewall/po/vi/firewall.po new file mode 100644 index 000000000..217eafe70 --- /dev/null +++ b/luci-app-firewall/po/vi/firewall.po @@ -0,0 +1,1117 @@ +# luci-fw.pot +# generated from ./applications/luci-fw/luasrc/i18n/luci-fw.en.lua +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-01-14 15:22+0000\n" +"Last-Translator: Franco Castillo \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "Hành động" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "Địa chỉ điểm đến" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "Cổng điểm đến" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#, fuzzy +msgid "Destination zone" +msgstr "Điểm đến" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "Bỏ qua nhưng gói không hợp lý" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "Kích hoạt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#, fuzzy +msgid "Enable SYN-flood protection" +msgstr "SYN-flood bảo vệ " + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "External port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "Input" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#, fuzzy +msgid "Internal IP address" +msgstr "Internal address" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#, fuzzy +msgid "Internal port" +msgstr "External port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#, fuzzy +msgid "MSS clamping" +msgstr "MSS Clamping" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "Output" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "Giao thức" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#, fuzzy +msgid "Source IP address" +msgstr "Đỉa chỉ MAC nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#, fuzzy +msgid "Source address" +msgstr "Đỉa chỉ MAC nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "Cổng nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#, fuzzy +msgid "Source zone" +msgstr "Cổng nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"The firewall tạo zones trên giao diện mạng lưới để điều triển sự dòng lưu " +"thông của mạng." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "Zones" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "chấp nhận" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "drop" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "Không chấp nhận" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "MAC" +#~ msgstr "MAC" diff --git a/luci-app-firewall/po/zh_Hans/firewall.po b/luci-app-firewall/po/zh_Hans/firewall.po new file mode 100644 index 000000000..54366b246 --- /dev/null +++ b/luci-app-firewall/po/zh_Hans/firewall.po @@ -0,0 +1,1483 @@ +# +# Yangfl , 2017, 2018. +# Zheng Qian , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"PO-Revision-Date: 2020-02-19 20:00+0000\n" +"Last-Translator: xiazhang \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.11\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?转发:入站}:出站} %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:IPv4}%{proto?, 协议 %{proto#" +"%{next?, }%{item.types?%{item.name}" +"具有类型 %{item.types#%{next?, }%{item}} 的 ICMP:%{item.name}}}}%{mark?, 标记 %{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, 助手 %{helper.inv?%{helper.val}:" +"%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "-- 添加 IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "-- 添加 MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "接受 %{src?%{dest?转发:入站}:出站}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "防止重写源" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"转发 至 %{dest}%{dest_ip? IP %{dest_ip}" +"}%{dest_port? 端口 %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "丢弃 %{src?%{dest?转发:入站}:出站}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "分配 DSCP 分类 %{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" +"分配 conntrack 助手 %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?分配:异或} 防火墙标记 " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "自动重写 源 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"不跟踪 %{src?%{dest?转发:入站}:出站}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "拒绝 %{src?%{dest?转发:入站}:出站}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"静态重写 到源 %{snat_ip?IP %{snat_ip}} %{snat_port?端口 %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "必须指定重写 IP!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "接受 - 禁用地址重写" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "动作" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"附加 iptables 参数对区域出流量分类。如:-p tcp --dport 443 仅匹配出站 HTTPS 流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"附加 iptables 参数对区域入流量分类。如:-p tcp --sport 443 仅匹配入站 HTTPS 流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "高级设置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "允许“无效”流量" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "允许来自源区域的转发:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "允许转发到目标区域:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "任何" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "每天" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"在已建立的连接上对给定值和现有标记值进行按位异或。格式为 value[/mask]。如果指" +"定了掩码,则掩码中设置的位将归零。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "将给定的 DSCP 类或值应用于已建立的连接。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "将指定的连接跟踪助手分配给匹配的流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "自动助手分配" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "根据流量协议和端口自动分配 conntrack 助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "Conntrack 设置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "Conntrack 助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "内容已保存。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "继续" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "涵盖的设备" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "涵盖的网络" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "涵盖的子网" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "自定义规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"自定义规则允许您执行不属于防火墙框架的任意 iptables 命令。每次重启防火墙时," +"在默认的规则运行后这些命令将立即执行。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "DSCP 类别" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "DSCP 标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "需要 DSCP 标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "目标地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "目标端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "目标区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "设备名称" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"不安装额外的规则以拒绝 conntrack 状态为无效的转发流量。对复杂的非对" +"称路由这可能是必需的设置。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "丢弃无效数据包" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "启用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "启用 NAT 环回" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "启用 SYN-flood 防御" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "启用此区域的日志记录" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "需要:%s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "实验特性。与 QoS/SQM 不完全兼容。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "为区域流量明确选择允许的连接跟踪助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "外部 IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "外部端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "额外参数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "额外的目标参数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "额外的 iptables 参数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "额外的源参数" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "防火墙" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "防火墙 - 自定义规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "防火墙 - NAT 规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "防火墙 - 端口转发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "防火墙 - 通信规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "防火墙 - 区域设置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "防火墙配置迁移" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "转发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" +"转发的 IPv4%{proto?, 协议 %{proto#%{next?, }%{item.name}}}%{mark?, 标记 %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "星期五" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"来自 %{src}%{src_device?, 接口 %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, 端口 %{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"来自 %{src}%{src_device?, 接口 %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, 端口 %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"来自 %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, 端口 " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "常规设置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "硬件流量分载" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 和 IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "仅 IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "仅 IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "入站设备" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"入站 IPv4%{proto?, 协议 %{proto#%{next?, }%{item.types?%{item.name}具有类型 %{item." +"types#%{next?, }%{item}} 的 ICMP:%{item.name}}}}%{mark?, 标记 %{mark.val}}%{helper?, 助手 " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "入站数据" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "内部 IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "内部端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "内部区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "无效的 DSCP 标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "无效的限制值" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "限制突发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "限制日志信息" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "限制匹配" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"限制匹配到 %{limit.num} 包每 %{limit.unit}%{limit." +"burst? 突发 %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "将流量匹配限制为指定的速率。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "环回源 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - 自动重写为出站接口 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "MSS 钳制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "IP 动态伪装" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "匹配规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "匹配 DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "匹配 ICMP 类型" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "匹配设备" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "匹配指向给定 IP 地址的转发流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "匹配指向给定目标端口或端口范围的转发流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "匹配来自此 IP 或范围的转发流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "匹配来自给定源端口或端口范围的转发流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "匹配助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "匹配指向此主机上指定目标端口或目标端口范围的入站流量" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "匹配标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "使用指定的连接跟踪助手匹配流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "匹配特定的防火墙标记或不同标记的范围。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "使用指定的出站网络设备匹配转发的流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "匹配承载指定 DSCP 标记的流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "要匹配的最大初始数据包数:未达到上述指定限制时,每次加一直到达到此数。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "星期一" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "日期" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "NAT 规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "NAT 规则允许对源 IP 进行精细控制,以用于出站或转发流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "名称" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "仅匹配指定目的 IP 地址的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "仅匹配来自这些 MAC 的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "仅匹配来自此 IP 或 IP 范围的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "仅匹配源自客户端主机上给定源端口或源端口范围的入站流量" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "出站设备" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "出站区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "出站数据" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "传递到 iptables 的额外参数。小心使用!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"通过将 iptables 参数传递给源和目标流量的分类规则,可以根据接口或子网以外的其" +"他条件来匹配数据包。使用这些选项应格外小心,因为无效值可能会破坏防火墙规则集" +"而对外暴露所有服务。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "端口转发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"端口转发允许 Internet 上的远程计算机连接到内部网络中的特定计算机或服务。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "协议" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "重定向匹配的入站流量到内部主机的端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "重定向匹配的入站流量到指定的内部主机" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "需要硬件 NAT 支持。目前 mt7621 已实现" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "要限制 IP 动态伪装的目标子网" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "要限制 IP 动态伪装的源子网" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "限制地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "重写 IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "将匹配的流量重写到指定的源 IP 地址。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "将匹配的流量重写到指定的源端口或端口范围。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "重写端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "Routing/NAT 分载" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - 重写为特定的源 IP 或端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "星期六" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "设置标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"在已建立的连接上设置给定的标记值。格式为 value[/mask]。如果指定了掩码,则仅修" +"改掩码中设置的位。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "基于软件的 Routing/NAT 分载" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "软件流量分载" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "源 IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "源 MAC 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "源地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "源端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "源区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "指定是否将此流量规则绑定到特定的入站或出站网络设备。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "指定是使用外部 IP 地址还是内部 IP 地址来反映流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "开始日期(yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "开始时间(hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "停止日期(yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "停止时间(hh.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "星期日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "需要更改现有的防火墙配置,以使 LuCI 正常运行。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "防火墙通过在网络接口上创建区域来控制网络流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"以下选项控制此区域(%s)和其它区域间的转发策略。目标区域接收" +"源自 %q 的转发流量。源区域匹配的转发流量来自目标为 " +"%q 的其它区域。转发规则的作用是单向的,例如:转发从 lan 到 " +"wan 的流量并意味着允许反向转发从 wan 到 lan 的流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"本节定义 %q 的通用属性。入站数据出站数据选项用于设置此区" +"域入站和出站流量的默认策略,转发选项描述该区域内不同网络之间的流量转" +"发策略。涵盖的网络指定从属于这个区域的网络。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "星期四" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "时间限制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "UTC 时间" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"到 %{dest}%{dest_device?, 接口 %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, 端口 %{dest_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"到 %{dest}%{dest_device?, 通过接口 %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, 端口 %{dest_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"到 %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, 端" +"口 %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "跟踪助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "通信规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"通信规则定义了不同区域间的数据包传输策略,例如:拒绝一些主机之间的通信,开放" +"路由器 WAN 上的端口。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "星期二" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "无法保存内容:%s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "未知或未安装的 conntrack 助手 \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "未命名 NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "未命名转发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "未命名规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "未命名区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "无法识别的协议" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"按下“继续”后,目标“SNAT”的“redirect”部分将转换为“nat”部分,防火墙将重新启动以" +"应用更新的配置。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "使用外部 IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "使用内部 IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "此选项可对原始的、非 uci 托管的网络设备进行区域流量分类。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "此选项可对源或目标子网而非网络或设备进行区域流量分类。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "需要有效的防火墙标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "星期三" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "星期" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "异或防火墙标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "异或标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "区域 ⇒ 转发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "接受" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "任意" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "所有区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "应用防火墙标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "分配连接跟踪助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "不重写" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "不跟踪" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "丢弃" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "小时" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "分钟" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "拒绝" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "秒" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "此设备" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "此新区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "无限制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "未指定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "有效的防火墙标记" + +#~ msgid "%s in %s" +#~ msgstr "%s 位于 %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s 和 %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s 位于 %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d 数据包/%s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "%d 数据包/%s,突发 %d 数据包。" + +#~ msgid "%s and limit to %s" +#~ msgstr "%s 并限制到 %s" + +#~ msgid "Accept forward" +#~ msgstr "接受转发" + +#~ msgid "Accept input" +#~ msgstr "接受入站" + +#~ msgid "Accept output" +#~ msgstr "接受出站" + +#~ msgid "Destination IP address" +#~ msgstr "目标 IP 地址" + +#~ msgid "Discard forward" +#~ msgstr "丢弃转发" + +#~ msgid "Discard input" +#~ msgstr "丢弃入站" + +#~ msgid "Discard output" +#~ msgstr "丢弃出站" + +#~ msgid "Do not rewrite" +#~ msgstr "不重写" + +#~ msgid "Do not track forward" +#~ msgstr "不跟踪转发" + +#~ msgid "Do not track input" +#~ msgstr "不跟踪入站" + +#~ msgid "Do not track output" +#~ msgstr "不跟踪出站" + +#~ msgid "Forward to" +#~ msgstr "转发到" + +#~ msgid "From %s in %s" +#~ msgstr "来自 %s 位于 %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "来自 %s 位于 %s 源于 %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "来自 %s 位于 %s 源端口 %s 源 MAC %s" + +#~ msgid "From %s on this device" +#~ msgstr "来自 %s 位于本设备" + +#~ msgid "From %s on this device with source %s" +#~ msgstr "来自 %s 位于本设备源于 %s" + +#~ msgid "From %s on this device with source %s and %s" +#~ msgstr "来自 %s 位于本设备源端口 %s 源 MAC %s" + +#~ msgid "IP" +#~ msgstr "IP" + +#~ msgid "IP range" +#~ msgstr "IP 范围" + +#~ msgid "IPs" +#~ msgstr "IP" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "MACs" +#~ msgstr "MAC" + +#~ msgid "Network" +#~ msgstr "网络" + +#~ msgid "Refuse forward" +#~ msgstr "拒绝转发" + +#~ msgid "Refuse input" +#~ msgstr "拒绝入站" + +#~ msgid "Refuse output" +#~ msgstr "拒绝出站" + +#~ msgid "To %s at %s on this device" +#~ msgstr "到 %s 在 %s 位于本设备" + +#~ msgid "To %s in %s" +#~ msgstr "到 %s 位于 %s" + +#~ msgid "To %s on this device" +#~ msgstr "到 %s 位于本设备" + +#~ msgid "To %s, %s in %s" +#~ msgstr "到 %s, %s 位于 %s" + +#~ msgid "Via %s" +#~ msgstr "通过 %s" + +#~ msgid "Via %s at %s" +#~ msgstr "通过 %s 在 %s" + +#~ msgid "any host" +#~ msgstr "所有主机" + +#~ msgid "any router IP" +#~ msgstr "所有路由 IP" + +#~ msgid "not" +#~ msgstr "非" + +#~ msgid "port" +#~ msgstr "端口" + +#~ msgid "ports" +#~ msgstr "端口" + +#~ msgid "type" +#~ msgstr "类型" + +#~ msgid "types" +#~ msgstr "类型" + +#~ msgid "Force connection tracking" +#~ msgstr "强制连接追踪" + +#~ msgid "" +#~ "Prevent the installation of NOTRACK rules which would bypass " +#~ "connection tracking." +#~ msgstr "防止安装 NOTRACK 规则,该规则会绕过连接跟踪。" + +#~ msgid "Disable" +#~ msgstr "禁用" + +#~ msgid "Restart Firewall" +#~ msgstr "重启防火墙" + +#~ msgid "Rule is disabled" +#~ msgstr "规则已禁用" + +#~ msgid "Rule is enabled" +#~ msgstr "规则已启用" + +#~ msgid "Add" +#~ msgstr "添加" + +#~ msgid "Add and edit..." +#~ msgstr "添加并编辑…" + +#~ msgid "External zone" +#~ msgstr "外部区域" + +#~ msgid "New SNAT rule" +#~ msgstr "新建 SNAT 规则" + +#~ msgid "New forward rule" +#~ msgstr "新建转发规则" + +#~ msgid "New input rule" +#~ msgstr "新建进入规则" + +#~ msgid "New port forward" +#~ msgstr "新建端口转发" + +#~ msgid "New source NAT" +#~ msgstr "新建 Source NAT" + +#~ msgid "Open ports on router" +#~ msgstr "打开路由器端口" + +#~ msgid "Other..." +#~ msgstr "其它..." + +#~ msgid "To source IP" +#~ msgstr "到源 IP" + +#~ msgid "To source port" +#~ msgstr "到源端口" + +#~ msgid "Output zone" +#~ msgstr "出站区域" + +#~ msgid "(Unnamed Entry)" +#~ msgstr "(未命名条目)" + +#~ msgid "(Unnamed Rule)" +#~ msgstr "(未命名规则)" + +#~ msgid "(Unnamed SNAT)" +#~ msgstr "(未命名 SNAT)" + +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "端口触发" + +#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgstr "匹配指定目标端口或目标端口范围的转发流量。" + +#~ msgid "" +#~ "Match incoming traffic originating from the given source port or port " +#~ "range on the client host." +#~ msgstr "匹配来自客户端主机上指定源端口或源端口范围的入站流量。" + +#~ msgid "Rewrite matched traffic to the given address." +#~ msgstr "将匹配流量的源地址改写成指定地址。" + +#~ msgid "" +#~ "Rewrite matched traffic to the given source port. May be left empty to " +#~ "only rewrite the IP address." +#~ msgstr "将匹配流量的源端口改写成指定端口。留空只改写 IP 地址。" + +#~ msgid "Rewrite to source %s" +#~ msgstr "源地址改写成 %s" + +#~ msgid "Rewrite to source %s, %s" +#~ msgstr "源地址改写成 %s, %s" + +#~ msgid "SNAT IP address" +#~ msgstr "SNAT IP 地址" + +#~ msgid "SNAT port" +#~ msgstr "SNAT 端口" + +#~ msgid "Source NAT" +#~ msgstr "Source NAT" + +#~ msgid "" +#~ "Source NAT is a specific form of masquerading which allows fine grained " +#~ "control over the source IP used for outgoing traffic, for example to map " +#~ "multiple WAN addresses to internal subnets." +#~ msgstr "" +#~ "Source NAT 是一种特殊形式的封包伪装,它允许精细的控制传出流量的源 IP,例" +#~ "如:将多个 WAN 地址映射到内部子网。" + +#~ msgid "Start Time (hh:mm:ss)" +#~ msgstr "开始时间(hh:mm:ss)" + +#~ msgid "Stop Time (hh:mm:ss)" +#~ msgstr "停止时间(hh:mm:ss)" + +#~ msgid "" +#~ "This page allows you to change advanced properties of the port forwarding " +#~ "entry. In most cases there is no need to modify those settings." +#~ msgstr "" +#~ "本页面可以更改端口转发的高级设置。大多数情况下,不需要更改这些设置。" + +#~ msgid "" +#~ "This page allows you to change advanced properties of the traffic rule " +#~ "entry, such as matched source and destination hosts." +#~ msgstr "本页面可以更改通信规则的高级设置,比如:需匹配的源主机和目标主机。" + +#~ msgid "Unnamed SNAT" +#~ msgstr "未命名 SNAT" + +#~ msgid "" +#~ "You may specify multiple by selecting \"-- custom --\" and then entering " +#~ "protocols separated by space." +#~ msgstr "您也可以选择“--自定义--”来定义多个协议,在多个协议间需加空格。" + +#~ msgid "Zone %q" +#~ msgstr "区域 %q" + +#~ msgid "traffic" +#~ msgstr "通信" diff --git a/luci-app-firewall/po/zh_Hant/firewall.po b/luci-app-firewall/po/zh_Hant/firewall.po new file mode 100644 index 000000000..ee55b1669 --- /dev/null +++ b/luci-app-firewall/po/zh_Hant/firewall.po @@ -0,0 +1,1385 @@ +# +# Yangfl , 2017, 2018. +# +msgid "" +msgstr "" +"PO-Revision-Date: 2020-02-25 23:11+0000\n" +"Last-Translator: Trevor \n" +"Language-Team: Chinese (Traditional) \n" +"Language: zh_Hant\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" +"%{next?, }%{item.types?%{item.name}" +"ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +msgid "-- add IP --" +msgstr "-- 新增 IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +msgid "-- add MAC --" +msgstr "-- 新增 MAC 位置 --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +msgid "" +"Assign conntrack helper %{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +msgid "Action" +msgstr "行動" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "Advanced Settings" +msgstr "進階設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Allow forward from source zones:" +msgstr "允許從源區域轉發:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +msgid "Allow forward to destination zones:" +msgstr "允許轉發到目標區域:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +msgid "Any" +msgstr "任何" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +msgid "Contents have been saved." +msgstr "內容已經儲存。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +msgid "Continue" +msgstr "繼續" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Covered networks" +msgstr "覆蓋網路" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "Custom Rules" +msgstr "自訂規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"自訂規則允許您執行不屬於防火牆框架的任意 iptables 指令。每次重啟防火牆時,在" +"預設的規則執行後這些指令將立即執行。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Destination address" +msgstr "目標位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +msgid "Destination port" +msgstr "目標埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +msgid "Destination zone" +msgstr "目標區域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +msgid "Device name" +msgstr "裝置名稱" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +msgid "Drop invalid packets" +msgstr "丟棄無效資料包" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +msgid "Enable" +msgstr "啟用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +msgid "Enable NAT Loopback" +msgstr "啟用 NAT 環回" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +msgid "Enable SYN-flood protection" +msgstr "啟用 SYN-flood 防禦" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +msgid "Enable logging on this zone" +msgstr "啟用此區域的日誌記錄" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "實驗特性。與 QoS/SQM 不完全相容。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +msgid "External IP address" +msgstr "外部 IP 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +msgid "External port" +msgstr "外部埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +msgid "Extra arguments" +msgstr "附加引數" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "防火牆" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +msgid "Firewall - Custom Rules" +msgstr "防火牆 - 自訂規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +msgid "Firewall - NAT Rules" +msgstr "防火牆 - NAT 規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +msgid "Firewall - Port Forwards" +msgstr "防火牆 - 埠轉發" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +msgid "Firewall - Traffic Rules" +msgstr "防火牆 - 通訊規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +msgid "Firewall - Zone Settings" +msgstr "防火牆 - 區域設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +msgid "Forward" +msgstr "轉發" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +msgid "" +"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +msgid "Friday" +msgstr "星期五" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +msgid "General Settings" +msgstr "基本設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +msgid "Hardware flow offloading" +msgstr "硬體流量分載" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +msgid "IPv4 and IPv6" +msgstr "IPv4 和 IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +msgid "IPv4 only" +msgstr "僅 IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +msgid "IPv6 only" +msgstr "僅 IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +msgid "" +"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " +"types %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, mark %{mark.val}" +"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Input" +msgstr "入站資料" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +msgid "Internal IP address" +msgstr "內部 IP 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +msgid "Internal port" +msgstr "內部埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +msgid "Internal zone" +msgstr "內部區域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +msgid "Limit log messages" +msgstr "限制日誌資訊" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +msgid "MSS clamping" +msgstr "MSS 鉗制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +msgid "Masquerading" +msgstr "IP 動態偽裝" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +msgid "Match" +msgstr "匹配規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +msgid "Match ICMP type" +msgstr "匹配 ICMP 型別" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "匹配指向此主機上指定目標埠或目標埠範圍的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +msgid "Monday" +msgstr "星期一" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Month Days" +msgstr "日期" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +msgid "NAT Rules" +msgstr "NAT 規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +msgid "Name" +msgstr "名字" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "僅匹配指定目的 IP 位址的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +msgid "Only match incoming traffic from these MACs." +msgstr "僅匹配來自這些 MAC 的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +msgid "Only match incoming traffic from this IP or range." +msgstr "僅匹配來自此 IP 或 IP 範圍的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "僅匹配源自客戶端主機上給定源埠或源埠範圍的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Output" +msgstr "出站資料" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "傳遞到 iptables 的額外引數。小心使用!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +msgid "Port Forwards" +msgstr "埠轉發" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "埠轉發允許 Internet 上的遠端計算機連線到內部網路中的特定計算機或服務。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +msgid "Protocol" +msgstr "協議" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "重定向匹配的入站流量到內部主機的埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "重定向匹配的入站流量到指定的內部主機" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "需要硬體 NAT 支援。目前 mt7621 已實現" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +msgid "Restrict Masquerading to given destination subnets" +msgstr "要限制 IP 動態偽裝的目標子網" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +msgid "Restrict Masquerading to given source subnets" +msgstr "要限制 IP 動態偽裝的源子網" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +msgid "Restrict to address family" +msgstr "限制位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +msgid "Routing/NAT Offloading" +msgstr "Routing/NAT 分載" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +msgid "Saturday" +msgstr "星期六" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +msgid "Software based offloading for routing/NAT" +msgstr "基於軟體的 Routing/NAT 分載" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +msgid "Software flow offloading" +msgstr "軟體流量分載" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +msgid "Source IP address" +msgstr "源 IP 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +msgid "Source MAC address" +msgstr "源 MAC 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +msgid "Source address" +msgstr "源位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +msgid "Source port" +msgstr "源埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +msgid "Source zone" +msgstr "源區域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +msgid "Start Date (yyyy-mm-dd)" +msgstr "開始日期(yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 +msgid "Start Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "停止日期(yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 +msgid "Stop Time (hh.mm.ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +msgid "Sunday" +msgstr "星期日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "防火牆通過在網路介面上建立區域來控制網路流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"以下選項可以控制區域(%s)和其它區域間的轉發規則。目標區域接收" +"源自 %q 的轉發流量。源區域匹配從目標為 %q 的區域的需轉發流量。轉發規則的作用是單向的,例如:一條允許" +"從 lan 到 wan 的轉發規則並不隱含有允許相反方向從 wan 到 lan 的流量轉發。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"本節定義 %q 的通用屬性,入站資料出站資料選項用於設定此區" +"域入站和出站流量的預設策略,轉發選項描述該區域內不同網路之間的流量轉" +"發策略。覆蓋網路指定從屬於這個區域的網路。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "Thursday" +msgstr "星期四" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Time in UTC" +msgstr "UTC 時間" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +msgid "Traffic Rules" +msgstr "通訊規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "" +"通訊規則定義了不同區域間的資料包傳輸策略,例如:拒絕一些主機之間的通訊,開放" +"路由器 WAN 上的埠。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Tuesday" +msgstr "星期二" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +msgid "Unable to save contents: %s" +msgstr "無法儲存內容:%s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +msgid "Unnamed forward" +msgstr "未命名轉發" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +msgid "Unnamed rule" +msgstr "未命名規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Wednesday" +msgstr "星期三" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Week Days" +msgstr "星期" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +msgid "Zone ⇒ Forwardings" +msgstr "區域 ⇒ 轉發" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +msgid "Zones" +msgstr "區域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +msgid "accept" +msgstr "接受" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +msgid "any" +msgstr "所有" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "any zone" +msgstr "所有區域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "day" +msgstr "日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +msgid "don't track" +msgstr "不跟蹤" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +msgid "drop" +msgstr "丟棄" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "hour" +msgstr "小時" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "minute" +msgstr "分鐘" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +msgid "reject" +msgstr "拒絕" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +msgid "second" +msgstr "秒" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +msgid "this device" +msgstr "此裝置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "%s in %s" +#~ msgstr "%s 位於 %s" + +#~ msgid "%s%s with %s" +#~ msgstr "%s%s 和 %s" + +#~ msgid "%s, %s in %s" +#~ msgstr "%s, %s 位於 %s" + +#~ msgid "%d pkts. per %s" +#~ msgstr "%d 資料包/%s" + +#~ msgid "%d pkts. per %s, burst %d pkts." +#~ msgstr "%d 資料包/%s,突發 %d 資料包。" + +#~ msgid "%s and limit to %s" +#~ msgstr "%s 並限制到 %s" + +#~ msgid "Accept forward" +#~ msgstr "接受轉發" + +#~ msgid "Accept input" +#~ msgstr "接受入站" + +#~ msgid "Accept output" +#~ msgstr "接受出站" + +#~ msgid "Destination IP address" +#~ msgstr "目標 IP 位址" + +#~ msgid "Discard forward" +#~ msgstr "丟棄轉發" + +#~ msgid "Discard input" +#~ msgstr "丟棄入站" + +#~ msgid "Discard output" +#~ msgstr "丟棄出站" + +#~ msgid "Do not rewrite" +#~ msgstr "不重寫" + +#~ msgid "Do not track forward" +#~ msgstr "不跟蹤轉發" + +#~ msgid "Do not track input" +#~ msgstr "不跟蹤入站" + +#~ msgid "Do not track output" +#~ msgstr "不跟蹤出站" + +#~ msgid "Forward to" +#~ msgstr "轉發到" + +#~ msgid "From %s in %s" +#~ msgstr "來自 %s 位於 %s" + +#~ msgid "From %s in %s with source %s" +#~ msgstr "來自 %s 位於 %s 源於 %s" + +#~ msgid "From %s in %s with source %s and %s" +#~ msgstr "來自 %s 位於 %s 源埠 %s 源 MAC %s" + +#~ msgid "From %s on this device" +#~ msgstr "來自 %s 位於本裝置" + +#~ msgid "From %s on this device with source %s" +#~ msgstr "來自 %s 位於本裝置源於 %s" + +#~ msgid "From %s on this device with source %s and %s" +#~ msgstr "來自 %s 位於本裝置源埠 %s 源 MAC %s" + +#~ msgid "IP" +#~ msgstr "IP" + +#~ msgid "IP range" +#~ msgstr "IP 範圍" + +#~ msgid "IPs" +#~ msgstr "IP" + +#~ msgid "IPv4" +#~ msgstr "IPv4" + +#~ msgid "IPv6" +#~ msgstr "IPv6" + +#~ msgid "MAC" +#~ msgstr "MAC" + +#~ msgid "MACs" +#~ msgstr "MAC" + +#~ msgid "Refuse forward" +#~ msgstr "拒絕轉發" + +#~ msgid "Refuse input" +#~ msgstr "拒絕入站" + +#~ msgid "Refuse output" +#~ msgstr "拒絕出站" + +#~ msgid "To %s at %s on this device" +#~ msgstr "到 %s 在 %s 位於本裝置" + +#~ msgid "To %s in %s" +#~ msgstr "到 %s 位於 %s" + +#~ msgid "To %s on this device" +#~ msgstr "到 %s 位於本裝置" + +#~ msgid "To %s, %s in %s" +#~ msgstr "到 %s, %s 位於 %s" + +#~ msgid "Via %s" +#~ msgstr "通過 %s" + +#~ msgid "Via %s at %s" +#~ msgstr "通過 %s 在 %s" + +#~ msgid "any host" +#~ msgstr "所有主機" + +#~ msgid "any router IP" +#~ msgstr "所有路由 IP" + +#~ msgid "not" +#~ msgstr "非" + +#~ msgid "port" +#~ msgstr "埠" + +#~ msgid "ports" +#~ msgstr "埠" + +#~ msgid "type" +#~ msgstr "型別" + +#~ msgid "types" +#~ msgstr "型別" + +#~ msgid "Force connection tracking" +#~ msgstr "強制連線追蹤" + +#~ msgid "Disable" +#~ msgstr "禁用" + +#~ msgid "Restart Firewall" +#~ msgstr "重啟防火牆" + +#~ msgid "Rule is disabled" +#~ msgstr "規則已禁用" + +#~ msgid "Rule is enabled" +#~ msgstr "規則已啟用" + +#~ msgid "Add" +#~ msgstr "新增" + +#~ msgid "Add and edit..." +#~ msgstr "新增並編輯…" + +#~ msgid "External zone" +#~ msgstr "外部區域" + +#~ msgid "New SNAT rule" +#~ msgstr "新建 SNAT 規則" + +#~ msgid "New forward rule" +#~ msgstr "新建轉發規則" + +#~ msgid "New input rule" +#~ msgstr "新建進入規則" + +#~ msgid "New port forward" +#~ msgstr "新建埠轉發" + +#~ msgid "New source NAT" +#~ msgstr "新建 Source NAT" + +#~ msgid "Open ports on router" +#~ msgstr "開啟路由器埠" + +#~ msgid "Other..." +#~ msgstr "其它..." + +#~ msgid "To source IP" +#~ msgstr "到源 IP" + +#~ msgid "To source port" +#~ msgstr "到源埠" + +#~ msgid "Output zone" +#~ msgstr "出站區域" + +#~ msgid "(Unnamed Entry)" +#~ msgstr "(未命名條目)" + +#~ msgid "(Unnamed Rule)" +#~ msgstr "(未命名規則)" + +#~ msgid "(Unnamed SNAT)" +#~ msgstr "(未命名 SNAT)" + +#~ msgid "Inter-Zone Forwarding" +#~ msgstr "埠觸發" + +#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgstr "匹配指定目標埠或目標埠範圍的轉發流量。" + +#~ msgid "" +#~ "Match incoming traffic originating from the given source port or port " +#~ "range on the client host." +#~ msgstr "匹配來自客戶端主機上指定源埠或源埠範圍的入站流量。" + +#~ msgid "Rewrite matched traffic to the given address." +#~ msgstr "將匹配流量的源位址改寫成指定位址。" + +#~ msgid "" +#~ "Rewrite matched traffic to the given source port. May be left empty to " +#~ "only rewrite the IP address." +#~ msgstr "將匹配流量的源埠改寫成指定埠。留空只改寫 IP 位址。" + +#~ msgid "Rewrite to source %s" +#~ msgstr "源位址改寫成 %s" + +#~ msgid "Rewrite to source %s, %s" +#~ msgstr "源位址改寫成 %s, %s" + +#~ msgid "SNAT IP address" +#~ msgstr "SNAT IP 位址" + +#~ msgid "SNAT port" +#~ msgstr "SNAT 埠" + +#~ msgid "Source NAT" +#~ msgstr "Source NAT" + +#~ msgid "" +#~ "Source NAT is a specific form of masquerading which allows fine grained " +#~ "control over the source IP used for outgoing traffic, for example to map " +#~ "multiple WAN addresses to internal subnets." +#~ msgstr "" +#~ "Source NAT 是一種特殊形式的封包偽裝,它允許精細的控制傳出流量的源 IP,例" +#~ "如:將多個 WAN 位址對映到內部子網。" + +#~ msgid "Start Time (hh:mm:ss)" +#~ msgstr "開始時間(hh:mm:ss)" + +#~ msgid "Stop Time (hh:mm:ss)" +#~ msgstr "停止時間(hh:mm:ss)" + +#~ msgid "" +#~ "This page allows you to change advanced properties of the port forwarding " +#~ "entry. In most cases there is no need to modify those settings." +#~ msgstr "本頁面可以更改埠轉發的高階設定。大多數情況下,不需要更改這些設定。" + +#~ msgid "" +#~ "This page allows you to change advanced properties of the traffic rule " +#~ "entry, such as matched source and destination hosts." +#~ msgstr "本頁面可以更改通訊規則的高階設定,比如:需匹配的源主機和目標主機。" + +#~ msgid "Unnamed SNAT" +#~ msgstr "未命名 SNAT" + +#~ msgid "" +#~ "You may specify multiple by selecting \"-- custom --\" and then entering " +#~ "protocols separated by space." +#~ msgstr "您也可以選擇“--自訂--”來定義多個協議,在多個協議間需加空格。" + +#~ msgid "Zone %q" +#~ msgstr "區域 %q" + +#~ msgid "traffic" +#~ msgstr "通訊" diff --git a/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json b/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json new file mode 100644 index 000000000..35c7c62c4 --- /dev/null +++ b/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json @@ -0,0 +1,60 @@ +{ + "admin/network/firewall": { + "title": "Firewall", + "order": 60, + "action": { + "type": "alias", + "path": "admin/network/firewall/zones" + }, + "depends": { + "fs": { "/sbin/fw3": "executable" }, + "uci": { "firewall": true } + } + }, + + "admin/network/firewall/zones": { + "title": "General Settings", + "order": 10, + "action": { + "type": "view", + "path": "firewall/zones" + } + }, + + "admin/network/firewall/forwards": { + "title": "Port Forwards", + "order": 20, + "action": { + "type": "view", + "path": "firewall/forwards" + } + }, + + "admin/network/firewall/rules": { + "title": "Traffic Rules", + "order": 30, + "action": { + "type": "view", + "path": "firewall/rules" + } + }, + + "admin/network/firewall/snats": { + "title": "NAT Rules", + "order": 40, + "action": { + "type": "view", + "path": "firewall/snats" + } + }, + + + "admin/network/firewall/custom": { + "title": "Custom Rules", + "order": 50, + "action": { + "type": "view", + "path": "firewall/custom" + } + } +} diff --git a/luci-app-glorytun/root/usr/share/rpcd/acl.d/luci-app-glorytun.json b/luci-app-glorytun/root/usr/share/rpcd/acl.d/luci-app-glorytun.json new file mode 100644 index 000000000..63a49918f --- /dev/null +++ b/luci-app-glorytun/root/usr/share/rpcd/acl.d/luci-app-glorytun.json @@ -0,0 +1,11 @@ +{ + "luci-app-glorytun": { + "description": "Grant UCI access for luci-app-glorytun", + "read": { + "uci": [ "glorytun" ] + }, + "write": { + "uci": [ "glorytun" ] + } + } +} \ No newline at end of file diff --git a/luci-app-https-dns-proxy/Makefile b/luci-app-https-dns-proxy/Makefile new file mode 100644 index 000000000..80b150c5b --- /dev/null +++ b/luci-app-https-dns-proxy/Makefile @@ -0,0 +1,17 @@ +# Copyright 2017-2018 Stan Grishin (stangri@melmac.net) +# This is free software, licensed under the GNU General Public License v3. + +include $(TOPDIR)/rules.mk + +PKG_LICENSE:=GPL-3.0-or-later +PKG_MAINTAINER:=Stan Grishin + +LUCI_TITLE:=DNS Over HTTPS Proxy Web UI +LUCI_DESCRIPTION:=Provides Web UI for DNS Over HTTPS Proxy +LUCI_DEPENDS:=+luci-compat +luci-mod-admin-full +https-dns-proxy +LUCI_PKGARCH:=all +PKG_RELEASE:=3 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua b/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua new file mode 100644 index 000000000..d236feae0 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua @@ -0,0 +1,25 @@ +module("luci.controller.https-dns-proxy", package.seeall) +function index() + if nixio.fs.access("/etc/config/https-dns-proxy") then + entry({"admin", "services", "https-dns-proxy"}, cbi("https-dns-proxy"), _("DNS Over HTTPS Proxy")) + entry({"admin", "services", "https-dns-proxy", "action"}, call("https_dns_proxy_action"), nil).leaf = true + end +end + +function https_dns_proxy_action(name) + local packageName = "https-dns-proxy" + if name == "start" then + luci.sys.init.start(packageName) + elseif name == "action" then + luci.util.exec("/etc/init.d/" .. packageName .. " reload >/dev/null 2>&1") + luci.util.exec("/etc/init.d/dnsmasq restart >/dev/null 2>&1") + elseif name == "stop" then + luci.sys.init.stop(packageName) + elseif name == "enable" then + luci.sys.init.enable(packageName) + elseif name == "disable" then + luci.sys.init.disable(packageName) + end + luci.http.prepare_content("text/plain") + luci.http.write("0") +end diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua new file mode 100644 index 000000000..fc190437c --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua @@ -0,0 +1,6 @@ +return { + name = "Digitale-Gesellschaft", + label = _("Digitale Gesellschaft"), + resolver_url = "https://dns.digitale-gesellschaft.ch/dns-query", + bootstrap_dns = "185.95.218.42,185.95.218.43" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua new file mode 100644 index 000000000..86c4c56dc --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua @@ -0,0 +1,6 @@ +return { + name = "rubyfish.cn", + label = _("rubyfish.cn"), + resolver_url = "https://dns.rubyfish.cn/dns-query", + bootstrap_dns = "118.89.110.78,47.96.179.163" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua new file mode 100644 index 000000000..114d23ed5 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua @@ -0,0 +1,6 @@ +return { + name = "DNS.SB", + label = _("DNS.SB"), + resolver_url = "https://doh.dns.sb/dns-query", + bootstrap_dns = "185.222.222.222,185.184.222.222" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua new file mode 100644 index 000000000..56a409f91 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua @@ -0,0 +1,8 @@ +return { + name = "AdGuard-Family", + label = _("AdGuard (Family Protection)"), + resolver_url = "https://dns-family.adguard.com/dns-query", + bootstrap_dns = "176.103.130.132,176.103.130.134", + help_link = "https://adguard.com/en/adguard-dns/overview.html", + help_link_text = "AdGuard.com" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua new file mode 100644 index 000000000..504070501 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua @@ -0,0 +1,8 @@ +return { + name = "AdGuard-Standard", + label = _("AdGuard (Standard)"), + resolver_url = "https://dns.adguard.com/dns-query", + bootstrap_dns = "176.103.130.130,176.103.130.131", + help_link = "https://adguard.com/en/adguard-dns/overview.html", + help_link_text = "AdGuard.com" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns-family.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns-family.lua new file mode 100644 index 000000000..e63bf14ad --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns-family.lua @@ -0,0 +1,6 @@ +return { + name = "Cloudflare for Families", + label = _("Cloudflare for Families"), + resolver_url = "https://family.cloudflare-dns.com/dns-query", + bootstrap_dns = "1.1.1.3,1.0.0.3" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns-malware.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns-malware.lua new file mode 100644 index 000000000..f114f91e0 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns-malware.lua @@ -0,0 +1,6 @@ +return { + name = "Cloudflare Malware", + label = _("Cloudflare Malware"), + resolver_url = "https://security.cloudflare-dns.com/dns-query", + bootstrap_dns = "1.1.1.2,1.0.0.2" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua new file mode 100644 index 000000000..e8673d5d5 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua @@ -0,0 +1,6 @@ +return { + name = "Cloudflare", + label = _("Cloudflare"), + resolver_url = "https://cloudflare-dns.com/dns-query", + bootstrap_dns = "1.1.1.1,1.0.0.1" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua new file mode 100644 index 000000000..3dfe30936 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua @@ -0,0 +1,6 @@ +return { + name = "odvr-nic-cz", + label = _("ODVR (nic.cz)"), + resolver_url = "https://odvr.nic.cz/doh", + bootstrap_dns = "193.17.47.1,185.43.135.1" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua new file mode 100644 index 000000000..6eab04064 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua @@ -0,0 +1,7 @@ +return { + name = "Google", + label = _("Google"), + resolver_url = "https://dns.google/dns-query", + bootstrap_dns = "8.8.8.8,8.8.4.4", + default = true +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh-ads.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh-ads.lua new file mode 100644 index 000000000..22e6fffe4 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh-ads.lua @@ -0,0 +1,8 @@ +return { + name = "LibreDNS (No Ads)", + label = _("LibreDNS (No Ads)"), + resolver_url = "https://doh.libredns.gr/ads", + bootstrap_dns = "116.202.176.26", + help_link = "https://libredns.gr/", + help_link_text = "LibreDNS.gr" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh.lua new file mode 100644 index 000000000..bd51e1be4 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh.lua @@ -0,0 +1,8 @@ +return { + name = "LibreDNS", + label = _("LibreDNS"), + resolver_url = "https://doh.libredns.gr/dns-query", + bootstrap_dns = "116.202.176.26", + help_link = "https://libredns.gr/", + help_link_text = "LibreDNS.gr" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua new file mode 100644 index 000000000..eaa4b8370 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua @@ -0,0 +1,8 @@ +return { + name = "Quad9-Recommended", + label = _("Quad 9 (Recommended)"), + resolver_url = "https://dns.quad9.net/dns-query", + bootstrap_dns = "9.9.9.9,149.112.112.112", + help_link = "https://www.quad9.net/doh-quad9-dns-servers/", + help_link_text = "Quad9.net" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua new file mode 100644 index 000000000..4d1914a0f --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua @@ -0,0 +1,8 @@ +return { + name = "Quad9-Unsecured", + label = _("Quad 9 (Unsecured)"), + resolver_url = "https://dns10.quad9.net/dns-query", + bootstrap_dns = "9.9.9.10,149.112.112.10", + help_link = "https://www.quad9.net/doh-quad9-dns-servers/", + help_link_text = "Quad9.net" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua new file mode 100644 index 000000000..36fbeb39e --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua @@ -0,0 +1,8 @@ +return { + name = "Quad9-ECS", + label = _("Quad 9 (Secured with ECS Support)"), + resolver_url = "https://dns11.quad9.net/dns-query", + bootstrap_dns = "9.9.9.11,149.112.112.11", + help_link = "https://www.quad9.net/doh-quad9-dns-servers/", + help_link_text = "Quad9.net" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua new file mode 100644 index 000000000..61ca444ef --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua @@ -0,0 +1,8 @@ +return { + name = "Quad9-Secured", + label = _("Quad 9 (Secured)"), + resolver_url = "https://dns9.quad9.net/dns-query", + bootstrap_dns = "9.9.9.9,149.112.112.9", + help_link = "https://www.quad9.net/doh-quad9-dns-servers/", + help_link_text = "Quad9.net" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua new file mode 100644 index 000000000..5b4d90854 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua @@ -0,0 +1,8 @@ +return { + name = "CleanBrowsing-Adult", + label = _("CleanBrowsing (Adult Filter)"), + resolver_url = "https://doh.cleanbrowsing.org/doh/adult-filter/", + bootstrap_dns = "185.228.168.168", + help_link = "https://cleanbrowsing.org/guides/dnsoverhttps", + help_link_text = "CleanBrowsing.org" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua new file mode 100644 index 000000000..47a0654d2 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua @@ -0,0 +1,8 @@ +return { + name = "CleanBrowsing-Family", + label = _("CleanBrowsing (Family Filter)"), + resolver_url = "https://doh.cleanbrowsing.org/doh/family-filter/", + bootstrap_dns = "185.228.168.168", + help_link = "https://cleanbrowsing.org/guides/dnsoverhttps", + help_link_text = "CleanBrowsing.org" +} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua new file mode 100644 index 000000000..6e370d513 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua @@ -0,0 +1,8 @@ +return { + name = "CleanBrowsing-Security", + label = _("CleanBrowsing (Security Filter)"), + resolver_url = "https://doh.cleanbrowsing.org/doh/security-filter/", + bootstrap_dns = "185.228.168.168", + help_link = "https://cleanbrowsing.org/guides/dnsoverhttps", + help_link_text = "CleanBrowsing.org" +} diff --git a/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua b/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua new file mode 100644 index 000000000..d914bf09a --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua @@ -0,0 +1,172 @@ +local sys = require "luci.sys" +local util = require "luci.util" +local fs = require "nixio.fs" +local dispatcher = require "luci.dispatcher" +local i18n = require "luci.i18n" +local uci = require("luci.model.uci").cursor() + +local packageName = "https-dns-proxy" +local providers_dir = "/usr/lib/lua/luci/" .. packageName .. "/providers/" +local helperText = "" + +function create_helper_text() + local initText = "
" .. translate("For more information on different options check") .. " " + for filename in fs.dir(providers_dir) do + local p_func = loadfile(providers_dir .. filename) + setfenv(p_func, { _ = i18n.translate }) + local p = p_func() + if p.help_link then + local url, domain + url = p.help_link + domain = p.help_link_text or url:match('^%w+://([^/]+)') + if not helperText:find(domain) then + if helperText == "" then + helperText = initText + else + helperText = helperText .. ", " + end + helperText = helperText .. [[]] .. domain .. [[]] + end + end + end + if helperText ~= "" then + local a = helperText:gsub('(.*),%s.*$', '%1') + helperText = a .. " " .. translate("and") .. helperText:sub(#a + 2) .. "." + end +end + +function get_provider_name(value) + for filename in fs.dir(providers_dir) do + local p_func = loadfile(providers_dir .. filename) + setfenv(p_func, { _ = i18n.translate }) + local p = p_func() + value = value:gsub('[%p%c%s]', '') + p.url_match = p.resolver_url:gsub('[%p%c%s]', '') + if value:match(p.url_match) then + return p.label + end + end + return translate("Unknown Provider") +end + +local tmpfsStatus, tmpfsStatusCode +local ubusStatus = util.ubus("service", "list", { name = packageName }) +local tmpfsVersion = tostring(util.trim(sys.exec("opkg list-installed " .. packageName .. " | awk '{print $3}'"))) + +if not tmpfsVersion or tmpfsVersion == "" then + tmpfsStatusCode = -1 + tmpfsVersion = "" + tmpfsStatus = packageName .. " " .. translate("is not installed or not found") +else + tmpfsVersion = " [" .. packageName .. " " .. tmpfsVersion .. "]" + if not ubusStatus or not ubusStatus[packageName] then + tmpfsStatusCode = 0 + tmpfsStatus = translate("Stopped") + if not luci.sys.init.enabled(packageName) then + tmpfsStatus = tmpfsStatus .. " (" .. translate("disabled") .. ")" + end + else + tmpfsStatusCode, tmpfsStatus = 1, "" + for n = 1,1000 do + if ubusStatus and ubusStatus[packageName] and + ubusStatus[packageName]["instances"] and + ubusStatus[packageName]["instances"]["instance" .. n] and + ubusStatus[packageName]["instances"]["instance" .. n]["running"] then + local value, k, v, url, url_flag, la, la_flag, lp, lp_flag + for k, v in pairs(ubusStatus[packageName]["instances"]["instance" .. n]["command"]) do + if la_flag then la, la_flag = v, false end + if lp_flag then lp, lp_flag = v, false end + if url_flag then url, url_flag = v, false end + if v == "-a" then la_flag = true end + if v == "-p" then lp_flag = true end + if v == "-r" then url_flag = true end + end + la = la or "127.0.0.1" + lp = lp or n + 5053 + tmpfsStatus = tmpfsStatus .. translate("Running") .. ": " .. get_provider_name(url) .. " " .. translate("DoH") .. " " .. translate("at") .. " " .. la .. ":" .. lp .. "\n" + else + break + end + end + end +end + +m = Map("https-dns-proxy", translate("DNS Over HTTPS Proxy Settings")) + +h = m:section(TypedSection, "_dummy", translate("Service Status") .. tmpfsVersion) +h.template = "cbi/nullsection" +ss = h:option(DummyValue, "_dummy", translate("Service Status")) +if tmpfsStatusCode == -1 then + ss.template = packageName .. "/status" + ss.value = tmpfsStatus +else + if tmpfsStatusCode == 0 then + ss.template = packageName .. "/status" + else + ss.template = packageName .. "/status-textarea" + end + ss.value = tmpfsStatus + buttons = h:option(DummyValue, "_dummy") + buttons.template = packageName .. "/buttons" +end + +create_helper_text() +s3 = m:section(TypedSection, "https-dns-proxy", translate("Instances"), translate("When you add/remove any instances below, they will be used to override the 'DNS forwardings' section of ") + .. [[ ]] + .. translate("DHCP and DNS") .. [[]] .. "." .. helperText) +s3.template = "cbi/tblsection" +s3.sortable = false +s3.anonymous = true +s3.addremove = true + +prov = s3:option(ListValue, "resolver_url", translate("Resolver")) +for filename in fs.dir(providers_dir) do + local p_func = loadfile(providers_dir .. filename) + setfenv(p_func, { _ = i18n.translate }) + local p = p_func() + prov:value(p.resolver_url, p.label) + if p.default then + prov.default = p.resolver_url + end +end +prov.forcewrite = true +prov.write = function(self, section, value) + if not value then return end + for filename in fs.dir(providers_dir) do + local p_func = loadfile(providers_dir .. filename) + setfenv(p_func, { _ = i18n.translate }) + local p = p_func() + value = value:gsub('[%p%c%s]', '') + p.url_match = p.resolver_url:gsub('[%p%c%s]', '') + if value:match(p.url_match) then + uci:set(packageName, section, "bootstrap_dns", p.bootstrap_dns) + uci:set(packageName, section, "resolver_url", p.resolver_url) + end + end + uci:save(packageName) +end + +la = s3:option(Value, "listen_addr", translate("Listen address")) +la.datatype = "host" +la.placeholder = "127.0.0.1" +la.rmempty = true + +local n = 0 +uci:foreach(packageName, packageName, function(s) + if s[".name"] == section then + return false + end + n = n + 1 +end) + +lp = s3:option(Value, "listen_port", translate("Listen port")) +lp.datatype = "port" +lp.value = n + 5053 + +sa = s3:option(Value, "edns_subnet", translate("EDNS client subnet")) +sa.rmempty = true + +ps = s3:option(Value, "proxy_server", translate("Proxy server")) +ps.rmempty = true + +return m diff --git a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm new file mode 100644 index 000000000..b7fcd472e --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm @@ -0,0 +1,77 @@ +<%# Copyright 2020 Stan Grishin -%> + +<%+https-dns-proxy/css%> +<%+https-dns-proxy/js%> + +<%- + local packageName = "https-dns-proxy" + local serviceRunning, serviceEnabled = false, false; + + serviceEnabled = luci.sys.init.enabled(packageName) + local ubusStatus = luci.util.ubus("service", "list", { name = packageName }) + if ubusStatus and ubusStatus[packageName] then + serviceRunning = true + end + + if serviceEnabled then + btn_start_status = true + btn_action_status = true + btn_stop_status = true + btn_enable_status = false + btn_disable_status = true + else + btn_start_status = false + btn_action_status = false + btn_stop_status = false + btn_enable_status = true + btn_disable_status = false + end + if serviceRunning then + btn_start_status = false + btn_action_status = true + btn_stop_status = true + else + btn_action_status = false + btn_stop_status = false + end +-%> + +
+
+ + + + + + +   +   +   +   + + + + +
+
+ +<%-if not btn_start_status then%> + +<%-end%> +<%-if not btn_action_status then%> + +<%-end%> +<%-if not btn_stop_status then%> + +<%-end%> +<%-if not btn_enable_status then%> + +<%-end%> +<%-if not btn_disable_status then%> + +<%-end%> diff --git a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/css.htm b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/css.htm new file mode 100644 index 000000000..6fb3d51d3 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/css.htm @@ -0,0 +1,9 @@ + diff --git a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm new file mode 100644 index 000000000..fac92a392 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm @@ -0,0 +1,60 @@ + + diff --git a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/status-textarea.htm b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/status-textarea.htm new file mode 100644 index 000000000..3840cd19d --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/status-textarea.htm @@ -0,0 +1,13 @@ +<%# +Copyright 2017-2019 Stan Grishin (stangri@melmac.net) +This is free software, licensed under the Apache License, Version 2.0 +-%> + +<%+cbi/valueheader%> + + + +<%+cbi/valuefooter%> diff --git a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/status.htm b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/status.htm new file mode 100644 index 000000000..c45342840 --- /dev/null +++ b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/status.htm @@ -0,0 +1,10 @@ +<%# +Copyright 2017-2018 Dirk Brenken (dev@brenken.org) +This is free software, licensed under the Apache License, Version 2.0 +-%> + +<%+cbi/valueheader%> + + + +<%+cbi/valuefooter%> diff --git a/luci-app-https-dns-proxy/po/bg/https-dns-proxy.po b/luci-app-https-dns-proxy/po/bg/https-dns-proxy.po new file mode 100644 index 000000000..9187f341c --- /dev/null +++ b/luci-app-https-dns-proxy/po/bg/https-dns-proxy.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Language: bg\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/ca/https-dns-proxy.po b/luci-app-https-dns-proxy/po/ca/https-dns-proxy.po new file mode 100644 index 000000000..dbdb2ea03 --- /dev/null +++ b/luci-app-https-dns-proxy/po/ca/https-dns-proxy.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Language: ca\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/cs/https-dns-proxy.po b/luci-app-https-dns-proxy/po/cs/https-dns-proxy.po new file mode 100644 index 000000000..aa4cd1f97 --- /dev/null +++ b/luci-app-https-dns-proxy/po/cs/https-dns-proxy.po @@ -0,0 +1,188 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-02-02 09:02+0000\n" +"Last-Translator: Pavel Borecki \n" +"Language-Team: Czech \n" +"Language: cs\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP a DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "Povolit" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "Více informací o dalších možnostech" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "Instance" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "Naslouchající adresa" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "Naslouchající port" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "Proxy server" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" +"Pokud níže přidáte nebo odeberete instance, budou použity k přepsání sekce " +"'DNS forwardings' v" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "a" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" + +#~ msgid "Provider" +#~ msgstr "Poskytovatel" + +#~ msgid "Subnet address" +#~ msgstr "Adresa podsítě" + +#~ msgid "HTTPS DNS Proxy" +#~ msgstr "HTTPS DNS Proxy" + +#~ msgid "HTTPS DNS Proxy Settings" +#~ msgstr "Nastavení HTTPS DNS Proxy" diff --git a/luci-app-https-dns-proxy/po/de/https-dns-proxy.po b/luci-app-https-dns-proxy/po/de/https-dns-proxy.po new file mode 100644 index 000000000..2ac46c51c --- /dev/null +++ b/luci-app-https-dns-proxy/po/de/https-dns-proxy.po @@ -0,0 +1,197 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-03-05 08:06+0000\n" +"Last-Translator: Tobias Strobel \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "AdGuard (Familienschutz)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "AdGuard (Standard)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "CleanBrowsing (Familienfilter)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "CleanBrowsing (Familienfilter)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "CleanBrowsing (Sicherheitsfilter)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP und DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "DNS über HTTPS Proxy" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "DNS über HTTPS Proxyeinstellungen" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "DNS.SB" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "Digitale Gesellschaft" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "Deaktivieren" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "DoH" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "EDNS-Clientsubnetz" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "Aktivieren" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "Weitere Informationen zu den verschiedenen Optionen finden Sie unter" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "Google" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "Instanzen" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "Listen-Adresse" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "Listen-Port" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "Lade" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "ODVR (nic.cz)" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "Proxyserver" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "Quad 9 (empfohlen)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "Quad 9 (gesichert mit ECS-Unterstützung)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "Quad 9 (gesichert)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "Quad 9 (ungesichert)" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "Neu laden" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "Resolver" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "Laufend" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "Dienststatus" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "Start" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "Stoppen" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "Angehalten" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "Unbekannter Anbieter" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" +"Wenn Sie untenstehende Instanzen hinzufügen/entfernen, werden sie für den " +"Abschnitt 'DNS-Weiterleitungen' verwendet von" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "und" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "bei" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "ist nicht installiert oder nicht gefunden" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "rubyfish.cn" + +#~ msgid "DNS over HTTPS Proxy" +#~ msgstr "DNS über HTTPS Proxy" + +#~ msgid "DNS over HTTPS Proxy Settings" +#~ msgstr "DNS über HTTPS Proxy-Einstellungen" + +#~ msgid "Provider" +#~ msgstr "Anbieter" + +#~ msgid "Subnet address" +#~ msgstr "Subnetzadresse" + +#~ msgid "Uknown Provider" +#~ msgstr "Bekannter Anbieter" + +#~ msgid "HTTPS DNS Proxy" +#~ msgstr "HTTPS-DNS-Proxy" + +#~ msgid "HTTPS DNS Proxy Settings" +#~ msgstr "HTTPS-DNS-Proxyeinstellungen" diff --git a/luci-app-https-dns-proxy/po/el/https-dns-proxy.po b/luci-app-https-dns-proxy/po/el/https-dns-proxy.po new file mode 100644 index 000000000..2a8198cae --- /dev/null +++ b/luci-app-https-dns-proxy/po/el/https-dns-proxy.po @@ -0,0 +1,174 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2019-12-03 08:25+0000\n" +"Last-Translator: Tavaninja \n" +"Language-Team: Greek \n" +"Language: el\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10-dev\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "Φόρτωση" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/en/https-dns-proxy.po b/luci-app-https-dns-proxy/po/en/https-dns-proxy.po new file mode 100644 index 000000000..4c462b5c4 --- /dev/null +++ b/luci-app-https-dns-proxy/po/en/https-dns-proxy.po @@ -0,0 +1,176 @@ +msgid "" +msgstr "" +"Language: en\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh.lua:3 +msgid "LibreDNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh-ads.lua:3 +msgid "LibreDNS (No Ads)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/es/https-dns-proxy.po b/luci-app-https-dns-proxy/po/es/https-dns-proxy.po new file mode 100644 index 000000000..106045fbe --- /dev/null +++ b/luci-app-https-dns-proxy/po/es/https-dns-proxy.po @@ -0,0 +1,206 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2020-01-01 23:07+0000\n" +"Last-Translator: Franco Castillo \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "AdGuard (Protección familiar)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "AdGuard (estándar)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "CleanBrowsing (Filtro para adultos)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "CleanBrowsing (Filtro familiar)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "CleanBrowsing (Filtro de seguridad)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP y DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "DNS sobre proxy HTTPS" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "Configuración de DNS sobre proxy HTTPS" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "DNS.SB" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "Sociedad digital" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "Desactivar" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "DoH" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "Subred de cliente EDNS" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "Activar" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "Para obtener más información sobre diferentes opciones, consulte" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "Google" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "Instancias" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "Escuchar dirección" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "Puerto" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "Cargando" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "ODVR (nic.cz)" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "Servidor proxy" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "Quad 9 (recomendado)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "Quad 9 (Asegurado con soporte ECS)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "Quad 9 (Asegurado)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "Quad 9 (No asegurado)" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "Recargar" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "Resolvedor" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "Corriendo" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "Estado del servicio" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "Iniciar" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "Detener" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "Detenido" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "Proveedor desconocido" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" +"Cuando agregue/elimine las instancias a continuación, se utilizarán para " +"anular la sección 'Reenvíos DNS' de" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "y" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "a" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "no está instalado o no se encuentra" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "rubyfish.cn" + +#~ msgid "DNS over HTTPS Proxy" +#~ msgstr "DNS sobre proxy HTTPS" + +#~ msgid "DNS over HTTPS Proxy Settings" +#~ msgstr "Configuración de DNS sobre proxy HTTPS" + +#~ msgid "Provider" +#~ msgstr "Proveedor" + +#~ msgid "Subnet address" +#~ msgstr "Direccion de subred" + +#~ msgid "Uknown Provider" +#~ msgstr "Proveedor Desconocido" + +#~ msgid "HTTPS DNS Proxy" +#~ msgstr "Proxy DNS HTTPS" + +#~ msgid "HTTPS DNS Proxy Settings" +#~ msgstr "Configuración de proxy HTTPS DNS" + +#~ msgid "Group name" +#~ msgstr "Nombre del grupo" + +#~ msgid "User name" +#~ msgstr "Nombre de usuario" diff --git a/luci-app-https-dns-proxy/po/fr/https-dns-proxy.po b/luci-app-https-dns-proxy/po/fr/https-dns-proxy.po new file mode 100644 index 000000000..c9259dae9 --- /dev/null +++ b/luci-app-https-dns-proxy/po/fr/https-dns-proxy.po @@ -0,0 +1,176 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-03-11 23:49+0000\n" +"Last-Translator: Hydci \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "AdGuard (protection de la famille)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "AdGuard (Standard)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "CleanBrowsing (Filtre Adulte)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "CleanBrowsing (Filtre Famille)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "CleanBrowsing (Filtre Sécurité)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP et DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "Proxy DNS Over HTTPS" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "Paramètres du Proxy DNS Over HTTPS" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "DNS.SB" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "Société Digitale" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "Désactiver" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "DoH" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "Sous-réseau client EDNS" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "Activer" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "Pour plus d'informations sur les différentes options, consultez" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "Google" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "Instances" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "Adresse d'écoute" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "Port d'écoute" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "Chargement" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "ODVR (nic.cz)" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "Serveur proxy" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "Quad 9 (recommandé)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "Quad 9 (sécurisé avec prise en charge ECS)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "Quad 9 (sécurisé)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "Quad 9 (non sécurisé)" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "Recharger" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "Résolveur" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "En cours d'exécution" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "Statut du service" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "Démarrer" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "Arrêter" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "Arrêté" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "Proveedor desconocido" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" +"Lorsque vous ajoutez/supprimez des instances ci-dessous, elles seront " +"utilisées pour passer outre la section \"redirections DNS\" de" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "et" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "à" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "n'est pas installé ou introuvable" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "rubyfish.cn" diff --git a/luci-app-https-dns-proxy/po/he/https-dns-proxy.po b/luci-app-https-dns-proxy/po/he/https-dns-proxy.po new file mode 100644 index 000000000..3b445c846 --- /dev/null +++ b/luci-app-https-dns-proxy/po/he/https-dns-proxy.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Language: he\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/hi/https-dns-proxy.po b/luci-app-https-dns-proxy/po/hi/https-dns-proxy.po new file mode 100644 index 000000000..49b6f01a2 --- /dev/null +++ b/luci-app-https-dns-proxy/po/hi/https-dns-proxy.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Language: hi\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/hu/https-dns-proxy.po b/luci-app-https-dns-proxy/po/hu/https-dns-proxy.po new file mode 100644 index 000000000..2586d5604 --- /dev/null +++ b/luci-app-https-dns-proxy/po/hu/https-dns-proxy.po @@ -0,0 +1,176 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-01-01 23:07+0000\n" +"Last-Translator: Balázs Úr \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "AdGuard (családvédelem)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "AdGuard (szabványos)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "CleanBrowsing (felnőtt szűrő)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "CleanBrowsing (családszűrő)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "CleanBrowsing (biztonsági szűrő)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP és DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "DNS HTTPS-proxy fölött" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "DNS HTTPS-proxy fölött beállításai" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "DNS.SB" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "Digitale Gesellschaft" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "Letiltás" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "DoH" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "EDNS ügyfélalhálózat" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "Engedélyezés" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "A különböző beállításokkal kapcsolatos további információkért nézze meg" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "Google" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "Példányok" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "Cím figyelése" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "Port figyelése" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "Betöltés" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "ODVR (nic.cz)" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "Proxy-kiszolgáló" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "Quad 9 (ajánlott)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "Quad 9 (biztonságos ECS támogatással)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "Quad 9 (biztonságos)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "Quad 9 (nem biztonságos)" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "Újratöltés" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "Feloldó" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "Fut" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "Szolgáltatás állapota" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "Indítás" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "Leállítás" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "Leállítva" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "Ismeretlen szolgáltató" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" +"Ha bármely példányt hozzáadja vagy eltávolítja lent, akkor azok lesznek " +"használva a „DNS továbbítások” szakaszának felülbírálását ennek:" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "és" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "ekkor:" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "nincs telepítve vagy nem található" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "rubyfish.cn" diff --git a/luci-app-https-dns-proxy/po/it/https-dns-proxy.po b/luci-app-https-dns-proxy/po/it/https-dns-proxy.po new file mode 100644 index 000000000..4d2faf50b --- /dev/null +++ b/luci-app-https-dns-proxy/po/it/https-dns-proxy.po @@ -0,0 +1,174 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-03-07 12:33+0000\n" +"Last-Translator: Giuseppe Valitutto \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP e DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "Disabilita" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "Abilita" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "Caricamento" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/ja/https-dns-proxy.po b/luci-app-https-dns-proxy/po/ja/https-dns-proxy.po new file mode 100644 index 000000000..a3aa6bc9a --- /dev/null +++ b/luci-app-https-dns-proxy/po/ja/https-dns-proxy.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Language: ja\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/ko/https-dns-proxy.po b/luci-app-https-dns-proxy/po/ko/https-dns-proxy.po new file mode 100644 index 000000000..5a42245b7 --- /dev/null +++ b/luci-app-https-dns-proxy/po/ko/https-dns-proxy.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Language: ko\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/mr/https-dns-proxy.po b/luci-app-https-dns-proxy/po/mr/https-dns-proxy.po new file mode 100644 index 000000000..43cc03427 --- /dev/null +++ b/luci-app-https-dns-proxy/po/mr/https-dns-proxy.po @@ -0,0 +1,176 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-02-07 09:19+0000\n" +"Last-Translator: Prachi Joshi \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "अ‍ॅडगार्ड (कौटुंबिक संरक्षण)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "अ‍ॅडगार्ड (मानक)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "क्लीन ब्राउझिंग (प्रौढ फिल्टर)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "क्लीन ब्राउझिंग (फॅमिली फिल्टर)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "क्लीन ब्राउझिंग (सुरक्षा फिल्टर)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "क्लाउडफ्लेअर" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "डीएचसीपी आणि डीएनएस" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "एचटीटीपीएस प्रॉक्सी वर डीएनएस" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "एचटीटीपीएस प्रॉक्सी सेटिंग वरील डीएनएस" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "डीएनएस.एसबी" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "डिजिटेल गसेल्सशाफ्ट" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "अक्षम करा" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "DoH" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "ईडीएनएस क्लायंट सबनेट" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "सक्षम करा" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "वेगवेगळ्या पर्यायांवर अधिक माहितीसाठी तपासा" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "गूगल" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "उदाहरणे" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "ऐकण्याचा पत्ता" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "ऐकण्याचा पत्ता" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "लोड करीत आहे" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "ODVR (nic.cz)" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "प्रॉक्सी सर्व्हर" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "Quad 9 (शिफारस केलेले)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "Quad 9 (ईसीएस समर्थनासह सुरक्षित)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "Quad 9 (सुरक्षित)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "Quad 9 (असुरक्षित)" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "रीलोड करा" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "निराकरणकर्ता" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "चालू आहे" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "सेवा स्थिती" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "प्रारंभ करा" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "थांबा" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "बंद" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "अज्ञात प्रदाता" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" +"जेव्हा आपण खाली कोणतीही उदाहरणे जोडता / काढता तेव्हा ती 'डीएनएस फॉरवर्डिंग' " +"विभागाच्या अधिलिखितसाठी वापरली जाईल" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "आणि" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "येथे" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "स्थापित केलेले नाही किंवा सापडले नाही" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "rubyfish.cn" diff --git a/luci-app-https-dns-proxy/po/ms/https-dns-proxy.po b/luci-app-https-dns-proxy/po/ms/https-dns-proxy.po new file mode 100644 index 000000000..26b756b07 --- /dev/null +++ b/luci-app-https-dns-proxy/po/ms/https-dns-proxy.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Language: ms\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/nb_NO/https-dns-proxy.po b/luci-app-https-dns-proxy/po/nb_NO/https-dns-proxy.po new file mode 100644 index 000000000..63734bc2e --- /dev/null +++ b/luci-app-https-dns-proxy/po/nb_NO/https-dns-proxy.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Language: nb_NO\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/pl/https-dns-proxy.po b/luci-app-https-dns-proxy/po/pl/https-dns-proxy.po new file mode 100644 index 000000000..ddfc9516e --- /dev/null +++ b/luci-app-https-dns-proxy/po/pl/https-dns-proxy.po @@ -0,0 +1,198 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-04-02 19:50+0000\n" +"Last-Translator: Marcin Net \n" +"Language-Team: Polish \n" +"Language: pl\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "AdGuard (Ochrona rodzinna)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "AdGuard (Standardowy)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "CleanBrowsing (Filtr treści dla dorosłych)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "CleanBrowsing (Filtr rodzinny)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "CleanBrowsing (Filtr bezpieczeństwa)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP i DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "DNS Over HTTPS" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "Ustawienia DNS Over HTTPS" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "DNS.SB" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "Digitale Gesellschaft" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "Wyłącz" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "DoH" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "Podsieć klienta EDNS" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "Włącz" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "Aby uzyskać więcej informacji na temat różnych opcji, sprawdź" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "Google" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "Instancje" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "Nasłuchiwany adres" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "Nasłuchiwany port" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "Ładowanie" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "ODVR (nic.cz)" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "Serwer proxy" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "Quad 9 (Zalecane)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "Quad 9 (Zabezpieczony z obsługą ECS)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "Quad 9 (Zabezpieczony)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "Quad 9 (Niezabezpieczony)" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "Przeładuj" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "Dostawca" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "Działa" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "Status usługi" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "Uruchom" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "Stop" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "Zatrzymany" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "Nieznany dostawca" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" +"Po dodaniu/usunięciu dowolnej instancji poniżej, zastąpią one ustawienia " +"sekcji 'Przekazywania DNS' w" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "i" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "na" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "nie jest zainstalowany lub nie znaleziono" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "rubyfish.cn" + +#~ msgid "DNS over HTTPS Proxy" +#~ msgstr "Proxy DNS over HTTPS" + +#~ msgid "DNS over HTTPS Proxy Settings" +#~ msgstr "Ustawiania proxy DNS over HTTPS" + +#~ msgid "Provider" +#~ msgstr "Dostawca" + +#~ msgid "Subnet address" +#~ msgstr "Adres podsieci" + +#~ msgid "Uknown Provider" +#~ msgstr "Nieznany dostawca" + +#~ msgid "HTTPS DNS Proxy" +#~ msgstr "HTTPS DNS Proxy" + +#~ msgid "HTTPS DNS Proxy Settings" +#~ msgstr "Ustawienia Proxy HTTPS DNS" diff --git a/luci-app-https-dns-proxy/po/pt/https-dns-proxy.po b/luci-app-https-dns-proxy/po/pt/https-dns-proxy.po new file mode 100644 index 000000000..347238f56 --- /dev/null +++ b/luci-app-https-dns-proxy/po/pt/https-dns-proxy.po @@ -0,0 +1,197 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-01-02 16:07+0000\n" +"Last-Translator: ssantos \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.10\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "AdGuard (Proteção da Família)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "AdGuard (Padrão)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "CleanBrowsing (Filtro Adulto)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "CleanBrowsing (Filtro para a Familia)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "CleanBrowsing (Filtro de Segurança)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP e DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "Proxy de DNS Over HTTPS" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "Configurações de Proxy de DNS Over HTTPS" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "DNS.SB" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "Digitale Gesellschaft" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "Desativar" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "DoH" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "Sub-rede de clientes EDNS" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "Ativar" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "Para obter mais informações sobre opções diferentes, verifique" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "Google" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "Instâncias" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "Endereço de escuta" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "Porta de escuta" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "A carregar" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "ODVR (nic.cz)" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "Servidor proxy" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "Quad 9 (Recomendado)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "Quad 9 (Protegido com Suporte de ECS)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "Quad 9 (Seguro)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "Quad 9 (Sem Segurança)" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "Recarregar" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "Resolvedor" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "Executando" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "Estado do Serviço" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "Iniciar" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "Parar" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "Parado" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "Provedor Desconhecido" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" +"Quando adicionar/remover quaisquer instâncias abaixo, serão usadas para " +"substituir a seção 'DNS forwardings' de" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "e" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "em" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "não está instalado ou não foi encontrado" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "rubyfish.cn" + +#~ msgid "DNS over HTTPS Proxy" +#~ msgstr "Proxy de DNS sobre HTTPS" + +#~ msgid "DNS over HTTPS Proxy Settings" +#~ msgstr "Configurações de Proxy DNS sobre HTTPS" + +#~ msgid "Provider" +#~ msgstr "Provedor" + +#~ msgid "Subnet address" +#~ msgstr "Endereço de sub-rede" + +#~ msgid "Uknown Provider" +#~ msgstr "Provedor Desconhecido" + +#~ msgid "HTTPS DNS Proxy" +#~ msgstr "Proxy de DNS HTTPS" + +#~ msgid "HTTPS DNS Proxy Settings" +#~ msgstr "Configurações de proxy HTTPS DNS" diff --git a/luci-app-https-dns-proxy/po/pt_BR/https-dns-proxy.po b/luci-app-https-dns-proxy/po/pt_BR/https-dns-proxy.po new file mode 100644 index 000000000..a0bc44ca4 --- /dev/null +++ b/luci-app-https-dns-proxy/po/pt_BR/https-dns-proxy.po @@ -0,0 +1,191 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-02-21 21:18+0000\n" +"Last-Translator: Wellington Terumi Uemura \n" +"Language-Team: Portuguese (Brazil) \n" +"Language: pt_BR\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.11.1\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "AdGuard (Proteção Familiar)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "AdGuard (Padrão)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "CleanBrowsing (Filtro Adulto)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "CleanBrowsing (Filtro Familiar)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "CleanBrowsing (Filtro de Segurança)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP e DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "DNS sobre Proxy HTTPS" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "Configurações de Proxy DNS sobre HTTPS" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "DNS.SB" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "Digitale Gesellschaft" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "Desativar" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "DoH" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "Sub-rede de clientes EDNS" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "Ativar" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "Para obter mais informações sobre diferentes opções, verifique" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "Google" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "Instâncias" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "Escutar endereço" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "Porta de escuta" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "Carregando" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "ODVR (nic.cz)" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "Servidor proxy" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "Quad 9 (Preferível)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "Quad 9 (Protegido com Suporte a ECS)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "Quad 9 (Seguro)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "Quad 9 (Sem Segurança)" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "Recarregar" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "Resolvedor" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "Em execução" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "Condição do Serviço" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "Iniciar" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "Parar" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "Parado" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "Provedor Desconhecido" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" +"Quando você adiciona/remove quaisquer instâncias abaixo, elas serão usadas " +"para substituir a seção 'Encaminhamentos DNS' de" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "e" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "em" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "não está instalado ou não foi encontrado" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "rubyfish.cn" + +#~ msgid "DNS over HTTPS Proxy" +#~ msgstr "DNS sobre Proxy HTTPS" + +#~ msgid "DNS over HTTPS Proxy Settings" +#~ msgstr "Configurações de DNS sobre Proxy HTTPS" + +#~ msgid "Provider" +#~ msgstr "Provedor" + +#~ msgid "Subnet address" +#~ msgstr "Endereço de sub-rede" + +#~ msgid "Uknown Provider" +#~ msgstr "Provedor Desconhecido" diff --git a/luci-app-https-dns-proxy/po/ro/https-dns-proxy.po b/luci-app-https-dns-proxy/po/ro/https-dns-proxy.po new file mode 100644 index 000000000..fbffd76c0 --- /dev/null +++ b/luci-app-https-dns-proxy/po/ro/https-dns-proxy.po @@ -0,0 +1,175 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-01-10 12:24+0000\n" +"Last-Translator: Alexandru Stan \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Weblate 3.10.1\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "Dezactivează" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "Activează" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "Încărcare" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "Pornește" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/ru/https-dns-proxy.po b/luci-app-https-dns-proxy/po/ru/https-dns-proxy.po new file mode 100644 index 000000000..506cc926d --- /dev/null +++ b/luci-app-https-dns-proxy/po/ru/https-dns-proxy.po @@ -0,0 +1,175 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-03-24 16:46+0000\n" +"Last-Translator: Константин \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "AdGuard (Семейная защита)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "AdGuard (Стандарт)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "CleanBrowsing (Фильтр для взрослых)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "CleanBrowsing (Семейный фильтр)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "CleanBrowsing (Фильтр безопасности)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP и DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "DNS Over HTTPS" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "Настройки DNS Over HTTPS" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "DNS.SB" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "Digitale Gesellschaft" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "Отключить" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "DoH" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "Клиентская подсеть EDNS" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "Включить" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "Для получения дополнительной информации о различных опциях, проверьте" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "Google" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "Адрес" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "Порт" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "Загрузка" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "ODVR (nic.cz)" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "Прокси сервер" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "Quad 9 (Рекомендуется)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "Quad 9 (Защищено поддержкой ECS)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "Quad 9 (Защищен)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "Перезапустить" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "Поставщик" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "Запущен" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "Статус сервиса" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "Запустить" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "Остановить" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "Остановлено" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "Неизвестный поставщик" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "и" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "не установлен или не найден" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/sk/https-dns-proxy.po b/luci-app-https-dns-proxy/po/sk/https-dns-proxy.po new file mode 100644 index 000000000..802f26451 --- /dev/null +++ b/luci-app-https-dns-proxy/po/sk/https-dns-proxy.po @@ -0,0 +1,174 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-04-04 17:35+0000\n" +"Last-Translator: Dušan Kazik \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP a DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "Zakázať" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "Spustiť" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "Zastaviť" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/sv/https-dns-proxy.po b/luci-app-https-dns-proxy/po/sv/https-dns-proxy.po new file mode 100644 index 000000000..88edf2604 --- /dev/null +++ b/luci-app-https-dns-proxy/po/sv/https-dns-proxy.po @@ -0,0 +1,174 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2019-12-03 08:25+0000\n" +"Last-Translator: Mattias Münster \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10-dev\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP och DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "Inaktivera" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "Aktivera" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "Lyssningsadress" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "Lyssningsport" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "Laddar" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "Ladda om" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "Starta" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "Stoppad" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/templates/https-dns-proxy.pot b/luci-app-https-dns-proxy/po/templates/https-dns-proxy.pot new file mode 100644 index 000000000..6b7877f26 --- /dev/null +++ b/luci-app-https-dns-proxy/po/templates/https-dns-proxy.pot @@ -0,0 +1,177 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:116 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:94 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:57 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:86 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:166 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:54 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:13 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:114 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh.lua:3 +msgid "LibreDNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh-ads.lua:3 +msgid "LibreDNS (No Ads)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:149 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:162 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:169 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:44 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:122 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:86 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:96 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:98 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:47 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:49 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:114 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:34 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:86 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +msgid "disabled" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:59 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/tr/https-dns-proxy.po b/luci-app-https-dns-proxy/po/tr/https-dns-proxy.po new file mode 100644 index 000000000..aa8333eab --- /dev/null +++ b/luci-app-https-dns-proxy/po/tr/https-dns-proxy.po @@ -0,0 +1,174 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2019-12-09 20:04+0000\n" +"Last-Translator: İsmail Karslı \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10-dev\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "Durdur" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/uk/https-dns-proxy.po b/luci-app-https-dns-proxy/po/uk/https-dns-proxy.po new file mode 100644 index 000000000..7c09b62e8 --- /dev/null +++ b/luci-app-https-dns-proxy/po/uk/https-dns-proxy.po @@ -0,0 +1,175 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-03-11 01:51+0000\n" +"Last-Translator: Olexandr Nesterenko \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "AdGuard (Сімейний захист)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "AdGuard (Стандарт)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "CleanBrowsing (Віковий фільтр)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "CleanBrowsing (Сімейний фільтр)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "CleanBrowsing (Безпечний фільтр)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP та DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "DNS через HTTPS проксі" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "Налаштування DNS через HTTPS проксі" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "DNS.SB" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "Digitale Gesellschaft" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "Вимкнути" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "DoH" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "Клієнтська підмережа EDNS" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "Увімкнути" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "Для більш детальної інформації по параметрах, перевірте" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "Google" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "Приклади застосування" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "Адреса для прослуховування" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "Порт для прослуховування" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "Завантаження" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "ODVR (nic.cz)" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "Проксі сервер" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "Quad 9 (Рекомендовано)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "Quad 9 (Захищено з підтримкою ECS)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "Quad 9 (Захищено)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "Quad 9 (Не захищено)" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "Стан сервісу" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "Запустити" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "Зупинити" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "Зупинено" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "Невідомий постачальник" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "та" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "не встановлено, або не знайдено" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "rubyfish.cn" diff --git a/luci-app-https-dns-proxy/po/vi/https-dns-proxy.po b/luci-app-https-dns-proxy/po/vi/https-dns-proxy.po new file mode 100644 index 000000000..918e17c85 --- /dev/null +++ b/luci-app-https-dns-proxy/po/vi/https-dns-proxy.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Language: vi\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" diff --git a/luci-app-https-dns-proxy/po/zh_Hans/https-dns-proxy.po b/luci-app-https-dns-proxy/po/zh_Hans/https-dns-proxy.po new file mode 100644 index 000000000..ea8bc1f61 --- /dev/null +++ b/luci-app-https-dns-proxy/po/zh_Hans/https-dns-proxy.po @@ -0,0 +1,207 @@ +# +# Yangfl , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2020-02-19 13:30+0000\n" +"Last-Translator: xiazhang \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.11\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "AdGuard(家庭保护)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "AdGuard(标准)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "CleanBrowsing(成人过滤器)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "CleanBrowsing(家庭过滤器)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "CleanBrowsing(安全筛选器)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "Cloudflare" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "DHCP/DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "通过 HTTPS 代理的 DNS" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "通过 HTTPS 代理的 DNS 设置" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "DNS.SB" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "Digitale Gesellschaft" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "禁用" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "DoH" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "EDNS 客户端子网" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "启用" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "有关不同选项的更多信息,请检查" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "谷歌" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "实例" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "监听地址" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "监听端口" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "加载中" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "ODVR (nic.cz)" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "代理服务器" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "Quad 9(推荐)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "Quad 9(获得ECS支持)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "Quad 9(安全)" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "Quad 9(不安全)" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "重新载入" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "解析器" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "运行中" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "服务状态" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "启动" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "停止" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "已停止" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "未知的提供商" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "当您添加/删除下面的任何实例时,它们将用于覆盖以下实例的“ DNS转发”部分" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "和" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "在" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "未安装或未找到" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "rubyfish.cn" + +#~ msgid "DNS over HTTPS Proxy" +#~ msgstr "DNS over HTTPS 代理" + +#~ msgid "DNS over HTTPS Proxy Settings" +#~ msgstr "DNS over HTTPS代理设置" + +#~ msgid "Provider" +#~ msgstr "提供商" + +#~ msgid "Subnet address" +#~ msgstr "子网地址" + +#~ msgid "Uknown Provider" +#~ msgstr "未知提供商" + +#~ msgid "HTTPS DNS Proxy" +#~ msgstr "HTTPS DNS 代理" + +#~ msgid "HTTPS DNS Proxy Settings" +#~ msgstr "HTTPS DNS 代理设置" + +#~ msgid "Group name" +#~ msgstr "组名称" + +#~ msgid "User name" +#~ msgstr "用户名" diff --git a/luci-app-https-dns-proxy/po/zh_Hant/https-dns-proxy.po b/luci-app-https-dns-proxy/po/zh_Hant/https-dns-proxy.po new file mode 100644 index 000000000..dd7a75f8a --- /dev/null +++ b/luci-app-https-dns-proxy/po/zh_Hant/https-dns-proxy.po @@ -0,0 +1,198 @@ +# +# Yangfl , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2020-02-25 23:11+0000\n" +"Last-Translator: Trevor \n" +"Language-Team: Chinese (Traditional) \n" +"Language: zh_Hant\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 +msgid "AdGuard (Family Protection)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 +msgid "AdGuard (Standard)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 +msgid "CleanBrowsing (Adult Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 +msgid "CleanBrowsing (Family Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 +msgid "CleanBrowsing (Security Filter)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 +msgid "Cloudflare" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 +msgid "DHCP and DNS" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 +msgid "DNS Over HTTPS Proxy" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 +msgid "DNS Over HTTPS Proxy Settings" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 +msgid "DNS.SB" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 +msgid "Digitale Gesellschaft" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 +msgid "Disable" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "DoH" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 +msgid "EDNS client subnet" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 +msgid "Enable" +msgstr "啟用" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 +msgid "For more information on different options check" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 +msgid "Google" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "Instances" +msgstr "例項" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 +msgid "Listen address" +msgstr "監聽位址" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 +msgid "Listen port" +msgstr "監聽埠" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 +msgid "Loading" +msgstr "載入中" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 +msgid "ODVR (nic.cz)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 +msgid "Proxy server" +msgstr "代理伺服器" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 +msgid "Quad 9 (Recommended)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 +msgid "Quad 9 (Secured with ECS Support)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 +msgid "Quad 9 (Secured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 +msgid "Quad 9 (Unsecured)" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 +msgid "Reload" +msgstr "重新載入" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 +msgid "Resolver" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "Running" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 +msgid "Service Status" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 +msgid "Start" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 +msgid "Stop" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 +msgid "Stopped" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 +msgid "Unknown Provider" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 +msgid "" +"When you add/remove any instances below, they will be used to override the " +"'DNS forwardings' section of" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 +msgid "and" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 +msgid "at" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 +msgid "is not installed or not found" +msgstr "" + +#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 +msgid "rubyfish.cn" +msgstr "" + +#~ msgid "Provider" +#~ msgstr "提供商" + +#~ msgid "Subnet address" +#~ msgstr "子網位址" + +#~ msgid "HTTPS DNS Proxy" +#~ msgstr "HTTPS DNS 代理" + +#~ msgid "HTTPS DNS Proxy Settings" +#~ msgstr "HTTPS DNS 代理設定" + +#~ msgid "Group name" +#~ msgstr "組名稱" + +#~ msgid "User name" +#~ msgstr "使用者名稱" diff --git a/luci-app-https-dns-proxy/root/etc/uci-defaults/40_luci-https-dns-proxy b/luci-app-https-dns-proxy/root/etc/uci-defaults/40_luci-https-dns-proxy new file mode 100644 index 000000000..a1ecfcea2 --- /dev/null +++ b/luci-app-https-dns-proxy/root/etc/uci-defaults/40_luci-https-dns-proxy @@ -0,0 +1,3 @@ +#!/bin/sh +rm -rf /var/luci-modulecache/; rm -f /var/luci-indexcache; +exit 0 diff --git a/luci-app-https-dns-proxy/root/usr/share/rpcd/acl.d/luci-app-https-dns-proxy.json b/luci-app-https-dns-proxy/root/usr/share/rpcd/acl.d/luci-app-https-dns-proxy.json new file mode 100644 index 000000000..b2f1cbc0d --- /dev/null +++ b/luci-app-https-dns-proxy/root/usr/share/rpcd/acl.d/luci-app-https-dns-proxy.json @@ -0,0 +1,11 @@ +{ + "luci-app-https-dns-proxy": { + "description": "Grant UCI access for luci-app-https-dns-proxy", + "read": { + "uci": [ "https-dns-proxy" ] + }, + "write": { + "uci": [ "https-dns-proxy" ] + } + } +} \ No newline at end of file diff --git a/luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json b/luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json new file mode 100644 index 000000000..c85182859 --- /dev/null +++ b/luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json @@ -0,0 +1,11 @@ +{ + "luci-app-iperf": { + "description": "Grant UCI access for luci-app-iperf", + "read": { + "uci": [ "iperf" ] + }, + "write": { + "uci": [ "iperf" ] + } + } +} \ No newline at end of file diff --git a/luci-app-macvlan/Makefile b/luci-app-macvlan/Makefile index 8414d239a..5ad2647f5 100644 --- a/luci-app-macvlan/Makefile +++ b/luci-app-macvlan/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2017-2019 Chen Minqiang +# Copyright (C) 2020 Ycarus (Yannick Chabanois) for OpeenMPTCProuter # # This is free software, licensed under the GNU General Public License v3. # See /LICENSE for more information. @@ -7,72 +7,10 @@ include $(TOPDIR)/rules.mk -PKG_NAME:=luci-app-macvlan -PKG_VERSION:=1.0.0 -PKG_RELEASE:=1 +LUCI_TITLE:=LuCI Support for macvlan +LUC_PKGARCH:=all +LUCI_DEPENDS:=+kmod-macvlan +busybox +@BUSYBOX_CUSTOM +@BUSYBOX_CONFIG_VCONFIG -PKG_LICENSE:=GPLv3 -PKG_LICENSE_FILES:=LICENSE -PKG_MAINTAINER:=Chen Minqiang +include $(TOPDIR)/feeds/luci/luci.mk -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) - -include $(INCLUDE_DIR)/package.mk - -define Package/luci-app-macvlan - CATEGORY:=OpenMPTCProuter - SUBMENU:=Macvlan - TITLE:=LuCI Support for macvlan - PKGARCH:=all - DEPENDS:=+kmod-macvlan +busybox +@BUSYBOX_CUSTOM +@BUSYBOX_CONFIG_VCONFIG -endef - -define Package/luci-app-macvlan/description - LuCI Support for macvlan. -endef - -define Build/Prepare - $(foreach po,$(wildcard ${CURDIR}/files/luci/i18n/*.po), \ - po2lmo $(po) $(PKG_BUILD_DIR)/$(patsubst %.po,%.lmo,$(notdir $(po)));) -endef - -define Build/Configure -endef - -define Build/Compile -endef - -define Package/luci-app-macvlan/postinst -#!/bin/sh -if [ -z "$${IPKG_INSTROOT}" ]; then - rm -rf /tmp/luci-indexcache /tmp/luci-modulecache -fi - -if [ -z "$$IPKG_INSTROOT" ]; then - ( . /etc/uci-defaults/40_luci-app-macvlan ) - rm -f /etc/uci-defaults/40_luci-app-macvlan -fi - -exit 0 -endef - -define Package/luci-app-macvlan/conffiles -/etc/config/macvlan -endef - -define Package/luci-app-macvlan/install - $(INSTALL_DIR) $(1)/usr/lib/lua/luci/i18n - $(INSTALL_DATA) $(PKG_BUILD_DIR)/macvlan.*.lmo $(1)/usr/lib/lua/luci/i18n/ - $(INSTALL_DIR) $(1)/usr/lib/lua/luci/controller - $(INSTALL_DATA) ./files/luci/controller/*.lua $(1)/usr/lib/lua/luci/controller/ - $(INSTALL_DIR) $(1)/usr/lib/lua/luci/model/cbi/macvlan - $(INSTALL_DATA) ./files/luci/model/cbi/macvlan/*.lua $(1)/usr/lib/lua/luci/model/cbi/macvlan/ - $(INSTALL_DIR) $(1)/etc/config - $(INSTALL_DATA) ./files/root/etc/config/macvlan $(1)/etc/config/macvlan - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) ./files/root/etc/init.d/macvlan $(1)/etc/init.d/macvlan - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_DATA) ./files/root/etc/uci-defaults/40_luci-app-macvlan $(1)/etc/uci-defaults/40_luci-app-macvlan -endef - -$(eval $(call BuildPackage,luci-app-macvlan)) +# call BuildPackage - OpenWrt buildroot signature \ No newline at end of file diff --git a/luci-app-macvlan/files/luci/controller/macvlan.lua b/luci-app-macvlan/files/luci/controller/macvlan.lua deleted file mode 100644 index 3207db1b8..000000000 --- a/luci-app-macvlan/files/luci/controller/macvlan.lua +++ /dev/null @@ -1,10 +0,0 @@ --- Copyright (C) 2019 X-WRT - -module("luci.controller.macvlan", package.seeall) - -function index() - local page - - page = entry({"admin", "network", "macvlan"}, cbi("macvlan/macvlan"), _("Macvlan")) - page.leaf = true -end diff --git a/luci-app-macvlan/files/luci/i18n/macvlan.zh-cn.po b/luci-app-macvlan/files/luci/i18n/macvlan.zh-cn.po deleted file mode 100644 index a06710760..000000000 --- a/luci-app-macvlan/files/luci/i18n/macvlan.zh-cn.po +++ /dev/null @@ -1,14 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Macvlan" -msgstr "Macvlan" - -msgid "Macvlan Settings" -msgstr "Macvlan设置" - -msgid "Interface" -msgstr "网络接口" - -msgid "Index" -msgstr "序号" diff --git a/luci-app-macvlan/files/luci/model/cbi/macvlan/macvlan.lua b/luci-app-macvlan/files/luci/model/cbi/macvlan/macvlan.lua deleted file mode 100644 index 2bcba5f18..000000000 --- a/luci-app-macvlan/files/luci/model/cbi/macvlan/macvlan.lua +++ /dev/null @@ -1,22 +0,0 @@ --- Copyright (C) 2019 X-WRT - -local net = require "luci.model.network".init() -local ifaces = net:get_interfaces() or { net:get_interface() } - -m = Map("macvlan", translate("Macvlan"), translate("You can configure Macvlan virtual interfaces base on the real itnerface you want.")) - -s = m:section(TypedSection, "macvlan", translate("Macvlan Settings")) -s.addremove = true -s.anonymous = false -s.template = "cbi/tblsection" - -hn = s:option(Value, "ifname", translate("Interface")) -hn.rmempty = false - -for _, iface in ipairs(ifaces) do - if iface:type() ~= "macvlan" then - hn:value(iface:name(),"%s" % iface:name()) - end -end - -return m diff --git a/luci-app-macvlan/htdocs/luci-static/resources/view/network/macvlan.js b/luci-app-macvlan/htdocs/luci-static/resources/view/network/macvlan.js new file mode 100644 index 000000000..ffdf4514a --- /dev/null +++ b/luci-app-macvlan/htdocs/luci-static/resources/view/network/macvlan.js @@ -0,0 +1,35 @@ +'use strict'; +'require rpc'; +'require form'; +'require tools.widgets as widgets'; + +return L.view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + load: function() { + return this.callHostHints(); + }, + + render: function(hosts) { + var m, s, o; + + m = new form.Map('macvlan', _('Macvlan')); + + s = m.section(form.GridSection, 'macvlan', _('Interfaces')); + s.addremove = true; + s.anonymous = true; + + o = s.option(form.Value, 'name', _('Name')); + o.datatype = 'uciname'; + o.rmempty = false; + + o = s.option(widgets.DeviceSelect, 'ifname', _('Interface')); + o.rmempty = false; + + return m.render(); + } +}); diff --git a/luci-app-macvlan/files/root/etc/config/macvlan b/luci-app-macvlan/root/etc/config/macvlan similarity index 100% rename from luci-app-macvlan/files/root/etc/config/macvlan rename to luci-app-macvlan/root/etc/config/macvlan diff --git a/luci-app-macvlan/files/root/etc/init.d/macvlan b/luci-app-macvlan/root/etc/init.d/macvlan similarity index 95% rename from luci-app-macvlan/files/root/etc/init.d/macvlan rename to luci-app-macvlan/root/etc/init.d/macvlan index fcecf3ac8..eb51d3808 100755 --- a/luci-app-macvlan/files/root/etc/init.d/macvlan +++ b/luci-app-macvlan/root/etc/init.d/macvlan @@ -36,7 +36,15 @@ _save_macaddr() { _create_interface() { local _masterifname - local _ifname=$1 + config_get _ifname "$1" name + # Convert from old config without name defined + [ -z "$_ifname" ] && { + uci batch <<-EOF + set macvlan.$1.name=$1 + commit macvlan + EOF + _ifname=$1 + } config_get _masterifname "$1" ifname uci batch <<-EOF set network.$_ifname=interface diff --git a/luci-app-macvlan/files/root/etc/uci-defaults/40_luci-app-macvlan b/luci-app-macvlan/root/etc/uci-defaults/40_luci-app-macvlan similarity index 100% rename from luci-app-macvlan/files/root/etc/uci-defaults/40_luci-app-macvlan rename to luci-app-macvlan/root/etc/uci-defaults/40_luci-app-macvlan diff --git a/luci-app-macvlan/root/usr/share/luci/menu.d/luci-app-macvlan.json b/luci-app-macvlan/root/usr/share/luci/menu.d/luci-app-macvlan.json new file mode 100644 index 000000000..01c2164ee --- /dev/null +++ b/luci-app-macvlan/root/usr/share/luci/menu.d/luci-app-macvlan.json @@ -0,0 +1,10 @@ +{ + "admin/network/macvlan": { + "title": "Macvlan", + "order": 60, + "action": { + "type": "view", + "path": "network/macvlan" + } + } +} diff --git a/luci-app-macvlan/root/usr/share/rpcd/acl.d/luci-app-macvlan.json b/luci-app-macvlan/root/usr/share/rpcd/acl.d/luci-app-macvlan.json new file mode 100644 index 000000000..f2a4fdc9f --- /dev/null +++ b/luci-app-macvlan/root/usr/share/rpcd/acl.d/luci-app-macvlan.json @@ -0,0 +1,11 @@ +{ + "luci-app-macvlan": { + "description": "Grant UCI access for luci-app-macvlan", + "read": { + "uci": [ "macvlan" ] + }, + "write": { + "uci": [ "macvlan" ] + } + } +} \ No newline at end of file diff --git a/luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json b/luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json new file mode 100644 index 000000000..719eead98 --- /dev/null +++ b/luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json @@ -0,0 +1,11 @@ +{ + "luci-app-mail": { + "description": "Grant UCI access for luci-app-mail", + "read": { + "uci": [ "mail" ] + }, + "write": { + "uci": [ "mail" ] + } + } +} \ No newline at end of file diff --git a/luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json b/luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json new file mode 100644 index 000000000..e1727a866 --- /dev/null +++ b/luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json @@ -0,0 +1,11 @@ +{ + "luci-app-mlvpn": { + "description": "Grant UCI access for luci-app-mlvpn", + "read": { + "uci": [ "mlvpn" ] + }, + "write": { + "uci": [ "mlvpn" ] + } + } +} \ No newline at end of file diff --git a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua index 7c0084327..5c32389fb 100644 --- a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua +++ b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua @@ -23,14 +23,14 @@ mtcppm:value("default", translate("default")) mtcppm:value("fullmesh", translate("fullmesh")) mtcppm:value("ndiffports", translate("ndiffports")) mtcppm:value("binder", translate("binder")) -if uname.release:sub(1,4) == "4.19" then +if uname.release:sub(1,4) ~= "4.14" then mtcppm:value("netlink", translate("Netlink")) end local mtcpsch = s:option(ListValue, "mptcp_scheduler", translate("Multipath TCP scheduler")) mtcpsch:value("default", translate("default")) mtcpsch:value("roundrobin", translate("round-robin")) mtcpsch:value("redundant", translate("redundant")) -if uname.release:sub(1,4) == "4.19" then +if uname.release:sub(1,4) ~= "4.14" then mtcpsch:value("blest", translate("BLEST")) mtcpsch:value("ecf", translate("ECF")) end @@ -59,7 +59,7 @@ mptcp:value("on", translate("enabled")) mptcp:value("off", translate("disabled")) mptcp:value("master", translate("master")) mptcp:value("backup", translate("backup")) -mptcp:value("handover", translate("handover")) +--mptcp:value("handover", translate("handover")) mptcp.default = "off" diff --git a/luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json b/luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json new file mode 100644 index 000000000..d07f07916 --- /dev/null +++ b/luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json @@ -0,0 +1,11 @@ +{ + "luci-app-mptcp": { + "description": "Grant UCI access for luci-app-mptcp", + "read": { + "uci": [ "openmptcprouter", "network" ] + }, + "write": { + "uci": [ "openmptcprouter", "network" ] + } + } +} \ No newline at end of file diff --git a/luci-app-nginx-ha/root/etc/init.d/nginx-ha b/luci-app-nginx-ha/root/etc/init.d/nginx-ha index 34f990de5..a33371ef0 100755 --- a/luci-app-nginx-ha/root/etc/init.d/nginx-ha +++ b/luci-app-nginx-ha/root/etc/init.d/nginx-ha @@ -52,6 +52,7 @@ start_instance() { listen ${listen:-0.0.0.0:6666} udp; listen ${listen:-0.0.0.0:6666} so_keepalive=off; proxy_pass ${1}; + proxy_buffering off; } " } diff --git a/luci-app-nginx-ha/root/usr/share/rpcd/acl.d/luci-app-nginx-ha.json b/luci-app-nginx-ha/root/usr/share/rpcd/acl.d/luci-app-nginx-ha.json new file mode 100644 index 000000000..b6cab190e --- /dev/null +++ b/luci-app-nginx-ha/root/usr/share/rpcd/acl.d/luci-app-nginx-ha.json @@ -0,0 +1,11 @@ +{ + "luci-app-nginx-ha": { + "description": "Grant UCI access for luci-app-nginx-ha", + "read": { + "uci": [ "nginx-ha" ] + }, + "write": { + "uci": [ "nginx-ha" ] + } + } +} \ No newline at end of file diff --git a/luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js b/luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js new file mode 100644 index 000000000..3ab345321 --- /dev/null +++ b/luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js @@ -0,0 +1,164 @@ +'use strict'; +'require rpc'; +'require form'; +'require fs'; +'require uci'; +'require tools.widgets as widgets'; + +var callHostHints; + +return L.view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + load: function() { + return this.callHostHints(); + }, + + render: function(hosts) { + var m, s, o; + + m = new form.Map('omr-bypass', _('OMR-Bypass')); + + s = m.section(form.GridSection, 'domains', _('Domains')); + s.addremove = true; + s.anonymous = true; + + o = s.option(form.Value, 'domain', _('Domain')); + o.rmempty = false; + + o = s.option(widgets.DeviceSelect, 'interface', _('Interface')); + o.rmempty = false; + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + s = m.section(form.GridSection, 'ips', _('IPs and Networks')); + s.addremove = true; + s.anonymous = true; + + o = s.option(form.Value, 'ip', _('IP')); + o.rmempty = false; + + o = s.option(widgets.DeviceSelect, 'interface', _('Interface')); + o.rmempty = false; + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + s = m.section(form.GridSection, 'dest_port', _('Ports destination')); + s.addremove = true; + s.anonymous = true; + + o = s.option(form.Value, 'dport', _('port')); + o.rmempty = false; + + o = s.option(form.MultiValue, 'proto', _('protocol')); + o.default = 'tcp'; + o.modalonly = true; + o.custom = true; + o.rmempty = false; + o.value('tcp'); + o.value('udp'); + + o = s.option(widgets.DeviceSelect, 'interface', _('Interface')); + o.rmempty = false; + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + s = m.section(form.GridSection, 'macs', _('MAC-Address')); + s.addremove = true; + s.anonymous = true; + + o = s.option(form.Value, 'mac', _('source MAC-Address')); + o.datatype = 'list(unique(macaddr))'; + o.rmempty = false; + Object.keys(hosts).forEach(function(mac) { + var hint = hosts[mac].name || hosts[mac].ipv4; + o.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac); + }); + + o = s.option(widgets.DeviceSelect, 'interface', _('Interface')); + o.rmempty = false; + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + s = m.section(form.GridSection, 'lan_ip', _('Source lan IP address or network')); + s.addremove = true; + s.anonymous = true; + + o = s.option(form.Value, 'ip', _('IP Address')); + o.datatype = 'or(ip4addr,ip6addr)'; + o.rmempty = false; + Object.keys(hosts).forEach(function(mac) { + if (hosts[mac].ipv4) { + var hint = hosts[mac].name; + o.value(hosts[mac].ipv4, hint ? '%s (%s)'.format(hosts[mac].ipv4, hint) : hosts[mac].ipv4); + } + }); + + o = s.option(widgets.DeviceSelect, 'interface', _('Interface')); + o.rmempty = false; + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + s = m.section(form.GridSection, 'asns', _('ASN')); + s.addremove = true; + s.anonymous = true; + + o = s.option(form.Value, 'asn', _('ASN')); + o.rmempty = false; + + o = s.option(widgets.DeviceSelect, 'interface', _('Interface')); + o.rmempty = false; + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + s = m.section(form.GridSection, 'dpis', _('Protocols and services')); + s.addremove = true; + s.anonymous = true; + + o = s.option(form.Value, 'proto', _('Protocol/Service')); + o.rmempty = false; + o.load = function(section_id) { + return Promise.all([ + fs.lines('/proc/net/xt_ndpi/proto'), + fs.lines('/proc/net/xt_ndpi/host_proto') + ]).then(L.bind(function(linesi) { + var proto = linesi[0], + host = linesi[1], + name = []; + for (var i = 0; i < proto.length; i++) { + var m = proto[i].split(/\s+/); + if (m && m[0] != "#id") + name.push(m[2]); + } + for (var i = 0; i < host.length; i++) { + var m = host[i].split(/:/); + if (m && m[0] != "#Proto") + name.push(m[0]); + } + name = Array.from(new Set(name)).sort(); + for (var i = 0; i < name.length; i++) { + this.value(name[i]); + } + return this.super('load', [section_id]); + },this)); + }; + + o = s.option(widgets.DeviceSelect, 'interface', _('Interface')); + o.rmempty = false; + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + return m.render(); + } +}); diff --git a/luci-app-omr-bypass/luasrc/controller/omr-bypass.lua b/luci-app-omr-bypass/luasrc/controller/omr-bypass.lua deleted file mode 100644 index 46ba4fabf..000000000 --- a/luci-app-omr-bypass/luasrc/controller/omr-bypass.lua +++ /dev/null @@ -1,9 +0,0 @@ -local ucic = luci.model.uci.cursor() -local dt = require "luci.cbi.datatypes" -module("luci.controller.omr-bypass", package.seeall) - -function index() - entry({"admin", "services", "omr-bypass"}, alias("admin", "services", "omr-bypass", "index"), _("OMR-Bypass")) - --entry({"admin", "services", "omr-bypass", "index"}, template("omr-bypass/bypass")) - entry({"admin", "services", "omr-bypass", "index"}, cbi("omr-bypass")) -end diff --git a/luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua b/luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua deleted file mode 100644 index b819c39b1..000000000 --- a/luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua +++ /dev/null @@ -1,169 +0,0 @@ --- Copyright 2018-2019 Ycarus (Yannick Chabanois) --- Licensed to the public under the Apache License 2.0. - -local ipc = require "luci.ip" -local sys = require "luci.sys" -local net = require "luci.model.network".init() -local ifaces = net:get_interfaces() or { net:get_interface() } - -m = Map("omr-bypass", translate("Bypass"), translate("Here you can bypass ShadowSocks and VPN. If you set Interface to Default this use any working interface.")) - -s = m:section(TypedSection, "domains", translate("Domains")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -hn = s:option(Value, "name", translate("Domain")) -hn.datatype = "hostname" -hn.optional = false -hn.rmempty = true - -ifd = s:option(ListValue, "interface", translate("Interface")) -ifd.rmempty = true - -dn = s:option(Value,"note",translate("Note")) - -s = m:section(TypedSection, "ips", translate("IPs and Networks")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -ip = s:option(Value, "ip", translate("IP")) -ip.datatype = "ipaddr" -ip.rmempty = true -ip.optional = false - -ifi = s:option(ListValue, "interface", translate("Interface")) -ifi.rmempty = true - -inn = s:option(Value,"note",translate("Note")) - - -s = m:section(TypedSection, "dest_port", translate("Ports destination")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -dp = s:option(Value, "dport", translate("port")) -dp.rmempty = true -dp.optional = false - -proto = s:option(ListValue, "proto", translate("Protocol")) -proto:value("all",translate("ALL")) -proto:value("tcp","TCP") -proto:value("udp","UDP") -proto:value("icmp","ICMP") -proto.rmempty = true -proto.optional = false - -ifdp = s:option(ListValue, "interface", translate("Interface")) -ifdp.rmempty = true - -dpn = s:option(Value,"note",translate("Note")) - -s = m:section(TypedSection, "macs", translate("MAC-Address")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -mac = s:option(Value, "mac", translate("Source MAC-Address")) -mac.datatype = "list(macaddr)" -mac.rmempty = true -mac.optional = false - -sys.net.host_hints(function(m, v4, v6, name) - if m then - mac:value(m, "%s (%s)" %{m, name or v4 or v6}) - end -end) - -ifm = s:option(ListValue, "interface", translate("Interface")) -ifm.rmempty = true - -macn = s:option(Value,"note",translate("Note")) - -s = m:section(TypedSection, "lan_ip", translate("Source lan IP address or network")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -ip = s:option(Value, "ip", translate("IP Address")) -ip.datatype = "ipaddr" -ip.rmempty = true -ip.optional = false - -ifl = s:option(ListValue, "interface", translate("Interface")) -ifl.rmempty = true - -lanipn = s:option(Value,"note",translate("Note")) - -s = m:section(TypedSection, "asns", translate("ASN")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -asn = s:option(Value, "asn", translate("ASN")) -asn.rmempty = true -asn.optional = false - -ifa = s:option(ListValue, "interface", translate("Interface")) -ifa.rmempty = true - -asnn = s:option(Value,"note",translate("Note")) - -s = m:section(TypedSection, "dpis", translate("Protocols and services")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -dpi = s:option(ListValue, "proto", translate("Protocol/Service")) -dpi.rmempty = true -dpi.optional = false -local xt_ndpi_available = nixio.fs.access("/proc/net/xt_ndpi/proto") -if xt_ndpi_available then - local protos = {} - for l in io.lines("/proc/net/xt_ndpi/proto") do - local a,b,c,d = l:match('(%w+) (%w+)') - if b ~= "2" and not string.match(b,"custom") then - table.insert(protos,b) - end - end - table.sort(protos, function(a, b) return a:upper() < b:upper() end) - for _,b in ipairs(protos) do - dpi:value(b,"%s" % tostring(b)) - end -end - -ifp = s:option(ListValue, "interface", translate("Interface")) -ifp.rmempty = true - -psn = s:option(Value,"note",translate("Note")) - - -ifd.default = "all" -ifi.default = "all" -ifp.default = "all" -ifm.default = "all" -ifl.default = "all" -ifa.default = "all" -ifdp.default = "all" -ifd:value("all",translate("Default")) -ifi:value("all",translate("Default")) -ifp:value("all",translate("Default")) -ifm:value("all",translate("Default")) -ifl:value("all",translate("Default")) -ifa:value("all",translate("Default")) -ifdp:value("all",translate("Default")) -for _, iface in ipairs(ifaces) do - if iface:is_up() then - ifd:value(iface:name(),"%s" % iface:name()) - ifi:value(iface:name(),"%s" % iface:name()) - ifp:value(iface:name(),"%s" % iface:name()) - ifm:value(iface:name(),"%s" % iface:name()) - ifl:value(iface:name(),"%s" % iface:name()) - ifa:value(iface:name(),"%s" % iface:name()) - ifdp:value(iface:name(),"%s" % iface:name()) - end -end - -return m diff --git a/luci-app-omr-bypass/root/etc/uci-defaults/41_omr-bypass b/luci-app-omr-bypass/root/etc/uci-defaults/41_omr-bypass index 37f45bce8..b8dc2c3e3 100755 --- a/luci-app-omr-bypass/root/etc/uci-defaults/41_omr-bypass +++ b/luci-app-omr-bypass/root/etc/uci-defaults/41_omr-bypass @@ -82,6 +82,13 @@ if [ "$(uci -q get omr-bypass.lesnumeriques)" = "" ]; then commit omr-bypass EOF fi +if [ "$(uci -q get omr-bypass.disneyplus)" = "" ]; then + uci -q batch <<-EOF >/dev/null + set omr-bypass.disneyplus=proto + add_list omr-bypass.disneyplus.url='bamgrid.com' + commit omr-bypass + EOF +fi if [ ! -f /etc/crontabs/root ] || [ "$(cat /etc/crontabs/root | grep bypass)" = "" ]; then echo "0 2 * * * /etc/init.d/omr-bypass bypass_asn" >> /etc/crontabs/root fi diff --git a/luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json b/luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json new file mode 100644 index 000000000..c024c61e0 --- /dev/null +++ b/luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json @@ -0,0 +1,10 @@ +{ + "admin/services/omr-bypass": { + "title": "OMR-Bypass", + "order": 60, + "action": { + "type": "view", + "path": "services/omr-bypass" + } + } +} diff --git a/luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json b/luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json new file mode 100644 index 000000000..154554d4d --- /dev/null +++ b/luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json @@ -0,0 +1,18 @@ +{ + "luci-app-omr-bypass": { + "description": "Grant access to ndpi resources", + "read": { + "file": { + "/proc/net/xt_ndpi/proto": [ "read" ], + "/proc/net/xt_ndpi/host_proto": [ "read" ], + }, + "ubus": { + "luci-rpc": [ "getHostHints" ] + }, + "uci": [ "omr-bypass" ] + }, + "write": { + "uci": [ "omr-bypass" ] + } + } +} \ No newline at end of file diff --git a/luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-dscp.json b/luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-dscp.json new file mode 100644 index 000000000..4cb8a0bb1 --- /dev/null +++ b/luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-dscp.json @@ -0,0 +1,11 @@ +{ + "luci-app-dscp": { + "description": "Grant UCI access for luci-app-dscp", + "read": { + "uci": [ "dscp" ] + }, + "write": { + "uci": [ "dscp" ] + } + } +} \ No newline at end of file diff --git a/luci-app-omr-quota/po/fr/omr-quota.po b/luci-app-omr-quota/po/fr/omr-quota.po index 533d9c553..ec57a1a68 100644 --- a/luci-app-omr-quota/po/fr/omr-quota.po +++ b/luci-app-omr-quota/po/fr/omr-quota.po @@ -46,7 +46,7 @@ msgstr "" #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 msgid "Set monthly quota, when quota is reached interface state is set to down" -msgstr "Configurer le quota menseul, quand le quota est atteint l'interface est désactivée" +msgstr "Configurer le quota mensuel, quand le quota est atteint l'interface est désactivée" #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 msgid "TX quota (kbit)" diff --git a/luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json b/luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json new file mode 100644 index 000000000..1fb134623 --- /dev/null +++ b/luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json @@ -0,0 +1,11 @@ +{ + "luci-app-omr-quota": { + "description": "Grant UCI access for luci-app-omr-quota", + "read": { + "uci": [ "omr-quota" ] + }, + "write": { + "uci": [ "omr-quota" ] + } + } +} \ No newline at end of file diff --git a/luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json b/luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json new file mode 100644 index 000000000..c55ce91d4 --- /dev/null +++ b/luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json @@ -0,0 +1,11 @@ +{ + "luci-app-omr-tracker": { + "description": "Grant UCI access for luci-app-omr-tracker", + "read": { + "uci": [ "omr-tracker" ] + }, + "write": { + "uci": [ "omr-tracker" ] + } + } +} \ No newline at end of file diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css b/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css index 461c9090f..04786f927 100644 --- a/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css +++ b/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css @@ -96,7 +96,7 @@ ul { width: 85px; height: 50%; float: left; - z-index: -10; + /*z-index: -10;*/ /* position: absolute; top: 0; @@ -212,16 +212,18 @@ right connector from last child*/ width: 85px; height: 0; } -.tree ul li#networkRootNode:not(:first-child) td::before { +.tree ul li#networkRootNode:not(:first-child) tr.spaceline td { content: ''; position: absolute; - top: 0; + /*top: 0; + top: 75px;*/ border-left: 2px solid black; border-bottom: none; width: 2px; - height: 50%; + /*height: 50%;*/ + height: 55px; left: 200px; - z-index: -10; + /* z-index: -10;*/ } /*Time for some hover effects*/ /*We will apply the hover effect the the lineage of the element also*/ @@ -320,4 +322,7 @@ Thanks :)*/ } .space { height: 55px; -} \ No newline at end of file +} +.spaceline { + height: 55px; +} diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 43bdefb2b..7d83993a6 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -42,7 +42,7 @@ function wizard_add() local add_server_name = luci.http.formvalue("add_server_name") or "" if add_server ~= "" and add_server_name ~= "" then ucic:set("openmptcprouter",add_server_name:gsub("[^%w_]+","_"),"server") - ucic:set("openmptcprouter",add_server_name:gsub("[^%w_]+","_"),"user","openmptcprouter") + ucic:set("openmptcprouter",add_server_name:gsub("[^%w_]+","_"),"username","openmptcprouter") gostatus = false end @@ -196,6 +196,12 @@ function wizard_add() ucic:delete("qos",intf) ucic:save("qos") ucic:commit("qos") + ucic:delete("openmptcprouter",intf) + ucic:save("openmptcprouter") + ucic:commit("openmptcprouter") + ucic:delete("macvlan",intf) + ucic:save("macvlan") + ucic:commit("macvlan") if defif ~= nil and defif ~= "" then luci.sys.call("uci -q del_list vnstat.@vnstat[-1].interface=" .. defif) end @@ -209,6 +215,7 @@ function wizard_add() -- Set interfaces settings local interfaces = luci.http.formvaluetable("intf") for intf, _ in pairs(interfaces) do + local label = luci.http.formvalue("cbid.network.%s.label" % intf) or "" local proto = luci.http.formvalue("cbid.network.%s.proto" % intf) or "static" local ipaddr = luci.http.formvalue("cbid.network.%s.ipaddr" % intf) or "" local netmask = luci.http.formvalue("cbid.network.%s.netmask" % intf) or "" @@ -217,6 +224,7 @@ function wizard_add() if proto ~= "other" then ucic:set("network",intf,"proto",proto) end + ucic:set("network",intf,"label",label) ucic:set("network",intf,"ipaddr",ipaddr) ucic:set("network",intf,"netmask",netmask) ucic:set("network",intf,"gateway",gateway) @@ -463,6 +471,11 @@ function wizard_add() luci.sys.call("/etc/init.d/shadowsocks rules_down >/dev/null 2>/dev/null") end else + if serversnb == 0 then + shadowsocks_disable = 1 + else + shadowsocks_disable = 0 + end ucic:set("shadowsocks-libev","sss0","key","") ucic:set("shadowsocks-libev","sss0","disabled",shadowsocks_disable) ucic:save("shadowsocks-libev") @@ -583,7 +596,6 @@ function wizard_add() --ucic:set("openmptcprouter","vps","username","openmptcprouter") --ucic:set("openmptcprouter","vps","password",openmptcprouter_vps_key) --ucic:set("openmptcprouter","vps","get_config","1") - local shadowsocks_disable = luci.http.formvalue("disableshadowsocks") or "0" ucic:set("openmptcprouter","settings","shadowsocks_disable",shadowsocks_disable) ucic:set("openmptcprouter","settings","vpn",default_vpn) ucic:delete("openmptcprouter","settings","master_lcintf") diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm index 7f1bd4270..4edca015c 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm @@ -201,7 +201,7 @@ - + diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm index 1926abb1b..f485e4849 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm @@ -95,9 +95,10 @@ temp += '
  • '; if (mArray.wans) { - for( var j = 0; j < mArray.wans.length; j++ ) + temp += ''; + for( var j = 1; j < mArray.wans.length; j++ ) { - temp += ''; + temp += ''; } } temp += '
    '; @@ -144,7 +145,7 @@ } } - if (mArray.openmptcprouter.socks_service_enabled == true) + if (mArray.openmptcprouter.socks_service_enabled == true && mArray.openmptcprouter.service_addr != "") { if (mArray.openmptcprouter.socks_service == false) { @@ -160,7 +161,11 @@ { statusMessage += _('Filesystem is readonly') + '
    '; } - if (mArray.openmptcprouter.tun_service == false) + if (mArray.openmptcprouter.multi_vpn == true) + { + statusMessage += _('More than one default VPN is enabled') + '
    '; + } + if (mArray.openmptcprouter.tun_service == false && mArray.openmptcprouter.service_addr != "") { statusMessage += _('VPN is not running') + '
    '; } @@ -173,7 +178,8 @@ { statusMessageClass = "error"; statusIcon = "<%=resource%>/openmptcprouter/images/statusError.png"; - } else { + } else if (mArray.openmptcprouter.service_addr != "") + { if (mArray.openmptcprouter.socks_service_enabled == false) { statusMessage += _('ShadowSocks is DISABLED') + '
    '; @@ -208,7 +214,7 @@ var equipmentIcon = ''; content = ""; statusMessage = ""; - if (mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr) + if (mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr && mArray.openmptcprouter.wan_addr != "") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr); } else if (mArray.openmptcprouter.wan_addr != "" && mArray.openmptcprouter.service_addr == "127.0.0.1") @@ -217,6 +223,8 @@ } else if (mArray.openmptcprouter.wan_addr != "") { var title = String.format("%s (%s)", _('Direct output'), mArray.openmptcprouter.wan_addr); + statusMessageClass = "warning"; + statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; } else if (mArray.openmptcprouter.ss_addr != "" && mArray.openmptcprouter.vps_status != "DOWN") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.ss_addr); @@ -230,7 +238,7 @@ { statusMessage += _('No VPS IP address, No WAN IP address') + '
    '; } - if (mArray.openmptcprouter.wan_addr !== "" && mArray.openmptcprouter.vps_status == "DOWN") + if (mArray.openmptcprouter.service_addr !== "" && mArray.openmptcprouter.wan_addr !== "" && mArray.openmptcprouter.vps_status == "DOWN") { statusMessage += _('Can\'t access and use server part') + '
    '; } @@ -239,33 +247,38 @@ statusMessageClass = "error"; statusIcon = "<%=resource%>/openmptcprouter/images/statusError.png"; } - if (mArray.openmptcprouter.vps_status == "DOWN") + if (mArray.openmptcprouter.service_addr == "") { - statusMessage += _('Can\'t ping server') + '
    '; - } else if (mArray.openmptcprouter.socks_service_enabled == true && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) - { - statusMessage += _('Can\'t get public IP address from ShadowSocks') + '
    '; - } else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.external_check == true) - { - statusMessage += _('No WAN IP address detected in less than 1 second') + '
    '; - } - if (mArray.openmptcprouter.vps_admin == false) - { - statusMessage += _('Can\'t contact Server Admin Script'); - if (mArray.openmptcprouter.vps_admin_error_msg !== "") + statusMessage += _('No server defined') + '
    '; + } else { + if (mArray.openmptcprouter.vps_status == "DOWN") { - statusMessage += ' (' + mArray.openmptcprouter.vps_admin_error_msg + ')'; + statusMessage += _('Can\'t ping server') + '
    '; + } else if (mArray.openmptcprouter.socks_service_enabled == true && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) + { + statusMessage += _('Can\'t get public IP address from ShadowSocks') + '
    '; + } else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.external_check == true) + { + statusMessage += _('No WAN IP address detected in less than 1 second') + '
    '; } - statusMessage += '
    '; - } - if (mArray.openmptcprouter.vps_mptcp == "0") - { - statusMessage += _('MPTCP is not enabled on the server') + '
    '; - } - if (mArray.openmptcprouter.vps_time_accurate == false) - { - statusMessage += _('Big time difference between the server and the router') + '
    '; - } + if (mArray.openmptcprouter.vps_admin == false) + { + statusMessage += _('Can\'t contact Server Admin Script'); + if (mArray.openmptcprouter.vps_admin_error_msg !== "") + { + statusMessage += ' (' + mArray.openmptcprouter.vps_admin_error_msg + ')'; + } + statusMessage += '
    '; + } + if (mArray.openmptcprouter.vps_mptcp == "0") + { + statusMessage += _('MPTCP is not enabled on the server') + '
    '; + } + if (mArray.openmptcprouter.vps_time_accurate == false) + { + statusMessage += _('Big time difference between the server and the router') + '
    '; + } + } if (statusMessage !== "" && statusMessageClass !== "error") { statusMessageClass = "warning"; @@ -366,6 +379,9 @@ } var latency = mArray.wans[i].latency; var mtu = mArray.wans[i].mtu; + var operator = mArray.wans[i].operator; + var phonenumber = mArray.wans[i].phonenumber; + var donglestate = mArray.wans[i].donglestate; var gateway = mArray.wans[i].gateway; if (anonymize == "true" && testPrivateIP(gateway) == false) { @@ -413,6 +429,19 @@ { content += String.format('%s %s
    ',_('mtu:'), mtu); } + if (operator !== '' && anonymize !== 'true') + { + content += String.format('%s %s
    ',_('operator:'), operator); + } + if (phonenumber !== '' && anonymize !== 'true') + { + content += String.format('%s %s
    ',_('phone number:'), phonenumber); + } + if (donglestate !== '' && anonymize !== 'true') + { + content += String.format('%s %s
    ',_('state:'), donglestate); + } + if(signal !== '') { if (signal <= 0) @@ -440,7 +469,7 @@ { statusMessage += _('Multipath seems to be blocked on the connection') + '
    '; } - if(server_ping == 'DOWN') + if(server_ping == 'DOWN' && mArray.openmptcprouter.service_addr !== "") { statusMessage += _('No Server ping response after 1 second') + '
    '; } diff --git a/luci-app-openmptcprouter/root/bin/omr-ip-intf b/luci-app-openmptcprouter/root/bin/omr-ip-intf index 9903631b4..4c87b4256 100755 --- a/luci-app-openmptcprouter/root/bin/omr-ip-intf +++ b/luci-app-openmptcprouter/root/bin/omr-ip-intf @@ -1,10 +1,35 @@ #!/bin/sh -check_ipv4_website="$(uci -q get openmptcprouter.settings.check_ipv4_website)" -[ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com" -checkip=$(echo $check_ipv4_website | sed -e 's/https:\/\///' -e 's/http:\/\///' | xargs dig +short A | tr -d "\n") -ipset add ss_rules_dst_bypass_all $checkip > /dev/null 2>&1 -ip="$(curl -s -4 -m 2 --interface $1 $check_ipv4_website)" -ipset del ss_rules_dst_bypass_all $checkip > /dev/null 2>&1 -if expr "$ip" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' >/dev/null; then - echo $ip -fi \ No newline at end of file +. /lib/functions.sh + +intf=$1 + +get_ip_from_server() { + serverip=$(uci -q get openmptcprouter.$1.ip) + serverport=$(uci -q get openmptcprouter.$1.port) + getip="$(curl -s -k -4 -m 2 --interface $intf https://$serverip:$serverport/clienthost)" + [ -n "$getip" ] && getip=$(echo $getip | jsonfilter -e '@.client_host') + if expr "$getip" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' >/dev/null; then + ip=$getip + break + fi +} + +get_ip_from_website() { + check_ipv4_website="$(uci -q get openmptcprouter.settings.check_ipv4_website)" + [ -z "$check_ipv4_website" ] && check_ipv4_website="http://ip.openmptcprouter.com" + checkip=$(echo $check_ipv4_website | sed -e 's/https:\/\///' -e 's/http:\/\///' | xargs dig +short A | tr -d "\n") + ipset add ss_rules_dst_bypass_all $checkip > /dev/null 2>&1 + getip="$(curl -s -4 -m 2 --interface $intf $check_ipv4_website)" + ipset del ss_rules_dst_bypass_all $checkip > /dev/null 2>&1 + if expr "$getip" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' >/dev/null; then + ip=$getip + break + fi +} + +[ -z "$intf" ] && return +ip="" +config_load openmptcprouter +config_foreach get_ip_from_server server +[ -z "$ip" ] && get_ip_from_website +echo $ip \ No newline at end of file diff --git a/luci-app-openmptcprouter/root/bin/omr-modemmanager b/luci-app-openmptcprouter/root/bin/omr-modemmanager index 959921b74..32ac93481 100755 --- a/luci-app-openmptcprouter/root/bin/omr-modemmanager +++ b/luci-app-openmptcprouter/root/bin/omr-modemmanager @@ -1,12 +1,17 @@ #!/bin/sh MODEM_INTF=$1 [ -z "$MODEM_INTF" ] && return +INFO=$2 timeout 1 mmcli -L | while read MODEM; do MODEM_ID=$(echo $MODEM | awk -F' ' '{print $1}' | awk -F/ '{print $6}') MODEM_INFO="$(timeout 1 mmcli -m $MODEM_ID --output-keyvalue)" if [ -n "$MODEM_INFO" ] && [ "$(echo "$MODEM_INFO" | grep 'modem.generic.device ' | awk -F": " '{print $2}')" = "$MODEM_INTF" ]; then PERCENT=$(echo "$MODEM_INFO" | grep 'modem.generic.signal-quality.value' | awk -F": " '{print $2}') - echo $PERCENT + OPERATOR=$(echo "$MODEM_INFO" | grep 'modem.3gpp.operator-name' | awk -F": " '{print $2}') + NUMBER=$(echo "$MODEM_INFO" | grep 'modem.generic.own-numbders.value[1]' | awk -F": " '{print $2}') + STATE=$(echo "$MODEM_INFO" | grep 'modem.generic.state' | awk -F": " '{print $2}') + [ -z "$INFO" ] && echo $PERCENT + [ "$INFO" = "all" ] && echo "$PERCENT;$OPERATOR;$NUMBER;$STATE" exit fi done diff --git a/luci-app-openmptcprouter/root/bin/omr-qmi b/luci-app-openmptcprouter/root/bin/omr-qmi index d7c7028dd..727250195 100755 --- a/luci-app-openmptcprouter/root/bin/omr-qmi +++ b/luci-app-openmptcprouter/root/bin/omr-qmi @@ -1,27 +1,29 @@ #!/bin/sh MODEM_INTF=$1 [ -z "$MODEM_INTF" ] && return +INFO=$2 SIGNAL_INFO=$(timeout 1 uqmi -d $MODEM_INTF --get-signal-info) [ -z "$SIGNAL_INFO" ] && return -TYPE=$(echo $SIGNAL_INFO | jsonfilter -e '@.type') +TYPE=$(echo $SIGNAL_INFO | jsonfilter -e '@.type' | tr -d '\n') +PERCENT="" if [ "$TYPE" = "gsm" ]; then - RSSI=$(echo $SIGNAL_INFO | jsonfilter -e '@.rssi') + RSSI=$(echo $SIGNAL_INFO | jsonfilter -e '@.rssi' | tr -d '\n') [ -z "$RSSI" ] && return ASU=$(((RSSI + 113) / 2 )) PERCENT=$((((ASU - 0) * 100) / ( 91 - 0 ))) - echo $PERCENT -fi -if [ "$TYPE" = "umts" ]; then - RSCP=$(echo $SIGNAL_INFO | jsonfilter -e '@.rscp') +elif [ "$TYPE" = "umts" ]; then + RSCP=$(echo $SIGNAL_INFO | jsonfilter -e '@.rscp' | tr -d '\n') [ -z "$RSCP" ] && return ASU=$((RSCP + 116)) PERCENT=$((((ASU - 0) * 100) / ( 91 - 0 ))) - echo $PERCENT -fi -if [ "$TYPE" = "lte" ]; then - RSRP=$(echo $SIGNAL_INFO | jsonfilter -e '@.rsrp') +elif [ "$TYPE" = "lte" ]; then + RSRP=$(echo $SIGNAL_INFO | jsonfilter -e '@.rsrp' | tr -d '\n') [ -z "$RSRP" ] && return ASU=$((RSRP + 140)) PERCENT=$((((ASU - 3) * 100) / ( 70 - 3 ))) - echo $PERCENT fi +[ -z "$INFO" ] && echo $PERCENT && return +OPERATOR=$(timeout 1 uqmi -d $MODEM_INTF --get-serving-system | jsonfilter -e '@.plmn_description' | tr -d '\n') +NUMBER=$(timeout 1 uqmi -d $MODEM_INTF --msisdn | jsonfilter -e '@' | tr -d '\n') +STATE=$(timeout 1 uqmi -d $MODEM_INTF --get-data-status | jsonfilter -e '@' | tr -d '\n') +[ "$INFO" = "all" ] && echo "$PERCENT;$OPERATOR;$NUMBER;$TATE" \ No newline at end of file diff --git a/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter b/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter index ba20540fe..f0f26b242 100755 --- a/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter @@ -49,11 +49,16 @@ if [ "$(uci -q get openmptcprouter.omr)" != "router" ]; then fi if [ "$(uci -q get openmptcprouter.settings.master)" = "dynamic" ]; then uci -q batch <<-EOF >/dev/null - set openmptcprouter.settings=settings set openmptcprouter.settings.master='change' commit openmptcprouter EOF fi +if [ "$(uci -q get openmptcprouter.settings.master)" = "redundant" ] || [ "$(uci -q get openmptcprouter.settings.master)" = "" ]; then + uci -q batch <<-EOF >/dev/null + set openmptcprouter.settings.master='balancing' + commit openmptcprouter + EOF +fi if [ "$(uci -q get openmptcprouter.vps.port)" = "" ]; then uci -q batch <<-EOF >/dev/null set openmptcprouter.vps.port='65500' diff --git a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter index c380e2c40..599410c03 100755 --- a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter +++ b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter @@ -635,6 +635,15 @@ function interfaces_status() mArray.openmptcprouter["latest_version_vps"] = uci:get("openmptcprouter", "latest_versions", "vps") or "" mArray.openmptcprouter["service_addr"] = uci:get("shadowsocks-libev", "sss0", "server") or "" + if mArray.openmptcprouter["service_addr"] == "" or mArray.openmptcprouter["service_addr"] == "192.168.1.3" then + mArray.openmptcprouter["service_addr"] = "" + ucic:foreach("openmptcprouter", "server", function(s) + local serverip = uci:get("openmptcprouter",s[".name"],"ip") or "" + if serverip ~= "" then + mArray.openmptcprouter["service_addr"] = serverip + end + end) + end local net = ntm:get_network("lan") local ipaddr = net:ipaddr() or "" mArray.openmptcprouter["local_addr"] = ipaddr @@ -687,7 +696,7 @@ function interfaces_status() end -- shadowsocksaddr mArray.openmptcprouter["ss_addr"] = uci:get("openmptcprouter","omr","detected_ss_ipv4") or "" - if mArray.openmptcprouter["ss_addr"] == "" then + if mArray.openmptcprouter["ss_addr"] == "" and mArray.openmptcprouter["service_addr"] ~= "" then tracker_ip = uci:get("shadowsocks-libev","tracker","local_address") or "" if tracker_ip ~= "" then local tracker_port = uci:get("shadowsocks-libev","tracker","local_port") @@ -746,7 +755,7 @@ function interfaces_status() mArray.openmptcprouter["ss_traffic"] = vpsinfo.shadowsocks.traffic or "" end if vpsinfo.vps.time ~= "" then - if os.time() - vpsinfo.vps.time > 10 then + if math.abs(os.time() - vpsinfo.vps.time) > 10 then mArray.openmptcprouter["vps_time_accurate"] = false else mArray.openmptcprouter["vps_time_accurate"] = true @@ -766,12 +775,18 @@ function interfaces_status() end else mArray.openmptcprouter["vps_admin"] = false - mArray.openmptcprouter["vps_admin_error_msg"] = "No answer" + mArray.openmptcprouter["vps_admin_error_msg"] = "No result" end else mArray.openmptcprouter["vps_admin"] = false mArray.openmptcprouter["vps_admin_error_msg"] = "No token yet available" end + if mArray.openmptcprouter["vps_admin"] == false then + local vpstest = sys.exec('curl -4 --max-time ' .. timeout .. ' -s -k https://' .. serverip .. ':' .. adminport .. '/') + if vpstest == "" then + mArray.openmptcprouter["vps_admin_error_msg"] = mArray.openmptcprouter["vps_admin_error_msg"] .. " - No API script answer" + end + end end end) @@ -781,8 +796,8 @@ function interfaces_status() end -- Check openmptcprouter service are running mArray.openmptcprouter["tun_service"] = false - mArray.openmptcprouter["tun_state"] = "" - mArray.openmptcprouter["tun6_state"] = "" + mArray.openmptcprouter["tun_state"] = "DOWN" + mArray.openmptcprouter["tun6_state"] = "DOWN" if string.find(sys.exec("/usr/bin/pgrep '^(/usr/sbin/)?glorytun(-udp)?$'"), "%d+") or string.find(sys.exec("/usr/bin/pgrep '^(/usr/sbin/)?dsvpn?$'"), "%d+") or string.find(sys.exec("/usr/bin/pgrep '^(/usr/sbin/)?mlvpn?$'"), "%d+") or string.find(sys.exec("/usr/bin/pgrep '^(/usr/sbin/)?openvpn?$'"), "%d+") then mArray.openmptcprouter["tun_service"] = true mArray.openmptcprouter["tun_ip"] = get_ip("omrvpn") @@ -822,6 +837,26 @@ function interfaces_status() mArray.openmptcprouter["tun_service"] = true end + mArray.openmptcprouter["multi_vpn"] = false + if uci:get("openmptcprouter","settings","vpn") ~= "none" then + current_vpn = uci:get("openmptcprouter","settings","vpn") + if uci:get("glorytun","vpn","enable") == "1" and uci:get("glorytun","vpn","proto") == "tcp" and current_vpn ~= "glorytun_tcp" then + mArray.openmptcprouter["multi_vpn"] = true + end + if uci:get("glorytun","vpn","enable") == "1" and uci:get("glorytun","vpn","proto") == "udp" and current_vpn ~= "glorytun_udp" then + mArray.openmptcprouter["multi_vpn"] = true + end + if uci:get("dsvpn","vpn","enable") == "1" and current_vpn ~= "dsvpn" then + mArray.openmptcprouter["multi_vpn"] = true + end + if uci:get("mlvpn","general","enable") == "1" and current_vpn ~= "mlvpn" then + mArray.openmptcprouter["multi_vpn"] = true + end + if uci:get("openvpn","omr","enabled") == "1" and current_vpn ~= "openvpn" then + mArray.openmptcprouter["multi_vpn"] = true + end + end + -- check Shadowsocks is running mArray.openmptcprouter["socks_service"] = false if string.find(sys.exec("/usr/bin/pgrep ss-redir"), "%d+") then @@ -1002,6 +1037,9 @@ function interfaces_status() end end local signal = "" + local operator = "" + local phonenumber = "" + local donglestate = "" if gateway ~= "" then if uci:get("openmptcprouter", "settings", "disablegwping") ~= "1" and connectivity ~= "ERROR" then local gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway .. " | grep '100% packet loss'")) @@ -1013,7 +1051,7 @@ function interfaces_status() end end if uci:get("openmptcprouter", interface, "manufacturer") == "huawei" then - signal = sys.exec("omr-huawei " .. gateway) + signal = sys.exec("omr-huawei " .. gateway .. " | tr -d '\n'") end elseif gateway == "" then gw_ping = "DOWN" @@ -1024,13 +1062,25 @@ function interfaces_status() local proto = section['proto'] if proto == "qmi" then local device = section['device'] - signal = sys.exec("omr-qmi " .. device) + intfdata = sys.exec("omr-qmi " .. device .. " | tr -d '\n'") + if intfdata ~= "" then + signal = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $1}' | tr -d '\n'") + operator = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $2}' | tr -d '\n'") + phonenumber = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $3}' | tr -d '\n'") + donglestate = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $4}' | tr -d '\n'") + end elseif proto == "3g" then local device = section['device'] - signal = sys.exec("omr-3g " .. device) + signal = sys.exec("omr-3g " .. device .. " | tr -d '\n'") elseif proto == "modemmanager" then local device = section['device'] - signal = sys.exec("omr-modemmanager " .. device) + intfdata = sys.exec("omr-modemmanager " .. device .. " | tr -d '\n'") + if intfdata ~= "" then + signal = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $1}' | tr -d '\n'") + operator = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $2}' | tr -d '\n'") + phonenumber = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $3}' | tr -d '\n'") + donglestate = sys.exec("echo ".. intfdata .. " | awk -F';' '{print $4}' | tr -d '\n'") + end end end @@ -1171,6 +1221,9 @@ function interfaces_status() multipath_state = current_multipath_state, duplicateif = duplicateif, signal = signal, + operator = operator, + phonenumber = phonenumber, + donglestate = donglestate, } if ifname ~= nil and ifname:match("^tun.*") then table.insert(mArray.tunnels, data); @@ -1374,7 +1427,7 @@ local methods = { end }, defaultvpn = { - args = { vpn = "glorytun-tcp" }, + args = { vpn = "glorytun_tcp" }, call = function(args) default_vpn(args.vpn) end diff --git a/luci-app-openmptcprouter/root/usr/share/rpcd/acl.d/luci-app-openmptcprouter.json b/luci-app-openmptcprouter/root/usr/share/rpcd/acl.d/luci-app-openmptcprouter.json new file mode 100644 index 000000000..934ff1d07 --- /dev/null +++ b/luci-app-openmptcprouter/root/usr/share/rpcd/acl.d/luci-app-openmptcprouter.json @@ -0,0 +1,11 @@ +{ + "luci-app-openmptcprouter": { + "description": "Grant UCI access for luci-app-openmptcprouter", + "read": { + "uci": [ "'*" ] + }, + "write": { + "uci": [ "'*" ] + } + } +} \ No newline at end of file diff --git a/luci-app-shadowsocks-libev/root/usr/share/rpcd/acl.d/luci-app-shadowsocks-libev.json b/luci-app-shadowsocks-libev/root/usr/share/rpcd/acl.d/luci-app-shadowsocks-libev.json index eb56fd12a..d45fab948 100644 --- a/luci-app-shadowsocks-libev/root/usr/share/rpcd/acl.d/luci-app-shadowsocks-libev.json +++ b/luci-app-shadowsocks-libev/root/usr/share/rpcd/acl.d/luci-app-shadowsocks-libev.json @@ -4,12 +4,14 @@ "read": { "ubus": { "service": [ "list" ] - } + }, + "uci": [ "shadowsocks-libev" ] }, "write": { "file": { "/etc/shadowsocks-libev/*": [ "write" ] - } + }, + "uci": [ "shadowsocks-libev" ] } } } diff --git a/luci-app-shutdown/Makefile b/luci-app-shutdown/Makefile new file mode 100644 index 000000000..2b09da9df --- /dev/null +++ b/luci-app-shutdown/Makefile @@ -0,0 +1,14 @@ +# +# Copyright (C) 2020 Ycarus (Yannick Chabanois) +# +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI Shutdown device app + +PKG_LICENSE:=GPLv3 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-shutdown/htdocs/luci-static/resources/view/system/shutdown.js b/luci-app-shutdown/htdocs/luci-static/resources/view/system/shutdown.js new file mode 100644 index 000000000..82ce6e1fe --- /dev/null +++ b/luci-app-shutdown/htdocs/luci-static/resources/view/system/shutdown.js @@ -0,0 +1,41 @@ +'use strict'; +'require fs'; +'require uci'; +'require ui'; + +return L.view.extend({ + render: function(changes) { + var body = E([ + E('h2', _('Shutdown')), + E('p', {}, _('Shutdown the operating system of your device')) + ]); + + for (var config in (changes || {})) { + body.appendChild(E('p', { 'class': 'alert-message warning' }, + _('Warning: There are unsaved changes that will get lost on shutdown!'))); + break; + } + + body.appendChild(E('hr')); + body.appendChild(E('button', { + 'class': 'cbi-button cbi-button-action important', + 'click': ui.createHandlerFn(this, 'handleShutdown') + }, _('Perform shutdown'))); + + return body; + }, + + handleShutdown: function(ev) { + return fs.exec('/sbin/poweroff').then(function(res) { + if (res.code != 0) { + L.ui.addNotification(null, E('p', _('The poweroff command failed with code %d').format(res.code))); + L.raise('Error', 'Poweroff failed'); + } + }) + .catch(function(e) { L.ui.addNotification(null, E('p', e.message)) }); + }, + + handleSaveApply: null, + handleSave: null, + handleReset: null +}); diff --git a/luci-app-shutdown/root/usr/share/luci/menu.d/luci-app-shutdown.json b/luci-app-shutdown/root/usr/share/luci/menu.d/luci-app-shutdown.json new file mode 100644 index 000000000..128a53a8c --- /dev/null +++ b/luci-app-shutdown/root/usr/share/luci/menu.d/luci-app-shutdown.json @@ -0,0 +1,10 @@ +{ + "admin/system/shutdown": { + "title": "Shutdown", + "order": 90, + "action": { + "type": "view", + "path": "system/shutdown" + } + } +} diff --git a/luci-app-shutdown/root/usr/share/rpcd/acl.d/luci-app-shutdown.json b/luci-app-shutdown/root/usr/share/rpcd/acl.d/luci-app-shutdown.json new file mode 100644 index 000000000..6028a1cdf --- /dev/null +++ b/luci-app-shutdown/root/usr/share/rpcd/acl.d/luci-app-shutdown.json @@ -0,0 +1,13 @@ +{ + "luci-app-shutdown": { + "description": "Allow shutdown the device", + "read": { + "file": { + "/sbin/poweroff": [ "exec" ] + }, + "ubus": { + "file": [ "exec" ] + } + } + } +} \ No newline at end of file diff --git a/luci-app-snmpd/root/usr/share/rpcd/acl.d/luci-app-snmpd.json b/luci-app-snmpd/root/usr/share/rpcd/acl.d/luci-app-snmpd.json new file mode 100644 index 000000000..1fc168524 --- /dev/null +++ b/luci-app-snmpd/root/usr/share/rpcd/acl.d/luci-app-snmpd.json @@ -0,0 +1,11 @@ +{ + "luci-app-snmpd": { + "description": "Grant UCI access for luci-app-snmpd", + "read": { + "uci": [ "snmpd" ] + }, + "write": { + "uci": [ "snmpd" ] + } + } +} \ No newline at end of file diff --git a/luci-mod-network/Makefile b/luci-mod-network/Makefile new file mode 100644 index 000000000..fef96fea3 --- /dev/null +++ b/luci-mod-network/Makefile @@ -0,0 +1,19 @@ +# +# Copyright (C) 2008-2014 The LuCI Team +# Copyright (C) 2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# +# This is free software, licensed under the Apache License, Version 2.0 . +# +# From https://github.com/openwrt/luci/commit/1e07e3a52d4d06cc82ab07f2b7fbba0a9a6fb801 + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI Network Administration +LUCI_DEPENDS:=+luci-base +libiwinfo-lua +rpcd-mod-iwinfo + +PKG_LICENSE:=Apache-2.0 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature + diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js b/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js new file mode 100644 index 000000000..e2eccc72e --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js @@ -0,0 +1,560 @@ +'use strict'; +'require view'; +'require dom'; +'require poll'; +'require rpc'; +'require uci'; +'require form'; +'require validation'; + +var callHostHints, callDUIDHints, callDHCPLeases, CBILeaseStatus, CBILease6Status; + +callHostHints = rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } +}); + +callDUIDHints = rpc.declare({ + object: 'luci-rpc', + method: 'getDUIDHints', + expect: { '': {} } +}); + +callDHCPLeases = rpc.declare({ + object: 'luci-rpc', + method: 'getDHCPLeases', + expect: { '': {} } +}); + +CBILeaseStatus = form.DummyValue.extend({ + renderWidget: function(section_id, option_id, cfgvalue) { + return E([ + E('h4', _('Active DHCP Leases')), + E('div', { 'id': 'lease_status_table', 'class': 'table' }, [ + E('div', { 'class': 'tr table-titles' }, [ + E('div', { 'class': 'th' }, _('Hostname')), + E('div', { 'class': 'th' }, _('IPv4-Address')), + E('div', { 'class': 'th' }, _('MAC-Address')), + E('div', { 'class': 'th' }, _('Lease time remaining')) + ]), + E('div', { 'class': 'tr placeholder' }, [ + E('div', { 'class': 'td' }, E('em', _('Collecting data...'))) + ]) + ]) + ]); + } +}); + +CBILease6Status = form.DummyValue.extend({ + renderWidget: function(section_id, option_id, cfgvalue) { + return E([ + E('h4', _('Active DHCPv6 Leases')), + E('div', { 'id': 'lease6_status_table', 'class': 'table' }, [ + E('div', { 'class': 'tr table-titles' }, [ + E('div', { 'class': 'th' }, _('Host')), + E('div', { 'class': 'th' }, _('IPv6-Address')), + E('div', { 'class': 'th' }, _('DUID')), + E('div', { 'class': 'th' }, _('Lease time remaining')) + ]), + E('div', { 'class': 'tr placeholder' }, [ + E('div', { 'class': 'td' }, E('em', _('Collecting data...'))) + ]) + ]) + ]); + } +}); + +function validateHostname(sid, s) { + if (s.length > 256) + return _('Expecting: %s').format(_('valid hostname')); + + var labels = s.replace(/^\.+|\.$/g, '').split(/\./); + + for (var i = 0; i < labels.length; i++) + if (!labels[i].match(/^[a-z0-9_](?:[a-z0-9-]{0,61}[a-z0-9])?$/i)) + return _('Expecting: %s').format(_('valid hostname')); + + return true; +} + +function validateAddressList(sid, s) { + if (s == null || s == '') + return true; + + var m = s.match(/^\/(.+)\/$/), + names = m ? m[1].split(/\//) : [ s ]; + + for (var i = 0; i < names.length; i++) { + var res = validateHostname(sid, names[i]); + + if (res !== true) + return res; + } + + return true; +} + +function validateServerSpec(sid, s) { + if (s == null || s == '') + return true; + + var m = s.match(/^\/(.+)\/(.*)$/); + if (!m) + return _('Expecting: %s').format(_('valid hostname')); + + var res = validateAddressList(sid, m[1]); + if (res !== true) + return res; + + if (m[2] == '' || m[2] == '#') + return true; + + // ipaddr%scopeid#srvport@source@interface#srcport + + m = m[2].match(/^([0-9a-f:.]+)(?:%[^#@]+)?(?:#(\d+))?(?:@([0-9a-f:.]+)(?:@[^#]+)?(?:#(\d+))?)?$/); + + if (!m) + return _('Expecting: %s').format(_('valid IP address')); + else if (validation.parseIPv4(m[1]) && m[3] != null && !validation.parseIPv4(m[3])) + return _('Expecting: %s').format(_('valid IPv4 address')); + else if (validation.parseIPv6(m[1]) && m[3] != null && !validation.parseIPv6(m[3])) + return _('Expecting: %s').format(_('valid IPv6 address')); + else if ((m[2] != null && +m[2] > 65535) || (m[4] != null && +m[4] > 65535)) + return _('Expecting: %s').format(_('valid port value')); + + return true; +} + +return view.extend({ + load: function() { + return Promise.all([ + callHostHints(), + callDUIDHints() + ]); + }, + + render: function(hosts_duids) { + var has_dhcpv6 = L.hasSystemFeature('dnsmasq', 'dhcpv6') || L.hasSystemFeature('odhcpd'), + hosts = hosts_duids[0], + duids = hosts_duids[1], + m, s, o, ss, so; + + m = new form.Map('dhcp', _('DHCP and DNS'), _('Dnsmasq is a combined DHCP-Server and DNS-Forwarder for NAT firewalls')); + + s = m.section(form.TypedSection, 'dnsmasq', _('Server Settings')); + s.anonymous = true; + s.addremove = false; + + s.tab('general', _('General Settings')); + s.tab('files', _('Resolv and Hosts Files')); + s.tab('tftp', _('TFTP Settings')); + s.tab('advanced', _('Advanced Settings')); + s.tab('leases', _('Static Leases')); + + s.taboption('general', form.Flag, 'domainneeded', + _('Domain required'), + _('Don\'t forward DNS-Requests without DNS-Name')); + + s.taboption('general', form.Flag, 'authoritative', + _('Authoritative'), + _('This is the only DHCP in the local network')); + + + s.taboption('files', form.Flag, 'readethers', + _('Use /etc/ethers'), + _('Read /etc/ethers to configure the DHCP-Server')); + + s.taboption('files', form.Value, 'leasefile', + _('Leasefile'), + _('file where given DHCP-leases will be stored')); + + s.taboption('files', form.Flag, 'noresolv', + _('Ignore resolve file')).optional = true; + + o = s.taboption('files', form.Value, 'resolvfile', + _('Resolve file'), + _('local DNS file')); + + o.depends('noresolv', '0'); + o.placeholder = '/tmp/resolv.conf.d/resolv.conf.auto'; + o.optional = true; + + + s.taboption('files', form.Flag, 'nohosts', + _('Ignore /etc/hosts')).optional = true; + + s.taboption('files', form.DynamicList, 'addnhosts', + _('Additional Hosts files')).optional = true; + + o = s.taboption('advanced', form.Flag, 'quietdhcp', + _('Suppress logging'), + _('Suppress logging of the routine operation of these protocols')); + o.optional = true; + + o = s.taboption('advanced', form.Flag, 'sequential_ip', + _('Allocate IP sequentially'), + _('Allocate IP addresses sequentially, starting from the lowest available address')); + o.optional = true; + + o = s.taboption('advanced', form.Flag, 'boguspriv', + _('Filter private'), + _('Do not forward reverse lookups for local networks')); + o.default = o.enabled; + + s.taboption('advanced', form.Flag, 'filterwin2k', + _('Filter useless'), + _('Do not forward requests that cannot be answered by public name servers')); + + + s.taboption('advanced', form.Flag, 'localise_queries', + _('Localise queries'), + _('Localise hostname depending on the requesting subnet if multiple IPs are available')); + + if (L.hasSystemFeature('dnsmasq', 'dnssec')) { + o = s.taboption('advanced', form.Flag, 'dnssec', + _('DNSSEC')); + o.optional = true; + + o = s.taboption('advanced', form.Flag, 'dnsseccheckunsigned', + _('DNSSEC check unsigned'), + _('Requires upstream supports DNSSEC; verify unsigned domain responses really come from unsigned domains')); + o.default = o.enabled; + o.optional = true; + } + + s.taboption('general', form.Value, 'local', + _('Local server'), + _('Local domain specification. Names matching this domain are never forwarded and are resolved from DHCP or hosts files only')); + + s.taboption('general', form.Value, 'domain', + _('Local domain'), + _('Local domain suffix appended to DHCP names and hosts file entries')); + + s.taboption('advanced', form.Flag, 'expandhosts', + _('Expand hosts'), + _('Add local domain suffix to names served from hosts files')); + + s.taboption('advanced', form.Flag, 'nonegcache', + _('No negative cache'), + _('Do not cache negative replies, e.g. for not existing domains')); + + s.taboption('advanced', form.Value, 'serversfile', + _('Additional servers file'), + _('This file may contain lines like \'server=/domain/1.2.3.4\' or \'server=1.2.3.4\' for domain-specific or full upstream DNS servers.')); + + s.taboption('advanced', form.Flag, 'strictorder', + _('Strict order'), + _('DNS servers will be queried in the order of the resolvfile')).optional = true; + + s.taboption('advanced', form.Flag, 'allservers', + _('All Servers'), + _('Query all available upstream DNS servers')).optional = true; + + o = s.taboption('advanced', form.DynamicList, 'bogusnxdomain', _('Bogus NX Domain Override'), + _('List of hosts that supply bogus NX domain results')); + + o.optional = true; + o.placeholder = '67.215.65.132'; + + + s.taboption('general', form.Flag, 'logqueries', + _('Log queries'), + _('Write received DNS requests to syslog')).optional = true; + + o = s.taboption('general', form.DynamicList, 'server', _('DNS forwardings'), + _('List of DNS servers to forward requests to')); + + o.optional = true; + o.placeholder = '/example.org/10.1.2.3'; + // o.validate = validateServerSpec; + + + o = s.taboption('general', form.Flag, 'rebind_protection', + _('Rebind protection'), + _('Discard upstream RFC1918 responses')); + + o.rmempty = false; + + + o = s.taboption('general', form.Flag, 'rebind_localhost', + _('Allow localhost'), + _('Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services')); + + o.depends('rebind_protection', '1'); + + + o = s.taboption('general', form.DynamicList, 'rebind_domain', + _('Domain whitelist'), + _('List of domains to allow RFC1918 responses for')); + o.optional = true; + + o.depends('rebind_protection', '1'); + o.placeholder = 'ihost.netflix.com'; + o.validate = validateAddressList; + + + o = s.taboption('advanced', form.Value, 'port', + _('DNS server port'), + _('Listening port for inbound DNS queries')); + + o.optional = true; + o.datatype = 'port'; + o.placeholder = 53; + + + o = s.taboption('advanced', form.Value, 'queryport', + _('DNS query port'), + _('Fixed source port for outbound DNS queries')); + + o.optional = true; + o.datatype = 'port'; + o.placeholder = _('any'); + + + o = s.taboption('advanced', form.Value, 'dhcpleasemax', + _('Max. DHCP leases'), + _('Maximum allowed number of active DHCP leases')); + + o.optional = true; + o.datatype = 'uinteger'; + o.placeholder = _('unlimited'); + + + o = s.taboption('advanced', form.Value, 'ednspacket_max', + _('Max. EDNS0 packet size'), + _('Maximum allowed size of EDNS.0 UDP packets')); + + o.optional = true; + o.datatype = 'uinteger'; + o.placeholder = 1280; + + + o = s.taboption('advanced', form.Value, 'dnsforwardmax', + _('Max. concurrent queries'), + _('Maximum allowed number of concurrent DNS queries')); + + o.optional = true; + o.datatype = 'uinteger'; + o.placeholder = 150; + + o = s.taboption('advanced', form.Value, 'cachesize', + _('Size of DNS query cache'), + _('Number of cached DNS entries (max is 10000, 0 is no caching)')); + o.optional = true; + o.datatype = 'range(0,10000)'; + o.placeholder = 150; + + s.taboption('tftp', form.Flag, 'enable_tftp', + _('Enable TFTP server')).optional = true; + + o = s.taboption('tftp', form.Value, 'tftp_root', + _('TFTP server root'), + _('Root directory for files served via TFTP')); + + o.optional = true; + o.depends('enable_tftp', '1'); + o.placeholder = '/'; + + + o = s.taboption('tftp', form.Value, 'dhcp_boot', + _('Network boot image'), + _('Filename of the boot image advertised to clients')); + + o.optional = true; + o.depends('enable_tftp', '1'); + o.placeholder = 'pxelinux.0'; + + o = s.taboption('general', form.Flag, 'localservice', + _('Local Service Only'), + _('Limit DNS service to subnets interfaces on which we are serving DNS.')); + o.optional = false; + o.rmempty = false; + + o = s.taboption('general', form.Flag, 'nonwildcard', + _('Non-wildcard'), + _('Bind dynamically to interfaces rather than wildcard address (recommended as linux default)')); + o.default = o.enabled; + o.optional = false; + o.rmempty = true; + + o = s.taboption('general', form.DynamicList, 'interface', + _('Listen Interfaces'), + _('Limit listening to these interfaces, and loopback.')); + o.optional = true; + + o = s.taboption('general', form.DynamicList, 'notinterface', + _('Exclude interfaces'), + _('Prevent listening on these interfaces.')); + o.optional = true; + + o = s.taboption('leases', form.SectionValue, '__leases__', form.GridSection, 'host', null, + _('Static leases are used to assign fixed IP addresses and symbolic hostnames to DHCP clients. They are also required for non-dynamic interface configurations where only hosts with a corresponding lease are served.') + '
    ' + + _('Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed address to use, and the Hostname is assigned as a symbolic name to the requesting host. The optional Lease time can be used to set non-standard host-specific lease time, e.g. 12h, 3d or infinite.')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + + so = ss.option(form.Value, 'name', _('Hostname')); + so.validate = validateHostname; + so.rmempty = true; + so.write = function(section, value) { + uci.set('dhcp', section, 'name', value); + uci.set('dhcp', section, 'dns', '1'); + }; + so.remove = function(section) { + uci.unset('dhcp', section, 'name'); + uci.unset('dhcp', section, 'dns'); + }; + + so = ss.option(form.Value, 'mac', _('MAC-Address')); + so.datatype = 'list(unique(macaddr))'; + so.rmempty = true; + so.cfgvalue = function(section) { + var macs = uci.get('dhcp', section, 'mac'), + result = []; + + if (!Array.isArray(macs)) + macs = (macs != null && macs != '') ? macs.split(/\ss+/) : []; + + for (var i = 0, mac; (mac = macs[i]) != null; i++) + if (/^([0-9a-fA-F]{1,2}):([0-9a-fA-F]{1,2}):([0-9a-fA-F]{1,2}):([0-9a-fA-F]{1,2}):([0-9a-fA-F]{1,2}):([0-9a-fA-F]{1,2})$/.test(mac)) + result.push('%02X:%02X:%02X:%02X:%02X:%02X'.format( + parseInt(RegExp.$1, 16), parseInt(RegExp.$2, 16), + parseInt(RegExp.$3, 16), parseInt(RegExp.$4, 16), + parseInt(RegExp.$5, 16), parseInt(RegExp.$6, 16))); + + return result.length ? result.join(' ') : null; + }; + so.renderWidget = function(section_id, option_index, cfgvalue) { + var node = form.Value.prototype.renderWidget.apply(this, [section_id, option_index, cfgvalue]), + ipopt = this.section.children.filter(function(o) { return o.option == 'ip' })[0]; + + node.addEventListener('cbi-dropdown-change', L.bind(function(ipopt, section_id, ev) { + var mac = ev.detail.value.value; + if (mac == null || mac == '' || !hosts[mac] || !hosts[mac].ipv4) + return; + + var ip = ipopt.formvalue(section_id); + if (ip != null && ip != '') + return; + + var node = ipopt.map.findElement('id', ipopt.cbid(section_id)); + if (node) + dom.callClassMethod(node, 'setValue', hosts[mac].ipv4); + }, this, ipopt, section_id)); + + return node; + }; + Object.keys(hosts).forEach(function(mac) { + var hint = hosts[mac].name || hosts[mac].ipv4; + so.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac); + }); + + so = ss.option(form.Value, 'ip', _('IPv4-Address')); + so.datatype = 'or(ip4addr,"ignore")'; + so.validate = function(section, value) { + var mac = this.map.lookupOption('mac', section), + name = this.map.lookupOption('name', section), + m = mac ? mac[0].formvalue(section) : null, + n = name ? name[0].formvalue(section) : null; + + if ((m == null || m == '') && (n == null || n == '')) + return _('One of hostname or mac address must be specified!'); + + return true; + }; + Object.keys(hosts).forEach(function(mac) { + if (hosts[mac].ipv4) { + var hint = hosts[mac].name; + so.value(hosts[mac].ipv4, hint ? '%s (%s)'.format(hosts[mac].ipv4, hint) : hosts[mac].ipv4); + } + }); + + so = ss.option(form.Value, 'gw', _('Gateway')); + so.datatype = 'or(ip4addr,"ignore")'; + so.rmempty = true; + + so = ss.option(form.Value, 'leasetime', _('Lease time')); + so.rmempty = true; + + so = ss.option(form.Value, 'duid', _('DUID')); + so.datatype = 'and(rangelength(20,36),hexstring)'; + Object.keys(duids).forEach(function(duid) { + so.value(duid, '%s (%s)'.format(duid, duids[duid].hostname || duids[duid].macaddr || duids[duid].ip6addr || '?')); + }); + + so = ss.option(form.Value, 'hostid', _('IPv6-Suffix (hex)')); + + o = s.taboption('leases', CBILeaseStatus, '__status__'); + + if (has_dhcpv6) + o = s.taboption('leases', CBILease6Status, '__status6__'); + + return m.render().then(function(mapEl) { + poll.add(function() { + return callDHCPLeases().then(function(leaseinfo) { + var leases = Array.isArray(leaseinfo.dhcp_leases) ? leaseinfo.dhcp_leases : [], + leases6 = Array.isArray(leaseinfo.dhcp6_leases) ? leaseinfo.dhcp6_leases : []; + + cbi_update_table(mapEl.querySelector('#lease_status_table'), + leases.map(function(lease) { + var exp; + + if (lease.expires === false) + exp = E('em', _('unlimited')); + else if (lease.expires <= 0) + exp = E('em', _('expired')); + else + exp = '%t'.format(lease.expires); + + return [ + lease.hostname || '?', + lease.ipaddr, + lease.macaddr, + exp + ]; + }), + E('em', _('There are no active leases'))); + + if (has_dhcpv6) { + cbi_update_table(mapEl.querySelector('#lease6_status_table'), + leases6.map(function(lease) { + var exp; + + if (lease.expires === false) + exp = E('em', _('unlimited')); + else if (lease.expires <= 0) + exp = E('em', _('expired')); + else + exp = '%t'.format(lease.expires); + + var hint = lease.macaddr ? hosts[lease.macaddr] : null, + name = hint ? (hint.name || hint.ipv4 || hint.ipv6) : null, + host = null; + + if (name && lease.hostname && lease.hostname != name && lease.ip6addr != name) + host = '%s (%s)'.format(lease.hostname, name); + else if (lease.hostname) + host = lease.hostname; + else if (name) + host = name; + + return [ + host || '-', + lease.ip6addrs ? lease.ip6addrs.join(' ') : lease.ip6addr, + lease.duid, + exp + ]; + }), + E('em', _('There are no active leases'))); + } + }); + }); + + return mapEl; + }); + } +}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js b/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js new file mode 100644 index 000000000..a94cc6673 --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js @@ -0,0 +1,139 @@ +'use strict'; +'require view'; +'require dom'; +'require fs'; +'require ui'; +'require uci'; + +return view.extend({ + handleCommand: function(exec, args) { + var buttons = document.querySelectorAll('.diag-action > .cbi-button'); + + for (var i = 0; i < buttons.length; i++) + buttons[i].setAttribute('disabled', 'true'); + + return fs.exec(exec, args).then(function(res) { + var out = document.querySelector('.command-output'); + out.style.display = ''; + + dom.content(out, [ res.stdout || '', res.stderr || '' ]); + }).catch(function(err) { + ui.addNotification(null, E('p', [ err ])) + }).finally(function() { + for (var i = 0; i < buttons.length; i++) + buttons[i].removeAttribute('disabled'); + }); + }, + + handlePing: function(ev, cmd) { + var exec = cmd || 'ping', + addr = ev.currentTarget.parentNode.previousSibling.value, + args = (exec == 'ping') ? [ '-c', '5', '-W', '1', addr ] : [ '-c', '5', addr ]; + + return this.handleCommand(exec, args); + }, + + handleTraceroute: function(ev, cmd) { + var exec = cmd || 'traceroute', + addr = ev.currentTarget.parentNode.previousSibling.value, + args = (exec == 'traceroute') ? [ '-q', '1', '-w', '1', '-n', addr ] : [ '-q', '1', '-w', '2', '-n', addr ]; + + return this.handleCommand(exec, args); + }, + + handleNslookup: function(ev, cmd) { + var addr = ev.currentTarget.parentNode.previousSibling.value; + + return this.handleCommand('nslookup', [ addr ]); + }, + + load: function() { + return Promise.all([ + L.resolveDefault(fs.stat('/bin/ping6'), {}), + L.resolveDefault(fs.stat('/usr/bin/ping6'), {}), + L.resolveDefault(fs.stat('/bin/traceroute6'), {}), + L.resolveDefault(fs.stat('/usr/bin/traceroute6'), {}), + uci.load('luci') + ]); + }, + + render: function(res) { + var has_ping6 = res[0].path || res[1].path, + has_traceroute6 = res[2].path || res[3].path, + dns_host = uci.get('luci', 'diag', 'dns') || 'openwrt.org', + ping_host = uci.get('luci', 'diag', 'ping') || 'openwrt.org', + route_host = uci.get('luci', 'diag', 'route') || 'openwrt.org'; + + return E([], [ + E('h2', {}, [ _('Network Utilities') ]), + E('div', { 'class': 'table' }, [ + E('div', { 'class': 'tr' }, [ + E('div', { 'class': 'td left' }, [ + E('input', { + 'style': 'margin:5px 0', + 'type': 'text', + 'value': ping_host + }), + E('span', { 'class': 'diag-action' }, [ + has_ping6 ? new ui.ComboButton('ping', { + 'ping': '%s %s'.format(_('IPv4'), _('Ping')), + 'ping6': '%s %s'.format(_('IPv6'), _('Ping')), + }, { + 'click': ui.createHandlerFn(this, 'handlePing'), + 'classes': { + 'ping': 'btn cbi-button cbi-button-action', + 'ping6': 'btn cbi-button cbi-button-action' + } + }).render() : E('button', { + 'class': 'cbi-button cbi-button-action', + 'click': ui.createHandlerFn(this, 'handlePing') + }, [ _('Ping') ]) + ]) + ]), + + E('div', { 'class': 'td left' }, [ + E('input', { + 'style': 'margin:5px 0', + 'type': 'text', + 'value': route_host + }), + E('span', { 'class': 'diag-action' }, [ + has_traceroute6 ? new ui.ComboButton('traceroute', { + 'traceroute': '%s %s'.format(_('IPv4'), _('Traceroute')), + 'traceroute6': '%s %s'.format(_('IPv6'), _('Traceroute')), + }, { + 'click': ui.createHandlerFn(this, 'handleTraceroute'), + 'classes': { + 'traceroute': 'btn cbi-button cbi-button-action', + 'traceroute6': 'btn cbi-button cbi-button-action' + } + }).render() : E('button', { + 'class': 'cbi-button cbi-button-action', + 'click': ui.createHandlerFn(this, 'handleTraceroute') + }, [ _('Traceroute') ]) + ]) + ]), + + E('div', { 'class': 'td left' }, [ + E('input', { + 'style': 'margin:5px 0', + 'type': 'text', + 'value': dns_host + }), + E('span', { 'class': 'diag-action' }, [ + E('button', { + 'class': 'cbi-button cbi-button-action', + 'click': ui.createHandlerFn(this, 'handleNslookup') + }, [ _('Nslookup') ]) + ]) + ]) + ]) + ]), + E('pre', { 'class': 'command-output', 'style': 'display:none' }) + ]); + }, + + handleSaveApply: null, + handleSave: null, + handleReset: null +}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js b/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js new file mode 100644 index 000000000..cd0dacbf6 --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js @@ -0,0 +1,43 @@ +'use strict'; +'require view'; +'require rpc'; +'require form'; + +return view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + load: function() { + return this.callHostHints(); + }, + + render: function(hosts) { + var m, s, o; + + m = new form.Map('dhcp', _('Hostnames')); + + s = m.section(form.GridSection, 'domain', _('Host entries')); + s.addremove = true; + s.anonymous = true; + s.sortable = true; + + o = s.option(form.Value, 'name', _('Hostname')); + o.datatype = 'hostname'; + o.rmempty = true; + + o = s.option(form.Value, 'ip', _('IP address')); + o.datatype = 'ipaddr'; + o.rmempty = true; + L.sortedKeys(hosts, 'ipv4', 'addr').forEach(function(mac) { + o.value(hosts[mac].ipv4, '%s (%s)'.format( + hosts[mac].ipv4, + hosts[mac].name || mac + )); + }); + + return m.render(); + } +}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js b/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js new file mode 100644 index 000000000..bd4ce5790 --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js @@ -0,0 +1,1027 @@ +'use strict'; +'require view'; +'require dom'; +'require poll'; +'require fs'; +'require ui'; +'require uci'; +'require form'; +'require network'; +'require firewall'; +'require tools.widgets as widgets'; + +function count_changes(section_id) { + var changes = ui.changes.changes, n = 0; + + if (!L.isObject(changes)) + return n; + + if (Array.isArray(changes.network)) + for (var i = 0; i < changes.network.length; i++) + n += (changes.network[i][1] == section_id); + + if (Array.isArray(changes.dhcp)) + for (var i = 0; i < changes.dhcp.length; i++) + n += (changes.dhcp[i][1] == section_id); + + return n; +} + +function render_iface(dev, alias) { + var type = dev ? dev.getType() : 'ethernet', + up = dev ? dev.isUp() : false; + + return E('span', { class: 'cbi-tooltip-container' }, [ + E('img', { 'class' : 'middle', 'src': L.resource('icons/%s%s.png').format( + alias ? 'alias' : type, + up ? '' : '_disabled') }), + E('span', { 'class': 'cbi-tooltip ifacebadge large' }, [ + E('img', { 'src': L.resource('icons/%s%s.png').format( + type, up ? '' : '_disabled') }), + L.itemlist(E('span', { 'class': 'left' }), [ + _('Type'), dev ? dev.getTypeI18n() : null, + _('Device'), dev ? dev.getName() : _('Not present'), + _('Connected'), up ? _('yes') : _('no'), + _('MAC'), dev ? dev.getMAC() : null, + _('RX'), dev ? '%.2mB (%d %s)'.format(dev.getRXBytes(), dev.getRXPackets(), _('Pkts.')) : null, + _('TX'), dev ? '%.2mB (%d %s)'.format(dev.getTXBytes(), dev.getTXPackets(), _('Pkts.')) : null + ]) + ]) + ]); +} + +function render_status(node, ifc, with_device) { + var desc = null, c = []; + + if (ifc.isDynamic()) + desc = _('Virtual dynamic interface'); + else if (ifc.isAlias()) + desc = _('Alias Interface'); + else if (!uci.get('network', ifc.getName())) + return L.itemlist(node, [ + null, E('em', _('Interface is marked for deletion')) + ]); + + var i18n = ifc.getI18n(); + if (i18n) + desc = desc ? '%s (%s)'.format(desc, i18n) : i18n; + + var changecount = with_device ? 0 : count_changes(ifc.getName()), + ipaddrs = changecount ? [] : ifc.getIPAddrs(), + ip6addrs = changecount ? [] : ifc.getIP6Addrs(), + errors = ifc.getErrors(), + maindev = ifc.getL3Device() || ifc.getDevice(), + macaddr = maindev ? maindev.getMAC() : null; + + return L.itemlist(node, [ + _('Protocol'), with_device ? null : (desc || '?'), + _('Device'), with_device ? (maindev ? maindev.getShortName() : E('em', _('Not present'))) : null, + _('Uptime'), (!changecount && ifc.isUp()) ? '%t'.format(ifc.getUptime()) : null, + _('MAC'), (!changecount && !ifc.isDynamic() && !ifc.isAlias() && macaddr) ? macaddr : null, + _('RX'), (!changecount && !ifc.isDynamic() && !ifc.isAlias() && maindev) ? '%.2mB (%d %s)'.format(maindev.getRXBytes(), maindev.getRXPackets(), _('Pkts.')) : null, + _('TX'), (!changecount && !ifc.isDynamic() && !ifc.isAlias() && maindev) ? '%.2mB (%d %s)'.format(maindev.getTXBytes(), maindev.getTXPackets(), _('Pkts.')) : null, + _('IPv4'), ipaddrs[0], + _('IPv4'), ipaddrs[1], + _('IPv4'), ipaddrs[2], + _('IPv4'), ipaddrs[3], + _('IPv4'), ipaddrs[4], + _('IPv6'), ip6addrs[0], + _('IPv6'), ip6addrs[1], + _('IPv6'), ip6addrs[2], + _('IPv6'), ip6addrs[3], + _('IPv6'), ip6addrs[4], + _('IPv6'), ip6addrs[5], + _('IPv6'), ip6addrs[6], + _('IPv6'), ip6addrs[7], + _('IPv6'), ip6addrs[8], + _('IPv6'), ip6addrs[9], + _('IPv6-PD'), changecount ? null : ifc.getIP6Prefix(), + _('Information'), with_device ? null : (ifc.get('auto') != '0' ? null : _('Not started on boot')), + _('Error'), errors ? errors[0] : null, + _('Error'), errors ? errors[1] : null, + _('Error'), errors ? errors[2] : null, + _('Error'), errors ? errors[3] : null, + _('Error'), errors ? errors[4] : null, + null, changecount ? E('a', { + href: '#', + click: L.bind(ui.changes.displayChanges, ui.changes) + }, _('Interface has %d pending changes').format(changecount)) : null + ]); +} + +function render_modal_status(node, ifc) { + var dev = ifc ? (ifc.getDevice() || ifc.getL3Device() || ifc.getL3Device()) : null; + + dom.content(node, [ + E('img', { + 'src': L.resource('icons/%s%s.png').format(dev ? dev.getType() : 'ethernet', (dev && dev.isUp()) ? '' : '_disabled'), + 'title': dev ? dev.getTypeI18n() : _('Not present') + }), + ifc ? render_status(E('span'), ifc, true) : E('em', _('Interface not present or not connected yet.')) + ]); + + return node; +} + +function render_ifacebox_status(node, ifc) { + var dev = ifc.getL3Device() || ifc.getDevice(), + subdevs = ifc.getDevices(), + c = [ render_iface(dev, ifc.isAlias()) ]; + + if (subdevs && subdevs.length) { + var sifs = [ ' (' ]; + + for (var j = 0; j < subdevs.length; j++) + sifs.push(render_iface(subdevs[j])); + + sifs.push(')'); + + c.push(E('span', {}, sifs)); + } + + c.push(E('br')); + c.push(E('small', {}, ifc.isAlias() ? _('Alias of "%s"').format(ifc.isAlias()) + : (dev ? dev.getName() : E('em', _('Not present'))))); + + dom.content(node, c); + + return firewall.getZoneByNetwork(ifc.getName()).then(L.bind(function(zone) { + this.style.backgroundColor = zone ? zone.getColor() : '#EEEEEE'; + this.title = zone ? _('Part of zone %q').format(zone.getName()) : _('No zone assigned'); + }, node.previousElementSibling)); +} + +function iface_updown(up, id, ev, force) { + var row = document.querySelector('.cbi-section-table-row[data-sid="%s"]'.format(id)), + dsc = row.querySelector('[data-name="_ifacestat"] > div'), + btns = row.querySelectorAll('.cbi-section-actions .reconnect, .cbi-section-actions .down'); + + btns[+!up].blur(); + btns[+!up].classList.add('spinning'); + + btns[0].disabled = true; + btns[1].disabled = true; + + if (!up) { + L.resolveDefault(fs.exec_direct('/usr/libexec/luci-peeraddr')).then(function(res) { + var info = null; try { info = JSON.parse(res); } catch(e) {} + + if (L.isObject(info) && + Array.isArray(info.inbound_interfaces) && + info.inbound_interfaces.filter(function(i) { return i == id })[0]) { + + ui.showModal(_('Confirm disconnect'), [ + E('p', _('You appear to be currently connected to the device via the "%h" interface. Do you really want to shut down the interface?').format(id)), + E('div', { 'class': 'right' }, [ + E('button', { + 'class': 'cbi-button cbi-button-neutral', + 'click': function(ev) { + btns[1].classList.remove('spinning'); + btns[1].disabled = false; + btns[0].disabled = false; + + ui.hideModal(); + } + }, _('Cancel')), + ' ', + E('button', { + 'class': 'cbi-button cbi-button-negative important', + 'click': function(ev) { + dsc.setAttribute('disconnect', ''); + dom.content(dsc, E('em', _('Interface is shutting down...'))); + + ui.hideModal(); + } + }, _('Disconnect')) + ]) + ]); + } + else { + dsc.setAttribute('disconnect', ''); + dom.content(dsc, E('em', _('Interface is shutting down...'))); + } + }); + } + else { + dsc.setAttribute(up ? 'reconnect' : 'disconnect', force ? 'force' : ''); + dom.content(dsc, E('em', up ? _('Interface is reconnecting...') : _('Interface is shutting down...'))); + } +} + +function get_netmask(s, use_cfgvalue) { + var readfn = use_cfgvalue ? 'cfgvalue' : 'formvalue', + addropt = s.children.filter(function(o) { return o.option == 'ipaddr'})[0], + addrvals = addropt ? L.toArray(addropt[readfn](s.section)) : [], + maskopt = s.children.filter(function(o) { return o.option == 'netmask'})[0], + maskval = maskopt ? maskopt[readfn](s.section) : null, + firstsubnet = maskval ? addrvals[0] + '/' + maskval : addrvals.filter(function(a) { return a.indexOf('/') > 0 })[0]; + + if (firstsubnet == null) + return null; + + var mask = firstsubnet.split('/')[1]; + + if (!isNaN(mask)) + mask = network.prefixToMask(+mask); + + return mask; +} + +return view.extend({ + poll_status: function(map, networks) { + var resolveZone = null; + + for (var i = 0; i < networks.length; i++) { + var ifc = networks[i], + row = map.querySelector('.cbi-section-table-row[data-sid="%s"]'.format(ifc.getName())); + + if (row == null) + continue; + + var dsc = row.querySelector('[data-name="_ifacestat"] > div'), + box = row.querySelector('[data-name="_ifacebox"] .ifacebox-body'), + btn1 = row.querySelector('.cbi-section-actions .reconnect'), + btn2 = row.querySelector('.cbi-section-actions .down'), + stat = document.querySelector('[id="%s-ifc-status"]'.format(ifc.getName())), + resolveZone = render_ifacebox_status(box, ifc), + disabled = ifc ? !ifc.isUp() : true, + dynamic = ifc ? ifc.isDynamic() : false; + + if (dsc.hasAttribute('reconnect')) { + dom.content(dsc, E('em', _('Interface is starting...'))); + } + else if (dsc.hasAttribute('disconnect')) { + dom.content(dsc, E('em', _('Interface is stopping...'))); + } + else if (ifc.getProtocol() || uci.get('network', ifc.getName()) == null) { + render_status(dsc, ifc, false); + } + else if (!ifc.getProtocol()) { + var e = map.querySelector('[id="cbi-network-%s"] .cbi-button-edit'.format(ifc.getName())); + if (e) e.disabled = true; + + var link = L.url('admin/system/opkg') + '?query=luci-proto'; + dom.content(dsc, [ + E('em', _('Unsupported protocol type.')), E('br'), + E('a', { href: link }, _('Install protocol extensions...')) + ]); + } + else { + dom.content(dsc, E('em', _('Interface not present or not connected yet.'))); + } + + if (stat) { + var dev = ifc.getDevice(); + dom.content(stat, [ + E('img', { + 'src': L.resource('icons/%s%s.png').format(dev ? dev.getType() : 'ethernet', (dev && dev.isUp()) ? '' : '_disabled'), + 'title': dev ? dev.getTypeI18n() : _('Not present') + }), + render_status(E('span'), ifc, true) + ]); + } + + btn1.disabled = btn1.classList.contains('spinning') || btn2.classList.contains('spinning') || dynamic; + btn2.disabled = btn1.classList.contains('spinning') || btn2.classList.contains('spinning') || dynamic || disabled; + } + + return Promise.all([ resolveZone, network.flushCache() ]); + }, + + load: function() { + return Promise.all([ + network.getDSLModemType(), + uci.changes() + ]); + }, + + render: function(data) { + var dslModemType = data[0], + m, s, o; + + m = new form.Map('network'); + m.tabbed = true; + m.chain('dhcp'); + + s = m.section(form.GridSection, 'interface', _('Interfaces')); + s.anonymous = true; + s.addremove = true; + s.addbtntitle = _('Add new interface...'); + + s.load = function() { + return Promise.all([ + network.getNetworks(), + firewall.getZones() + ]).then(L.bind(function(data) { + this.networks = data[0]; + this.zones = data[1]; + }, this)); + }; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + s.tab('physical', _('Physical Settings')); + s.tab('firewall', _('Firewall Settings')); + s.tab('dhcp', _('DHCP Server')); + + s.cfgsections = function() { + return this.networks.map(function(n) { return n.getName() }) + .filter(function(n) { return n != 'loopback' }); + }; + + s.modaltitle = function(section_id) { + return _('Interfaces') + ' » ' + section_id.toUpperCase(); + }; + + s.renderRowActions = function(section_id) { + var tdEl = this.super('renderRowActions', [ section_id, _('Edit') ]), + net = this.networks.filter(function(n) { return n.getName() == section_id })[0], + disabled = net ? !net.isUp() : true, + dynamic = net ? net.isDynamic() : false; + + dom.content(tdEl.lastChild, [ + E('button', { + 'class': 'cbi-button cbi-button-neutral reconnect', + 'click': iface_updown.bind(this, true, section_id), + 'title': _('Reconnect this interface'), + 'disabled': dynamic ? 'disabled' : null + }, _('Restart')), + E('button', { + 'class': 'cbi-button cbi-button-neutral down', + 'click': iface_updown.bind(this, false, section_id), + 'title': _('Shutdown this interface'), + 'disabled': (dynamic || disabled) ? 'disabled' : null + }, _('Stop')), + tdEl.lastChild.firstChild, + tdEl.lastChild.lastChild + ]); + + if (!dynamic && net && !uci.get('network', net.getName())) { + tdEl.lastChild.childNodes[0].disabled = true; + tdEl.lastChild.childNodes[2].disabled = true; + tdEl.lastChild.childNodes[3].disabled = true; + } + + return tdEl; + }; + + s.addModalOptions = function(s) { + var protoval = uci.get('network', s.section, 'proto'), + protoclass = protoval ? network.getProtocol(protoval) : null, + o, ifname_single, ifname_multi, proto_select, proto_switch, type, stp, igmp, ss, so; + + if (!protoval) + return; + + return network.getNetwork(s.section).then(L.bind(function(ifc) { + var protocols = network.getProtocols(); + + protocols.sort(function(a, b) { + return a.getProtocol() > b.getProtocol(); + }); + + o = s.taboption('general', form.DummyValue, '_ifacestat_modal', _('Status')); + o.modalonly = true; + o.cfgvalue = L.bind(function(section_id) { + var net = this.networks.filter(function(n) { return n.getName() == section_id })[0]; + + return render_modal_status(E('div', { + 'id': '%s-ifc-status'.format(section_id), + 'class': 'ifacebadge large' + }), net); + }, this); + o.write = function() {}; + + proto_select = s.taboption('general', form.ListValue, 'proto', _('Protocol')); + proto_select.modalonly = true; + + proto_switch = s.taboption('general', form.Button, '_switch_proto'); + proto_switch.modalonly = true; + proto_switch.title = _('Really switch protocol?'); + proto_switch.inputtitle = _('Switch protocol'); + proto_switch.inputstyle = 'apply'; + proto_switch.onclick = L.bind(function(ev) { + s.map.save() + .then(L.bind(m.load, m)) + .then(L.bind(m.render, m)) + .then(L.bind(this.renderMoreOptionsModal, this, s.section)); + }, this); + + o = s.taboption('general', form.Flag, 'auto', _('Bring up on boot')); + o.modalonly = true; + o.default = o.enabled; + + type = s.taboption('physical', form.Flag, 'type', _('Bridge interfaces'), _('Creates a bridge over specified interface(s)')); + type.modalonly = true; + type.disabled = ''; + type.enabled = 'bridge'; + type.write = type.remove = function(section_id, value) { + var protocol = network.getProtocol(proto_select.formvalue(section_id)), + ifnameopt = this.section.children.filter(function(o) { return o.option == (value ? 'ifname_multi' : 'ifname_single') })[0]; + + if (!protocol.isVirtual() && !this.isActive(section_id)) + return; + + var old_ifnames = [], + devs = ifc.getDevices() || L.toArray(ifc.getDevice()); + + for (var i = 0; i < devs.length; i++) + old_ifnames.push(devs[i].getName()); + + var new_ifnames = L.toArray(ifnameopt.formvalue(section_id)); + + if (!value) + new_ifnames.length = Math.max(new_ifnames.length, 1); + + old_ifnames.sort(); + new_ifnames.sort(); + + for (var i = 0; i < Math.max(old_ifnames.length, new_ifnames.length); i++) { + if (old_ifnames[i] != new_ifnames[i]) { + // backup_ifnames() + for (var j = 0; j < old_ifnames.length; j++) + ifc.deleteDevice(old_ifnames[j]); + + for (var j = 0; j < new_ifnames.length; j++) + ifc.addDevice(new_ifnames[j]); + + break; + } + } + + if (value) + uci.set('network', section_id, 'type', 'bridge'); + else + uci.unset('network', section_id, 'type'); + }; + + stp = s.taboption('physical', form.Flag, 'stp', _('Enable STP'), _('Enables the Spanning Tree Protocol on this bridge')); + + igmp = s.taboption('physical', form.Flag, 'igmp_snooping', _('Enable IGMP snooping'), _('Enables IGMP snooping on this bridge')); + + ifname_single = s.taboption('physical', widgets.DeviceSelect, 'ifname_single', _('Interface')); + ifname_single.nobridges = ifc.isBridge(); + ifname_single.noaliases = false; + ifname_single.optional = false; + ifname_single.network = ifc.getName(); + ifname_single.write = ifname_single.remove = function() {}; + + ifname_multi = s.taboption('physical', widgets.DeviceSelect, 'ifname_multi', _('Interface')); + ifname_multi.nobridges = ifc.isBridge(); + ifname_multi.noaliases = true; + ifname_multi.multiple = true; + ifname_multi.optional = true; + ifname_multi.network = ifc.getName(); + ifname_multi.display_size = 6; + ifname_multi.write = ifname_multi.remove = function() {}; + + ifname_single.cfgvalue = ifname_multi.cfgvalue = function(section_id) { + var devs = ifc.getDevices() || L.toArray(ifc.getDevice()), + ifnames = []; + + for (var i = 0; i < devs.length; i++) + ifnames.push(devs[i].getName()); + + return ifnames; + }; + + if (L.hasSystemFeature('firewall')) { + o = s.taboption('firewall', widgets.ZoneSelect, '_zone', _('Create / Assign firewall-zone'), _('Choose the firewall zone you want to assign to this interface. Select unspecified to remove the interface from the associated zone or fill out the custom field to define a new zone and attach the interface to it.')); + o.network = ifc.getName(); + o.optional = true; + + o.cfgvalue = function(section_id) { + return firewall.getZoneByNetwork(ifc.getName()).then(function(zone) { + return (zone != null ? zone.getName() : null); + }); + }; + + o.write = o.remove = function(section_id, value) { + return Promise.all([ + firewall.getZoneByNetwork(ifc.getName()), + (value != null) ? firewall.getZone(value) : null + ]).then(function(data) { + var old_zone = data[0], + new_zone = data[1]; + + if (old_zone == null && new_zone == null && (value == null || value == '')) + return; + + if (old_zone != null && new_zone != null && old_zone.getName() == new_zone.getName()) + return; + + if (old_zone != null) + old_zone.deleteNetwork(ifc.getName()); + + if (new_zone != null) + new_zone.addNetwork(ifc.getName()); + else if (value != null) + return firewall.addZone(value).then(function(new_zone) { + new_zone.addNetwork(ifc.getName()); + }); + }); + }; + } + + for (var i = 0; i < protocols.length; i++) { + proto_select.value(protocols[i].getProtocol(), protocols[i].getI18n()); + + if (protocols[i].getProtocol() != uci.get('network', s.section, 'proto')) + proto_switch.depends('proto', protocols[i].getProtocol()); + + if (!protocols[i].isVirtual()) { + type.depends('proto', protocols[i].getProtocol()); + stp.depends({ type: 'bridge', proto: protocols[i].getProtocol() }); + igmp.depends({ type: 'bridge', proto: protocols[i].getProtocol() }); + ifname_single.depends({ type: '', proto: protocols[i].getProtocol() }); + ifname_multi.depends({ type: 'bridge', proto: protocols[i].getProtocol() }); + } + } + + if (L.hasSystemFeature('dnsmasq') || L.hasSystemFeature('odhcpd')) { + o = s.taboption('dhcp', form.SectionValue, '_dhcp', form.TypedSection, 'dhcp'); + o.depends('proto', 'static'); + + ss = o.subsection; + ss.uciconfig = 'dhcp'; + ss.addremove = false; + ss.anonymous = true; + + ss.tab('general', _('General Setup')); + ss.tab('advanced', _('Advanced Settings')); + ss.tab('ipv6', _('IPv6 Settings')); + + ss.filter = function(section_id) { + return (uci.get('dhcp', section_id, 'interface') == ifc.getName()); + }; + + ss.renderSectionPlaceholder = function() { + return E('div', { 'class': 'cbi-section-create' }, [ + E('p', _('No DHCP Server configured for this interface') + '   '), + E('button', { + 'class': 'cbi-button cbi-button-add', + 'title': _('Setup DHCP Server'), + 'click': ui.createHandlerFn(this, function(section_id, ev) { + this.map.save(function() { + uci.add('dhcp', 'dhcp', section_id); + uci.set('dhcp', section_id, 'interface', section_id); + uci.set('dhcp', section_id, 'start', 100); + uci.set('dhcp', section_id, 'limit', 150); + uci.set('dhcp', section_id, 'leasetime', '12h'); + }); + }, ifc.getName()) + }, _('Setup DHCP Server')) + ]); + }; + + ss.taboption('general', form.Flag, 'ignore', _('Ignore interface'), _('Disable DHCP for this interface.')); + + so = ss.taboption('general', form.Value, 'start', _('Start'), _('Lowest leased address as offset from the network address.')); + so.optional = true; + so.datatype = 'or(uinteger,ip4addr("nomask"))'; + so.default = '100'; + + so = ss.taboption('general', form.Value, 'limit', _('Limit'), _('Maximum number of leased addresses.')); + so.optional = true; + so.datatype = 'uinteger'; + so.default = '150'; + + so = ss.taboption('general', form.Value, 'leasetime', _('Lease time'), _('Expiry time of leased addresses, minimum is 2 minutes (2m).')); + so.optional = true; + so.default = '12h'; + + so = ss.taboption('advanced', form.Flag, 'dynamicdhcp', _('Dynamic DHCP'), _('Dynamically allocate DHCP addresses for clients. If disabled, only clients having static leases will be served.')); + so.default = so.enabled; + + ss.taboption('advanced', form.Flag, 'force', _('Force'), _('Force DHCP on this network even if another server is detected.')); + + // XXX: is this actually useful? + //ss.taboption('advanced', form.Value, 'name', _('Name'), _('Define a name for this network.')); + + so = ss.taboption('advanced', form.Value, 'netmask', _('IPv4-Netmask'), _('Override the netmask sent to clients. Normally it is calculated from the subnet that is served.')); + so.optional = true; + so.datatype = 'ip4addr'; + + so.render = function(option_index, section_id, in_table) { + this.placeholder = get_netmask(s, true); + return form.Value.prototype.render.apply(this, [ option_index, section_id, in_table ]); + }; + + so.validate = function(section_id, value) { + var node = this.map.findElement('id', this.cbid(section_id)); + if (node) + node.querySelector('input').setAttribute('placeholder', get_netmask(s, false)); + return form.Value.prototype.validate.apply(this, [ section_id, value ]); + }; + + ss.taboption('advanced', form.DynamicList, 'dhcp_option', _('DHCP-Options'), _('Define additional DHCP options, for example "6,192.168.2.1,192.168.2.2" which advertises different DNS servers to clients.')); + + for (var i = 0; i < ss.children.length; i++) + if (ss.children[i].option != 'ignore') + ss.children[i].depends('ignore', '0'); + + so = ss.taboption('ipv6', form.ListValue, 'ra', _('Router Advertisement-Service')); + so.value('', _('disabled')); + so.value('server', _('server mode')); + so.value('relay', _('relay mode')); + so.value('hybrid', _('hybrid mode')); + + so = ss.taboption('ipv6', form.ListValue, 'dhcpv6', _('DHCPv6-Service')); + so.value('', _('disabled')); + so.value('server', _('server mode')); + so.value('relay', _('relay mode')); + so.value('hybrid', _('hybrid mode')); + + so = ss.taboption('ipv6', form.ListValue, 'ndp', _('NDP-Proxy')); + so.value('', _('disabled')); + so.value('relay', _('relay mode')); + so.value('hybrid', _('hybrid mode')); + + so = ss.taboption('ipv6', form.Flag , 'master', _('Master'), _('Set this interface as master for the dhcpv6 relay.')); + so.depends('dhcpv6', 'relay'); + so.depends('dhcpv6', 'hybrid'); + + so = ss.taboption('ipv6', form.ListValue, 'ra_management', _('DHCPv6-Mode'), _('Default is stateless + stateful')); + so.value('0', _('stateless')); + so.value('1', _('stateless + stateful')); + so.value('2', _('stateful-only')); + so.depends('dhcpv6', 'server'); + so.depends('dhcpv6', 'hybrid'); + so.default = '1'; + + so = ss.taboption('ipv6', form.Flag, 'ra_default', _('Always announce default router'), _('Announce as default router even if no public prefix is available.')); + so.depends('ra', 'server'); + so.depends('ra', 'hybrid'); + + ss.taboption('ipv6', form.DynamicList, 'dns', _('Announced DNS servers')); + ss.taboption('ipv6', form.DynamicList, 'domain', _('Announced DNS domains')); + } + + ifc.renderFormOptions(s); + + for (var i = 0; i < s.children.length; i++) { + o = s.children[i]; + + switch (o.option) { + case 'proto': + case 'delegate': + case 'auto': + case 'type': + case 'stp': + case 'igmp_snooping': + case 'ifname_single': + case 'ifname_multi': + case '_dhcp': + case '_zone': + case '_switch_proto': + case '_ifacestat_modal': + continue; + + default: + if (o.deps.length) + for (var j = 0; j < o.deps.length; j++) + o.deps[j].proto = protoval; + else + o.depends('proto', protoval); + } + } + }, this)); + }; + + s.handleAdd = function(ev) { + var m2 = new form.Map('network'), + s2 = m2.section(form.NamedSection, '_new_'), + protocols = network.getProtocols(), + proto, name, bridge, ifname_single, ifname_multi; + + protocols.sort(function(a, b) { + return a.getProtocol() > b.getProtocol(); + }); + + s2.render = function() { + return Promise.all([ + {}, + this.renderUCISection('_new_') + ]).then(this.renderContents.bind(this)); + }; + + name = s2.option(form.Value, 'name', _('Name')); + name.rmempty = false; + name.datatype = 'uciname'; + name.placeholder = _('New interface name…'); + name.validate = function(section_id, value) { + if (uci.get('network', value) != null) + return _('The interface name is already used'); + + var pr = network.getProtocol(proto.formvalue(section_id), value), + ifname = pr.isVirtual() ? '%s-%s'.format(pr.getProtocol(), value) : 'br-%s'.format(value); + + if (value.length > 15) + return _('The interface name is too long'); + + return true; + }; + + proto = s2.option(form.ListValue, 'proto', _('Protocol')); + proto.validate = name.validate; + + bridge = s2.option(form.Flag, 'type', _('Bridge interfaces'), _('Creates a bridge over specified interface(s)')); + bridge.modalonly = true; + bridge.disabled = ''; + bridge.enabled = 'bridge'; + + ifname_single = s2.option(widgets.DeviceSelect, 'ifname_single', _('Interface')); + ifname_single.noaliases = false; + ifname_single.optional = false; + + ifname_multi = s2.option(widgets.DeviceSelect, 'ifname_multi', _('Interface')); + ifname_multi.nobridges = true; + ifname_multi.noaliases = true; + ifname_multi.multiple = true; + ifname_multi.optional = true; + ifname_multi.display_size = 6; + + for (var i = 0; i < protocols.length; i++) { + proto.value(protocols[i].getProtocol(), protocols[i].getI18n()); + + if (!protocols[i].isVirtual()) { + bridge.depends({ proto: protocols[i].getProtocol() }); + ifname_single.depends({ type: '', proto: protocols[i].getProtocol() }); + ifname_multi.depends({ type: 'bridge', proto: protocols[i].getProtocol() }); + } + } + + m2.render().then(L.bind(function(nodes) { + ui.showModal(_('Add new interface...'), [ + nodes, + E('div', { 'class': 'right' }, [ + E('button', { + 'class': 'btn', + 'click': ui.hideModal + }, _('Cancel')), ' ', + E('button', { + 'class': 'cbi-button cbi-button-positive important', + 'click': ui.createHandlerFn(this, function(ev) { + var nameval = name.isValid('_new_') ? name.formvalue('_new_') : null, + protoval = proto.isValid('_new_') ? proto.formvalue('_new_') : null, + protoclass = protoval ? network.getProtocol(protoval) : null; + + if (nameval == null || protoval == null || nameval == '' || protoval == '') + return; + + return protoclass.isCreateable(nameval).then(function(checkval) { + if (checkval != null) { + ui.addNotification(null, + E('p', _('New interface for "%s" can not be created: %s').format(protoclass.getI18n(), checkval))); + ui.hideModal(); + return; + } + + return m.save(function() { + var section_id = uci.add('network', 'interface', nameval); + + uci.set('network', section_id, 'proto', protoval); + + if (ifname_single.isActive('_new_')) { + uci.set('network', section_id, 'ifname', ifname_single.formvalue('_new_')); + } + else if (ifname_multi.isActive('_new_')) { + uci.set('network', section_id, 'type', 'bridge'); + uci.set('network', section_id, 'ifname', L.toArray(ifname_multi.formvalue('_new_')).join(' ')); + } + }).then(L.bind(m.children[0].renderMoreOptionsModal, m.children[0], nameval)); + + }); + }) + }, _('Create interface')) + ]) + ], 'cbi-modal'); + + nodes.querySelector('[id="%s"] input[type="text"]'.format(name.cbid('_new_'))).focus(); + }, this)); + }; + + s.handleRemove = function(section_id, ev) { + return network.deleteNetwork(section_id).then(L.bind(function(section_id, ev) { + return form.GridSection.prototype.handleRemove.apply(this, [section_id, ev]); + }, this, section_id, ev)); + }; + + o = s.option(form.DummyValue, '_ifacebox'); + o.modalonly = false; + o.textvalue = function(section_id) { + var net = this.section.networks.filter(function(n) { return n.getName() == section_id })[0], + zone = net ? this.section.zones.filter(function(z) { return !!z.getNetworks().filter(function(n) { return n == section_id })[0] })[0] : null; + + if (!net) + return; + + var node = E('div', { 'class': 'ifacebox' }, [ + E('div', { + 'class': 'ifacebox-head', + 'style': 'background-color:%s'.format(zone ? zone.getColor() : '#EEEEEE'), + 'title': zone ? _('Part of zone %q').format(zone.getName()) : _('No zone assigned') + }, E('strong', net.getName().toUpperCase())), + E('div', { + 'class': 'ifacebox-body', + 'id': '%s-ifc-devices'.format(section_id), + 'data-network': section_id + }, [ + E('img', { + 'src': L.resource('icons/ethernet_disabled.png'), + 'style': 'width:16px; height:16px' + }), + E('br'), E('small', '?') + ]) + ]); + + render_ifacebox_status(node.childNodes[1], net); + + return node; + }; + + o = s.option(form.DummyValue, '_ifacestat'); + o.modalonly = false; + o.textvalue = function(section_id) { + var net = this.section.networks.filter(function(n) { return n.getName() == section_id })[0]; + + if (!net) + return; + + var node = E('div', { 'id': '%s-ifc-description'.format(section_id) }); + + render_status(node, net, false); + + return node; + }; + + o = s.taboption('advanced', form.Flag, 'delegate', _('Use builtin IPv6-management')); + o.modalonly = true; + o.default = o.enabled; + + o = s.taboption('advanced', form.Flag, 'force_link', _('Force link'), _('Set interface properties regardless of the link carrier (If set, carrier sense events do not invoke hotplug handlers).')); + o.modalonly = true; + o.render = function(option_index, section_id, in_table) { + var protoopt = this.section.children.filter(function(o) { return o.option == 'proto' })[0], + protoval = protoopt ? protoopt.cfgvalue(section_id) : null; + + this.default = (protoval == 'static') ? this.enabled : this.disabled; + return this.super('render', [ option_index, section_id, in_table ]); + }; + + + s = m.section(form.TypedSection, 'globals', _('Global network options')); + s.addremove = false; + s.anonymous = true; + + o = s.option(form.Value, 'ula_prefix', _('IPv6 ULA-Prefix')); + o.datatype = 'cidr6'; + + o = s.option(form.Flag, 'packet_steering', _('Packet Steering'), _('Enable packet steering across all CPUs. May help or hinder network speed.')); + o.optional = true; + + + if (dslModemType != null) { + s = m.section(form.TypedSection, 'dsl', _('DSL')); + s.anonymous = true; + + o = s.option(form.ListValue, 'annex', _('Annex')); + o.value('a', _('Annex A + L + M (all)')); + o.value('b', _('Annex B (all)')); + o.value('j', _('Annex J (all)')); + o.value('m', _('Annex M (all)')); + o.value('bdmt', _('Annex B G.992.1')); + o.value('b2', _('Annex B G.992.3')); + o.value('b2p', _('Annex B G.992.5')); + o.value('at1', _('ANSI T1.413')); + o.value('admt', _('Annex A G.992.1')); + o.value('alite', _('Annex A G.992.2')); + o.value('a2', _('Annex A G.992.3')); + o.value('a2p', _('Annex A G.992.5')); + o.value('l', _('Annex L G.992.3 POTS 1')); + o.value('m2', _('Annex M G.992.3')); + o.value('m2p', _('Annex M G.992.5')); + + o = s.option(form.ListValue, 'tone', _('Tone')); + o.value('', _('auto')); + o.value('a', _('A43C + J43 + A43')); + o.value('av', _('A43C + J43 + A43 + V43')); + o.value('b', _('B43 + B43C')); + o.value('bv', _('B43 + B43C + V43')); + + if (dslModemType == 'vdsl') { + o = s.option(form.ListValue, 'xfer_mode', _('Encapsulation mode')); + o.value('', _('auto')); + o.value('atm', _('ATM (Asynchronous Transfer Mode)')); + o.value('ptm', _('PTM/EFM (Packet Transfer Mode)')); + + o = s.option(form.ListValue, 'line_mode', _('DSL line mode')); + o.value('', _('auto')); + o.value('adsl', _('ADSL')); + o.value('vdsl', _('VDSL')); + + o = s.option(form.ListValue, 'ds_snr_offset', _('Downstream SNR offset')); + o.default = '0'; + + for (var i = -100; i <= 100; i += 5) + o.value(i, _('%.1f dB').format(i / 10)); + } + + s.option(form.Value, 'firmware', _('Firmware File')); + } + + + // Show ATM bridge section if we have the capabilities + if (L.hasSystemFeature('br2684ctl')) { + s = m.section(form.TypedSection, 'atm-bridge', _('ATM Bridges'), _('ATM bridges expose encapsulated ethernet in AAL5 connections as virtual Linux network interfaces which can be used in conjunction with DHCP or PPP to dial into the provider network.')); + + s.addremove = true; + s.anonymous = true; + s.addbtntitle = _('Add ATM Bridge'); + + s.handleAdd = function(ev) { + var sections = uci.sections('network', 'atm-bridge'), + max_unit = -1; + + for (var i = 0; i < sections.length; i++) { + var unit = +sections[i].unit; + + if (!isNaN(unit) && unit > max_unit) + max_unit = unit; + } + + return this.map.save(function() { + var sid = uci.add('network', 'atm-bridge'); + + uci.set('network', sid, 'unit', max_unit + 1); + uci.set('network', sid, 'atmdev', 0); + uci.set('network', sid, 'encaps', 'llc'); + uci.set('network', sid, 'payload', 'bridged'); + uci.set('network', sid, 'vci', 35); + uci.set('network', sid, 'vpi', 8); + }); + }; + + s.tab('general', _('General Setup')); + s.tab('advanced', _('Advanced Settings')); + + o = s.taboption('general', form.Value, 'vci', _('ATM Virtual Channel Identifier (VCI)')); + s.taboption('general', form.Value, 'vpi', _('ATM Virtual Path Identifier (VPI)')); + + o = s.taboption('general', form.ListValue, 'encaps', _('Encapsulation mode')); + o.value('llc', _('LLC')); + o.value('vc', _('VC-Mux')); + + s.taboption('advanced', form.Value, 'atmdev', _('ATM device number')); + s.taboption('advanced', form.Value, 'unit', _('Bridge unit number')); + + o = s.taboption('advanced', form.ListValue, 'payload', _('Forwarding mode')); + o.value('bridged', _('bridged')); + o.value('routed', _('routed')); + } + + + return m.render().then(L.bind(function(m, nodes) { + poll.add(L.bind(function() { + var section_ids = m.children[0].cfgsections(), + tasks = []; + + for (var i = 0; i < section_ids.length; i++) { + var row = nodes.querySelector('.cbi-section-table-row[data-sid="%s"]'.format(section_ids[i])), + dsc = row.querySelector('[data-name="_ifacestat"] > div'), + btn1 = row.querySelector('.cbi-section-actions .reconnect'), + btn2 = row.querySelector('.cbi-section-actions .down'); + + if (dsc.getAttribute('reconnect') == '') { + dsc.setAttribute('reconnect', '1'); + tasks.push(fs.exec('/sbin/ifup', [section_ids[i]]).catch(function(e) { + ui.addNotification(null, E('p', e.message)); + })); + } + else if (dsc.getAttribute('disconnect') == '') { + dsc.setAttribute('disconnect', '1'); + tasks.push(fs.exec('/sbin/ifdown', [section_ids[i]]).catch(function(e) { + ui.addNotification(null, E('p', e.message)); + })); + } + else if (dsc.getAttribute('reconnect') == '1') { + dsc.removeAttribute('reconnect'); + btn1.classList.remove('spinning'); + btn1.disabled = false; + } + else if (dsc.getAttribute('disconnect') == '1') { + dsc.removeAttribute('disconnect'); + btn2.classList.remove('spinning'); + btn2.disabled = false; + } + } + + return Promise.all(tasks) + .then(L.bind(network.getNetworks, network)) + .then(L.bind(this.poll_status, this, nodes)); + }, this), 5); + + return nodes; + }, this, m)); + } +}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js b/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js new file mode 100644 index 000000000..58a151de0 --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js @@ -0,0 +1,103 @@ +'use strict'; +'require view'; +'require form'; +'require network'; +'require tools.widgets as widgets'; + +return view.extend({ + load: function() { + return network.getDevices(); + }, + + render: function(netdevs) { + var m, s, o; + + m = new form.Map('network', _('Routes'), _('Routes specify over which interface and gateway a certain host or network can be reached.')); + m.tabbed = true; + + for (var i = 4; i <= 6; i += 2) { + s = m.section(form.GridSection, (i == 4) ? 'route' : 'route6', (i == 4) ? _('Static IPv4 Routes') : _('Static IPv6 Routes')); + s.anonymous = true; + s.addremove = true; + s.sortable = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + + o = s.taboption('general', widgets.NetworkSelect, 'interface', _('Interface')); + o.rmempty = false; + o.nocreate = true; + + o = s.taboption('general', form.Value, 'target', _('Target'), (i == 4) ? _('Host-IP or Network') : _('IPv6-Address or Network (CIDR)')); + o.datatype = (i == 4) ? 'ip4addr' : 'ip6addr'; + o.rmempty = false; + + if (i == 4) { + o = s.taboption('general', form.Value, 'netmask', _('IPv4-Netmask'), _('if target is a network')); + o.placeholder = '255.255.255.255'; + o.datatype = 'ip4addr'; + o.rmempty = true; + } + + o = s.taboption('general', form.Value, 'gateway', (i == 4) ? _('IPv4-Gateway') : _('IPv6-Gateway')); + o.datatype = (i == 4) ? 'ip4addr' : 'ip6addr'; + o.rmempty = true; + + o = s.taboption('advanced', form.Value, 'metric', _('Metric')); + o.placeholder = 0; + o.datatype = (i == 4) ? 'range(0,255)' : 'range(0,65535)'; + o.rmempty = true; + o.textvalue = function(section_id) { + return this.cfgvalue(section_id) || 0; + }; + + o = s.taboption('advanced', form.Value, 'mtu', _('MTU')); + o.placeholder = 1500; + o.datatype = 'range(64,9000)'; + o.rmempty = true; + o.modalonly = true; + + o = s.taboption('advanced', form.ListValue, 'type', _('Route type')); + o.value('', 'unicast'); + o.value('local'); + o.value('broadcast'); + o.value('multicast'); + o.value('unreachable'); + o.value('prohibit'); + o.value('blackhole'); + o.value('anycast'); + o.default = ''; + o.rmempty = true; + o.modalonly = true; + + o = s.taboption('advanced', form.Value, 'table', _('Route table')); + o.value('local', 'local (255)'); + o.value('main', 'main (254)'); + o.value('default', 'default (253)'); + o.rmempty = true; + o.modalonly = true; + o.cfgvalue = function(section_id) { + var cfgvalue = this.super('cfgvalue', [section_id]); + return cfgvalue || 'main'; + }; + + o = s.taboption('advanced', form.Value, 'source', _('Source Address')); + o.placeholder = E('em', _('automatic')); + for (var j = 0; j < netdevs.length; j++) { + var addrs = netdevs[j].getIPAddrs(); + for (var k = 0; k < addrs.length; k++) + o.value(addrs[k].split('/')[0]); + } + o.datatype = (i == 4) ? 'ip4addr' : 'ip6addr'; + o.default = ''; + o.rmempty = true; + o.modalonly = true; + + o = s.taboption('advanced', form.Flag, 'onlink', _('On-Link route')); + o.default = o.disabled; + o.rmempty = true; + } + + return m.render(); + } +}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js b/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js new file mode 100644 index 000000000..3133d2725 --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js @@ -0,0 +1,375 @@ +'use strict'; +'require view'; +'require dom'; +'require poll'; +'require ui'; +'require rpc'; +'require uci'; +'require form'; +'require network'; + +function parse_portvalue(section_id) { + var ports = L.toArray(uci.get('network', section_id, 'ports')); + + for (var i = 0; i < ports.length; i++) { + var m = ports[i].match(/^(\d+)([tu]?)/); + + if (m && m[1] == this.option) + return m[2] || 'u'; + } + + return ''; +} + +function validate_portvalue(section_id, value) { + if (value != 'u') + return true; + + var sections = this.section.cfgsections(); + + for (var i = 0; i < sections.length; i++) { + if (sections[i] == section_id) + continue; + + if (this.formvalue(sections[i]) == 'u') + return _('%s is untagged in multiple VLANs!').format(this.title); + } + + return true; +} + +function update_interfaces(old_ifname, new_ifname) { + var interfaces = uci.sections('network', 'interface'); + + for (var i = 0; i < interfaces.length; i++) { + var old_ifnames = L.toArray(interfaces[i].ifname), + new_ifnames = [], + changed = false; + + for (var j = 0; j < old_ifnames.length; j++) { + if (old_ifnames[j] == old_ifname) { + new_ifnames.push(new_ifname); + changed = true; + } + else { + new_ifnames.push(old_ifnames[j]); + } + } + + if (changed) { + uci.set('network', interfaces[i]['.name'], 'ifname', new_ifnames.join(' ')); + + ui.addNotification(null, E('p', _('Interface %q device auto-migrated from %q to %q.') + .replace(/%q/g, '"%s"').format(interfaces[i]['.name'], old_ifname, new_ifname))); + } + } +} + +function render_port_status(node, portstate) { + if (!node) + return null; + + if (!portstate || !portstate.link) + dom.content(node, [ + E('img', { src: L.resource('icons/port_down.png') }), + E('br'), + _('no link') + ]); + else + dom.content(node, [ + E('img', { src: L.resource('icons/port_up.png') }), + E('br'), + '%d'.format(portstate.speed) + _('baseT'), + E('br'), + portstate.duplex ? _('full-duplex') : _('half-duplex') + ]); + + return node; +} + +function update_port_status(topologies) { + var tasks = []; + + for (var switch_name in topologies) + tasks.push(callSwconfigPortState(switch_name).then(L.bind(function(switch_name, ports) { + for (var i = 0; i < ports.length; i++) { + var node = document.querySelector('[data-switch="%s"][data-port="%d"]'.format(switch_name, ports[i].port)); + render_port_status(node, ports[i]); + } + }, topologies[switch_name], switch_name))); + + return Promise.all(tasks); +} + +var callSwconfigFeatures = rpc.declare({ + object: 'luci', + method: 'getSwconfigFeatures', + params: [ 'switch' ], + expect: { '': {} } +}); + +var callSwconfigPortState = rpc.declare({ + object: 'luci', + method: 'getSwconfigPortState', + params: [ 'switch' ], + expect: { result: [] } +}); + +return view.extend({ + load: function() { + return network.getSwitchTopologies().then(function(topologies) { + var tasks = []; + + for (var switch_name in topologies) { + tasks.push(callSwconfigFeatures(switch_name).then(L.bind(function(features) { + this.features = features; + }, topologies[switch_name]))); + tasks.push(callSwconfigPortState(switch_name).then(L.bind(function(ports) { + this.portstate = ports; + }, topologies[switch_name]))); + } + + return Promise.all(tasks).then(function() { return topologies }); + }); + }, + + render: function(topologies) { + var m, s, o; + + m = new form.Map('network', _('Switch'), _('The network ports on this device can be combined to several VLANs in which computers can communicate directly with each other. VLANs are often used to separate different network segments. Often there is by default one Uplink port for a connection to the next greater network like the internet and other ports for a local network.')); + + var switchSections = uci.sections('network', 'switch'); + + for (var i = 0; i < switchSections.length; i++) { + var switchSection = switchSections[i], + sid = switchSection['.name'], + switch_name = switchSection.name || sid, + topology = topologies[switch_name]; + + if (!topology) { + ui.addNotification(null, _('Switch %q has an unknown topology - the VLAN settings might not be accurate.').replace(/%q/, switch_name)); + + topologies[switch_name] = topology = { + features: {}, + netdevs: { + 5: 'eth0' + }, + ports: [ + { num: 0, label: 'Port 1' }, + { num: 1, label: 'Port 2' }, + { num: 2, label: 'Port 3' }, + { num: 3, label: 'Port 4' }, + { num: 4, label: 'Port 5' }, + { num: 5, label: 'CPU (eth0)', device: 'eth0', need_tag: false } + ] + }; + } + + var feat = topology.features, + min_vid = feat.min_vid || 0, + max_vid = feat.max_vid || 16, + num_vlans = feat.num_vlans || 16, + switch_title = _('Switch %q').replace(/%q/, '"%s"'.format(switch_name)), + vlan_title = _('VLANs on %q').replace(/%q/, '"%s"'.format(switch_name)); + + if (feat.switch_title) { + switch_title += ' (%s)'.format(feat.switch_title); + vlan_title += ' (%s)'.format(feat.switch_title); + } + + s = m.section(form.NamedSection, sid, 'switch', switch_title); + s.addremove = false; + + if (feat.vlan_option) + s.option(form.Flag, feat.vlan_option, _('Enable VLAN functionality')); + + if (feat.learning_option) { + o = s.option(form.Flag, feat.learning_option, _('Enable learning and aging')); + o.default = o.enabled; + } + + if (feat.jumbo_option) { + o = s.option(form.Flag, feat.jumbo_option, _('Enable Jumbo Frame passthrough')); + o.enabled = '3'; + o.rmempty = true; + } + + if (feat.mirror_option) { + s.option(form.Flag, 'enable_mirror_rx', _('Enable mirroring of incoming packets')); + s.option(form.Flag, 'enable_mirror_tx', _('Enable mirroring of outgoing packets')); + + var sp = s.option(form.ListValue, 'mirror_source_port', _('Mirror source port')), + mp = s.option(form.ListValue, 'mirror_monitor_port', _('Mirror monitor port')); + + sp.depends('enable_mirror_rx', '1'); + sp.depends('enable_mirror_tx', '1'); + + mp.depends('enable_mirror_rx', '1'); + mp.depends('enable_mirror_tx', '1'); + + for (var j = 0; j < topology.ports.length; j++) { + sp.value(topology.ports[j].num, topology.ports[j].label); + mp.value(topology.ports[j].num, topology.ports[j].label); + } + } + + s = m.section(form.TableSection, 'switch_vlan', vlan_title); + s.anonymous = true; + s.addremove = true; + s.addbtntitle = _('Add VLAN'); + s.topology = topology; + s.device = switch_name; + + s.filter = function(section_id) { + var device = uci.get('network', section_id, 'device'); + return (device == switch_name); + }; + + s.cfgsections = function() { + var sections = form.TableSection.prototype.cfgsections.apply(this); + + return sections.sort(function(a, b) { + var vidA = feat.vid_option ? uci.get('network', a, feat.vid_option) : null, + vidB = feat.vid_option ? uci.get('network', b, feat.vid_option) : null; + + vidA = +(vidA != null ? vidA : uci.get('network', a, 'vlan') || 9999); + vidB = +(vidB != null ? vidB : uci.get('network', b, 'vlan') || 9999); + + return (vidA - vidB); + }); + }; + + s.handleAdd = function(ev) { + var sections = uci.sections('network', 'switch_vlan'), + section_id = uci.add('network', 'switch_vlan'), + max_vlan = 0, + max_vid = 0; + + for (var j = 0; j < sections.length; j++) { + if (sections[j].device != s.device) + continue; + + var vlan = +sections[j].vlan, + vid = feat.vid_option ? +sections[j][feat.vid_option] : null; + + if (vlan > max_vlan) + max_vlan = vlan; + + if (vid > max_vid) + max_vid = vid; + } + + uci.set('network', section_id, 'device', s.device); + uci.set('network', section_id, 'vlan', max_vlan + 1); + + if (feat.vid_option) + uci.set('network', section_id, feat.vid_option, max_vid + 1); + + return this.map.save(null, true); + }; + + var port_opts = []; + + o = s.option(form.Value, feat.vid_option || 'vlan', 'VLAN ID'); + o.rmempty = false; + o.forcewrite = true; + o.vlan_used = {}; + o.datatype = 'range(%u,%u)'.format(min_vid, feat.vid_option ? 4094 : num_vlans - 1); + o.description = _('Port status:'); + + o.validate = function(section_id, value) { + var v = +value, + m = feat.vid_option ? 4094 : num_vlans - 1; + + if (isNaN(v) || v < min_vid || v > m) + return _('Invalid VLAN ID given! Only IDs between %d and %d are allowed.').format(min_vid, m); + + var sections = this.section.cfgsections(); + + for (var i = 0; i < sections.length; i++) { + if (sections[i] == section_id) + continue; + + if (this.formvalue(sections[i]) == v) + return _('Invalid VLAN ID given! Only unique IDs are allowed'); + } + + return true; + }; + + o.write = function(section_id, value) { + var topology = this.section.topology, + values = []; + + for (var i = 0; i < port_opts.length; i++) { + var tagging = port_opts[i].formvalue(section_id), + portspec = Array.isArray(topology.ports) ? topology.ports[i] : null; + + if (tagging == 't') + values.push(port_opts[i].option + tagging); + else if (tagging == 'u') + values.push(port_opts[i].option); + + if (portspec && portspec.device) { + var old_tag = port_opts[i].cfgvalue(section_id), + old_vid = this.cfgvalue(section_id); + + if (old_tag != tagging || old_vid != value) { + var old_ifname = portspec.device + (old_tag != 'u' ? '.' + old_vid : ''), + new_ifname = portspec.device + (tagging != 'u' ? '.' + value : ''); + + if (old_ifname != new_ifname) + update_interfaces(old_ifname, new_ifname); + } + } + } + + if (feat.vlan4k_option) + uci.set('network', sid, feat.vlan4k_option, '1'); + + uci.set('network', section_id, 'ports', values.join(' ')); + + return form.Value.prototype.write.apply(this, [section_id, value]); + }; + + o.cfgvalue = function(section_id) { + var value = feat.vid_option ? uci.get('network', section_id, feat.vid_option) : null; + return (value || uci.get('network', section_id, 'vlan')); + }; + + s.option(form.Value, 'description', _('Description')); + + for (var j = 0; Array.isArray(topology.ports) && j < topology.ports.length; j++) { + var portspec = topology.ports[j], + portstate = Array.isArray(topology.portstate) ? topology.portstate[portspec.num] : null; + + o = s.option(form.ListValue, String(portspec.num), portspec.label); + o.value('', _('off')); + + if (!portspec.need_tag) + o.value('u', _('untagged')); + + o.value('t', _('tagged')); + + o.cfgvalue = parse_portvalue; + o.validate = validate_portvalue; + o.write = function() {}; + + o.description = render_port_status(E('small', { + 'data-switch': switch_name, + 'data-port': portspec.num + }), portstate); + + port_opts.push(o); + } + + port_opts.sort(function(a, b) { + return a.option > b.option; + }); + } + + poll.add(L.bind(update_port_status, m, topologies)); + + return m.render(); + } +}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js b/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js new file mode 100644 index 000000000..342d2aff2 --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js @@ -0,0 +1,2066 @@ +'use strict'; +'require view'; +'require dom'; +'require poll'; +'require fs'; +'require ui'; +'require rpc'; +'require uci'; +'require form'; +'require network'; +'require firewall'; +'require tools.widgets as widgets'; + +function count_changes(section_id) { + var changes = ui.changes.changes, n = 0; + + if (!L.isObject(changes)) + return n; + + if (Array.isArray(changes.wireless)) + for (var i = 0; i < changes.wireless.length; i++) + n += (changes.wireless[i][1] == section_id); + + return n; +} + +function render_radio_badge(radioDev) { + return E('span', { 'class': 'ifacebadge' }, [ + E('img', { 'src': L.resource('icons/wifi%s.png').format(radioDev.isUp() ? '' : '_disabled') }), + ' ', + radioDev.getName() + ]); +} + +function render_signal_badge(signalPercent, signalValue, noiseValue, wrap, mode) { + var icon, title, value; + + if (signalPercent < 0) + icon = L.resource('icons/signal-none.png'); + else if (signalPercent == 0) + icon = L.resource('icons/signal-0.png'); + else if (signalPercent < 25) + icon = L.resource('icons/signal-0-25.png'); + else if (signalPercent < 50) + icon = L.resource('icons/signal-25-50.png'); + else if (signalPercent < 75) + icon = L.resource('icons/signal-50-75.png'); + else + icon = L.resource('icons/signal-75-100.png'); + + if (signalValue != null && signalValue != 0) { + if (noiseValue != null && noiseValue != 0) { + value = '%d/%d\xa0%s'.format(signalValue, noiseValue, _('dBm')); + title = '%s: %d %s / %s: %d %s / %s %d'.format( + _('Signal'), signalValue, _('dBm'), + _('Noise'), noiseValue, _('dBm'), + _('SNR'), signalValue - noiseValue); + } + else { + value = '%d\xa0%s'.format(signalValue, _('dBm')); + title = '%s: %d %s'.format(_('Signal'), signalValue, _('dBm')); + } + } + else if (signalPercent > -1) { + switch (mode) { + case 'ap': + title = _('No client associated'); + break; + + case 'sta': + case 'adhoc': + case 'mesh': + title = _('Not associated'); + break; + + default: + title = _('No RX signal'); + } + + if (noiseValue != null && noiseValue != 0) { + value = '---/%d\x0a%s'.format(noiseValue, _('dBm')); + title = '%s / %s: %d %s'.format(title, _('Noise'), noiseValue, _('dBm')); + } + else { + value = '---\xa0%s'.format(_('dBm')); + } + } + else { + value = E('em', {}, E('small', {}, [ _('disabled') ])); + title = _('Interface is disabled'); + } + + return E('div', { + 'class': wrap ? 'center' : 'ifacebadge', + 'title': title, + 'data-signal': signalValue, + 'data-noise': noiseValue + }, [ + E('img', { 'src': icon }), + E('span', {}, [ + wrap ? E('br') : ' ', + value + ]) + ]); +} + +function render_network_badge(radioNet) { + return render_signal_badge( + radioNet.isUp() ? radioNet.getSignalPercent() : -1, + radioNet.getSignal(), radioNet.getNoise(), false, radioNet.getMode()); +} + +function render_radio_status(radioDev, wifiNets) { + var name = radioDev.getI18n().replace(/ Wireless Controller .+$/, ''), + node = E('div', [ E('big', {}, E('strong', {}, name)), E('div') ]), + channel, frequency, bitrate; + + for (var i = 0; i < wifiNets.length; i++) { + channel = channel || wifiNets[i].getChannel(); + frequency = frequency || wifiNets[i].getFrequency(); + bitrate = bitrate || wifiNets[i].getBitRate(); + } + + if (radioDev.isUp()) + L.itemlist(node.lastElementChild, [ + _('Channel'), '%s (%s %s)'.format(channel || '?', frequency || '?', _('GHz')), + _('Bitrate'), '%s %s'.format(bitrate || '?', _('Mbit/s')) + ], ' | '); + else + node.lastElementChild.appendChild(E('em', _('Device is not active'))); + + return node; +} + +function render_network_status(radioNet) { + var mode = radioNet.getActiveMode(), + bssid = radioNet.getActiveBSSID(), + channel = radioNet.getChannel(), + disabled = (radioNet.get('disabled') == '1' || uci.get('wireless', radioNet.getWifiDeviceName(), 'disabled') == '1'), + is_assoc = (bssid && bssid != '00:00:00:00:00:00' && channel && mode != 'Unknown' && !disabled), + is_mesh = (radioNet.getMode() == 'mesh'), + changecount = count_changes(radioNet.getName()), + status_text = null; + + if (changecount) + status_text = E('a', { + href: '#', + click: L.bind(ui.changes.displayChanges, ui.changes) + }, _('Interface has %d pending changes').format(changecount)); + else if (!is_assoc) + status_text = E('em', disabled ? _('Wireless is disabled') : _('Wireless is not associated')); + + return L.itemlist(E('div'), [ + is_mesh ? _('Mesh ID') : _('SSID'), (is_mesh ? radioNet.getMeshID() : radioNet.getSSID()) || '?', + _('Mode'), mode, + _('BSSID'), (!changecount && is_assoc) ? bssid : null, + _('Encryption'), (!changecount && is_assoc) ? radioNet.getActiveEncryption() || _('None') : null, + null, status_text + ], [ ' | ', E('br') ]); +} + +function render_modal_status(node, radioNet) { + var mode = radioNet.getActiveMode(), + noise = radioNet.getNoise(), + bssid = radioNet.getActiveBSSID(), + channel = radioNet.getChannel(), + disabled = (radioNet.get('disabled') == '1'), + is_assoc = (bssid && bssid != '00:00:00:00:00:00' && channel && mode != 'Unknown' && !disabled); + + if (node == null) + node = E('span', { 'class': 'ifacebadge large', 'data-network': radioNet.getName() }, [ E('small'), E('span') ]); + + dom.content(node.firstElementChild, render_signal_badge( + disabled ? -1 : radioNet.getSignalPercent(), + radioNet.getSignal(), noise, true, radioNet.getMode())); + + L.itemlist(node.lastElementChild, [ + _('Mode'), mode, + _('SSID'), radioNet.getSSID() || '?', + _('BSSID'), is_assoc ? bssid : null, + _('Encryption'), is_assoc ? radioNet.getActiveEncryption() || _('None') : null, + _('Channel'), is_assoc ? '%d (%.3f %s)'.format(radioNet.getChannel(), radioNet.getFrequency() || 0, _('GHz')) : null, + _('Tx-Power'), is_assoc ? '%d %s'.format(radioNet.getTXPower(), _('dBm')) : null, + _('Signal'), is_assoc ? '%d %s'.format(radioNet.getSignal(), _('dBm')) : null, + _('Noise'), (is_assoc && noise != null) ? '%d %s'.format(noise, _('dBm')) : null, + _('Bitrate'), is_assoc ? '%.1f %s'.format(radioNet.getBitRate() || 0, _('Mbit/s')) : null, + _('Country'), is_assoc ? radioNet.getCountryCode() : null + ], [ ' | ', E('br'), E('br'), E('br'), E('br'), E('br'), ' | ', E('br'), ' | ' ]); + + if (!is_assoc) + dom.append(node.lastElementChild, E('em', disabled ? _('Wireless is disabled') : _('Wireless is not associated'))); + + return node; +} + +function format_wifirate(rate) { + var s = '%.1f\xa0%s, %d\xa0%s'.format(rate.rate / 1000, _('Mbit/s'), rate.mhz, _('MHz')), + ht = rate.ht, vht = rate.vht, + mhz = rate.mhz, nss = rate.nss, + mcs = rate.mcs, sgi = rate.short_gi; + + if (ht || vht) { + if (vht) s += ', VHT-MCS\xa0%d'.format(mcs); + if (nss) s += ', VHT-NSS\xa0%d'.format(nss); + if (ht) s += ', MCS\xa0%s'.format(mcs); + if (sgi) s += ', ' + _('Short GI').replace(/ /g, '\xa0'); + } + + return s; +} + +function radio_restart(id, ev) { + var row = document.querySelector('.cbi-section-table-row[data-sid="%s"]'.format(id)), + dsc = row.querySelector('[data-name="_stat"] > div'), + btn = row.querySelector('.cbi-section-actions button'); + + btn.blur(); + btn.classList.add('spinning'); + btn.disabled = true; + + dsc.setAttribute('restart', ''); + dom.content(dsc, E('em', _('Device is restarting…'))); +} + +function network_updown(id, map, ev) { + var radio = uci.get('wireless', id, 'device'), + disabled = (uci.get('wireless', id, 'disabled') == '1') || + (uci.get('wireless', radio, 'disabled') == '1'); + + if (disabled) { + uci.unset('wireless', id, 'disabled'); + uci.unset('wireless', radio, 'disabled'); + } + else { + uci.set('wireless', id, 'disabled', '1'); + + var all_networks_disabled = true, + wifi_ifaces = uci.sections('wireless', 'wifi-iface'); + + for (var i = 0; i < wifi_ifaces.length; i++) { + if (wifi_ifaces[i].device == radio && wifi_ifaces[i].disabled != '1') { + all_networks_disabled = false; + break; + } + } + + if (all_networks_disabled) + uci.set('wireless', radio, 'disabled', '1'); + } + + return map.save().then(function() { + ui.changes.apply() + }); +} + +function next_free_sid(offset) { + var sid = 'wifinet' + offset; + + while (uci.get('wireless', sid)) + sid = 'wifinet' + (++offset); + + return sid; +} + +function add_dependency_permutations(o, deps) { + var res = null; + + for (var key in deps) { + if (!deps.hasOwnProperty(key) || !Array.isArray(deps[key])) + continue; + + var list = deps[key], + tmp = []; + + for (var j = 0; j < list.length; j++) { + for (var k = 0; k < (res ? res.length : 1); k++) { + var item = (res ? Object.assign({}, res[k]) : {}); + item[key] = list[j]; + tmp.push(item); + } + } + + res = tmp; + } + + for (var i = 0; i < (res ? res.length : 0); i++) + o.depends(res[i]); +} + +var CBIWifiFrequencyValue = form.Value.extend({ + callFrequencyList: rpc.declare({ + object: 'iwinfo', + method: 'freqlist', + params: [ 'device' ], + expect: { results: [] } + }), + + load: function(section_id) { + return Promise.all([ + network.getWifiDevice(section_id), + this.callFrequencyList(section_id) + ]).then(L.bind(function(data) { + this.channels = { + '11g': L.hasSystemFeature('hostapd', 'acs') ? [ 'auto', 'auto', true ] : [], + '11a': L.hasSystemFeature('hostapd', 'acs') ? [ 'auto', 'auto', true ] : [] + }; + + for (var i = 0; i < data[1].length; i++) + this.channels[(data[1][i].mhz > 2484) ? '11a' : '11g'].push( + data[1][i].channel, + '%d (%d Mhz)'.format(data[1][i].channel, data[1][i].mhz), + !data[1][i].restricted + ); + + var hwmodelist = L.toArray(data[0] ? data[0].getHWModes() : null) + .reduce(function(o, v) { o[v] = true; return o }, {}); + + this.modes = [ + '', 'Legacy', true, + 'n', 'N', hwmodelist.n, + 'ac', 'AC', hwmodelist.ac + ]; + + var htmodelist = L.toArray(data[0] ? data[0].getHTModes() : null) + .reduce(function(o, v) { o[v] = true; return o }, {}); + + this.htmodes = { + '': [ '', '-', true ], + 'n': [ + 'HT20', '20 MHz', htmodelist.HT20, + 'HT40', '40 MHz', htmodelist.HT40 + ], + 'ac': [ + 'VHT20', '20 MHz', htmodelist.VHT20, + 'VHT40', '40 MHz', htmodelist.VHT40, + 'VHT80', '80 MHz', htmodelist.VHT80, + 'VHT160', '160 MHz', htmodelist.VHT160 + ] + }; + + this.bands = { + '': [ + '11g', '2.4 GHz', this.channels['11g'].length > 3, + '11a', '5 GHz', this.channels['11a'].length > 3 + ], + 'n': [ + '11g', '2.4 GHz', this.channels['11g'].length > 3, + '11a', '5 GHz', this.channels['11a'].length > 3 + ], + 'ac': [ + '11a', '5 GHz', true + ] + }; + }, this)); + }, + + setValues: function(sel, vals) { + if (sel.vals) + sel.vals.selected = sel.selectedIndex; + + while (sel.options[0]) + sel.remove(0); + + for (var i = 0; vals && i < vals.length; i += 3) + if (vals[i+2]) + sel.add(E('option', { value: vals[i+0] }, [ vals[i+1] ])); + + if (vals && !isNaN(vals.selected)) + sel.selectedIndex = vals.selected; + + sel.parentNode.style.display = (sel.options.length <= 1) ? 'none' : ''; + sel.vals = vals; + }, + + toggleWifiMode: function(elem) { + this.toggleWifiHTMode(elem); + this.toggleWifiBand(elem); + }, + + toggleWifiHTMode: function(elem) { + var mode = elem.querySelector('.mode'); + var bwdt = elem.querySelector('.htmode'); + + this.setValues(bwdt, this.htmodes[mode.value]); + }, + + toggleWifiBand: function(elem) { + var mode = elem.querySelector('.mode'); + var band = elem.querySelector('.band'); + + this.setValues(band, this.bands[mode.value]); + this.toggleWifiChannel(elem); + }, + + toggleWifiChannel: function(elem) { + var band = elem.querySelector('.band'); + var chan = elem.querySelector('.channel'); + + this.setValues(chan, this.channels[band.value]); + }, + + setInitialValues: function(section_id, elem) { + var mode = elem.querySelector('.mode'), + band = elem.querySelector('.band'), + chan = elem.querySelector('.channel'), + bwdt = elem.querySelector('.htmode'), + htval = uci.get('wireless', section_id, 'htmode'), + hwval = uci.get('wireless', section_id, 'hwmode'), + chval = uci.get('wireless', section_id, 'channel'); + + this.setValues(mode, this.modes); + + if (/VHT20|VHT40|VHT80|VHT160/.test(htval)) + mode.value = 'ac'; + else if (/HT20|HT40/.test(htval)) + mode.value = 'n'; + else + mode.value = ''; + + this.toggleWifiMode(elem); + + if (/a/.test(hwval)) + band.value = '11a'; + else + band.value = '11g'; + + this.toggleWifiBand(elem); + + bwdt.value = htval; + chan.value = chval; + + return elem; + }, + + renderWidget: function(section_id, option_index, cfgvalue) { + var elem = E('div'); + + dom.content(elem, [ + E('label', { 'style': 'float:left; margin-right:3px' }, [ + _('Mode'), E('br'), + E('select', { + 'class': 'mode', + 'style': 'width:auto', + 'change': L.bind(this.toggleWifiMode, this, elem) + }) + ]), + E('label', { 'style': 'float:left; margin-right:3px' }, [ + _('Band'), E('br'), + E('select', { + 'class': 'band', + 'style': 'width:auto', + 'change': L.bind(this.toggleWifiBand, this, elem) + }) + ]), + E('label', { 'style': 'float:left; margin-right:3px' }, [ + _('Channel'), E('br'), + E('select', { + 'class': 'channel', + 'style': 'width:auto' + }) + ]), + E('label', { 'style': 'float:left; margin-right:3px' }, [ + _('Width'), E('br'), + E('select', { + 'class': 'htmode', + 'style': 'width:auto' + }) + ]), + E('br', { 'style': 'clear:left' }) + ]); + + return this.setInitialValues(section_id, elem); + }, + + cfgvalue: function(section_id) { + return [ + uci.get('wireless', section_id, 'htmode'), + uci.get('wireless', section_id, 'hwmode'), + uci.get('wireless', section_id, 'channel') + ]; + }, + + formvalue: function(section_id) { + var node = this.map.findElement('data-field', this.cbid(section_id)); + + return [ + node.querySelector('.htmode').value, + node.querySelector('.band').value, + node.querySelector('.channel').value + ]; + }, + + write: function(section_id, value) { + uci.set('wireless', section_id, 'htmode', value[0] || null); + uci.set('wireless', section_id, 'hwmode', value[1]); + uci.set('wireless', section_id, 'channel', value[2]); + } +}); + +var CBIWifiTxPowerValue = form.ListValue.extend({ + callTxPowerList: rpc.declare({ + object: 'iwinfo', + method: 'txpowerlist', + params: [ 'device' ], + expect: { results: [] } + }), + + load: function(section_id) { + return this.callTxPowerList(section_id).then(L.bind(function(pwrlist) { + this.powerval = this.wifiNetwork ? this.wifiNetwork.getTXPower() : null; + this.poweroff = this.wifiNetwork ? this.wifiNetwork.getTXPowerOffset() : null; + + this.value('', _('driver default')); + + for (var i = 0; i < pwrlist.length; i++) + this.value(pwrlist[i].dbm, '%d dBm (%d mW)'.format(pwrlist[i].dbm, pwrlist[i].mw)); + + return form.ListValue.prototype.load.apply(this, [section_id]); + }, this)); + }, + + renderWidget: function(section_id, option_index, cfgvalue) { + var widget = form.ListValue.prototype.renderWidget.apply(this, [section_id, option_index, cfgvalue]); + widget.firstElementChild.style.width = 'auto'; + + dom.append(widget, E('span', [ + ' - ', _('Current power'), ': ', + E('span', [ this.powerval != null ? '%d dBm'.format(this.powerval) : E('em', _('unknown')) ]), + this.poweroff ? ' + %d dB offset = %s dBm'.format(this.poweroff, this.powerval != null ? this.powerval + this.poweroff : '?') : '' + ])); + + return widget; + } +}); + +var CBIWifiCountryValue = form.Value.extend({ + callCountryList: rpc.declare({ + object: 'iwinfo', + method: 'countrylist', + params: [ 'device' ], + expect: { results: [] } + }), + + load: function(section_id) { + return this.callCountryList(section_id).then(L.bind(function(countrylist) { + if (Array.isArray(countrylist) && countrylist.length > 0) { + this.value('', _('driver default')); + + for (var i = 0; i < countrylist.length; i++) + this.value(countrylist[i].iso3166, '%s - %s'.format(countrylist[i].iso3166, countrylist[i].country)); + } + + return form.Value.prototype.load.apply(this, [section_id]); + }, this)); + }, + + validate: function(section_id, formvalue) { + if (formvalue != null && formvalue != '' && !/^[A-Z0-9][A-Z0-9]$/.test(formvalue)) + return _('Use ISO/IEC 3166 alpha2 country codes.'); + + return true; + }, + + renderWidget: function(section_id, option_index, cfgvalue) { + var typeClass = (this.keylist && this.keylist.length) ? form.ListValue : form.Value; + return typeClass.prototype.renderWidget.apply(this, [section_id, option_index, cfgvalue]); + } +}); + +return view.extend({ + poll_status: function(map, data) { + var rows = map.querySelectorAll('.cbi-section-table-row[data-sid]'); + + for (var i = 0; i < rows.length; i++) { + var section_id = rows[i].getAttribute('data-sid'), + radioDev = data[1].filter(function(d) { return d.getName() == section_id })[0], + radioNet = data[2].filter(function(n) { return n.getName() == section_id })[0], + badge = rows[i].querySelector('[data-name="_badge"] > div'), + stat = rows[i].querySelector('[data-name="_stat"]'), + btns = rows[i].querySelectorAll('.cbi-section-actions button'), + busy = btns[0].classList.contains('spinning') || btns[1].classList.contains('spinning') || btns[2].classList.contains('spinning'); + + if (radioDev) { + dom.content(badge, render_radio_badge(radioDev)); + dom.content(stat, render_radio_status(radioDev, data[2].filter(function(n) { return n.getWifiDeviceName() == radioDev.getName() }))); + } + else { + dom.content(badge, render_network_badge(radioNet)); + dom.content(stat, render_network_status(radioNet)); + } + + if (stat.hasAttribute('restart')) + dom.content(stat, E('em', _('Device is restarting…'))); + + btns[0].disabled = busy; + btns[1].disabled = busy; + btns[2].disabled = busy; + } + + var table = document.querySelector('#wifi_assoclist_table'), + hosts = data[0], + trows = []; + + for (var i = 0; i < data[3].length; i++) { + var bss = data[3][i], + name = hosts.getHostnameByMACAddr(bss.mac), + ipv4 = hosts.getIPAddrByMACAddr(bss.mac), + ipv6 = hosts.getIP6AddrByMACAddr(bss.mac); + + var hint; + + if (name && ipv4 && ipv6) + hint = '%s (%s, %s)'.format(name, ipv4, ipv6); + else if (name && (ipv4 || ipv6)) + hint = '%s (%s)'.format(name, ipv4 || ipv6); + else + hint = name || ipv4 || ipv6 || '?'; + + var row = [ + E('span', { + 'class': 'ifacebadge', + 'data-ifname': bss.network.getIfname(), + 'data-ssid': bss.network.getSSID() + }, [ + E('img', { + 'src': L.resource('icons/wifi%s.png').format(bss.network.isUp() ? '' : '_disabled'), + 'title': bss.radio.getI18n() + }), + E('span', [ + ' %s '.format(bss.network.getShortName()), + E('small', '(%s)'.format(bss.network.getIfname())) + ]) + ]), + bss.mac, + hint, + render_signal_badge(Math.min((bss.signal + 110) / 70 * 100, 100), bss.signal, bss.noise), + E('span', {}, [ + E('span', format_wifirate(bss.rx)), + E('br'), + E('span', format_wifirate(bss.tx)) + ]) + ]; + + if (bss.network.isClientDisconnectSupported()) { + if (table.firstElementChild.childNodes.length < 6) + table.firstElementChild.appendChild(E('div', { 'class': 'th cbi-section-actions'})); + + row.push(E('button', { + 'class': 'cbi-button cbi-button-remove', + 'click': L.bind(function(net, mac, ev) { + dom.parent(ev.currentTarget, '.tr').style.opacity = 0.5; + ev.currentTarget.classList.add('spinning'); + ev.currentTarget.disabled = true; + ev.currentTarget.blur(); + + net.disconnectClient(mac, true, 5, 60000); + }, this, bss.network, bss.mac) + }, [ _('Disconnect') ])); + } + else { + row.push('-'); + } + + trows.push(row); + } + + cbi_update_table(table, trows, E('em', _('No information available'))); + + var stat = document.querySelector('.cbi-modal [data-name="_wifistat_modal"] .ifacebadge.large'); + + if (stat) + render_modal_status(stat, data[2].filter(function(n) { return n.getName() == stat.getAttribute('data-network') })[0]); + + return network.flushCache(); + }, + + load: function() { + return Promise.all([ + uci.changes(), + uci.load('wireless') + ]); + }, + + checkAnonymousSections: function() { + var wifiIfaces = uci.sections('wireless', 'wifi-iface'); + + for (var i = 0; i < wifiIfaces.length; i++) + if (wifiIfaces[i]['.anonymous']) + return true; + + return false; + }, + + callUciRename: rpc.declare({ + object: 'uci', + method: 'rename', + params: [ 'config', 'section', 'name' ] + }), + + render: function() { + if (this.checkAnonymousSections()) + return this.renderMigration(); + else + return this.renderOverview(); + }, + + handleMigration: function(ev) { + var wifiIfaces = uci.sections('wireless', 'wifi-iface'), + id_offset = 0, + tasks = []; + + for (var i = 0; i < wifiIfaces.length; i++) { + if (!wifiIfaces[i]['.anonymous']) + continue; + + var new_name = next_free_sid(id_offset); + + tasks.push(this.callUciRename('wireless', wifiIfaces[i]['.name'], new_name)); + id_offset = +new_name.substring(7) + 1; + } + + return Promise.all(tasks) + .then(L.bind(ui.changes.init, ui.changes)) + .then(L.bind(ui.changes.apply, ui.changes)); + }, + + renderMigration: function() { + ui.showModal(_('Wireless configuration migration'), [ + E('p', _('The existing wireless configuration needs to be changed for LuCI to function properly.')), + E('p', _('Upon pressing "Continue", anonymous "wifi-iface" sections will be assigned with a name in the form wifinet# and the network will be restarted to apply the updated configuration.')), + E('div', { 'class': 'right' }, + E('button', { + 'class': 'btn cbi-button-action important', + 'click': ui.createHandlerFn(this, 'handleMigration') + }, _('Continue'))) + ]); + }, + + renderOverview: function() { + var m, s, o; + + m = new form.Map('wireless'); + m.chain('network'); + m.chain('firewall'); + + s = m.section(form.GridSection, 'wifi-device', _('Wireless Overview')); + s.anonymous = true; + s.addremove = false; + + s.load = function() { + return network.getWifiDevices().then(L.bind(function(radios) { + this.radios = radios.sort(function(a, b) { + return a.getName() > b.getName(); + }); + + var tasks = []; + + for (var i = 0; i < radios.length; i++) + tasks.push(radios[i].getWifiNetworks()); + + return Promise.all(tasks); + }, this)).then(L.bind(function(data) { + this.wifis = []; + + for (var i = 0; i < data.length; i++) + this.wifis.push.apply(this.wifis, data[i]); + }, this)); + }; + + s.cfgsections = function() { + var rv = []; + + for (var i = 0; i < this.radios.length; i++) { + rv.push(this.radios[i].getName()); + + for (var j = 0; j < this.wifis.length; j++) + if (this.wifis[j].getWifiDeviceName() == this.radios[i].getName()) + rv.push(this.wifis[j].getName()); + } + + return rv; + }; + + s.modaltitle = function(section_id) { + var radioNet = this.wifis.filter(function(w) { return w.getName() == section_id})[0]; + return radioNet ? radioNet.getI18n() : _('Edit wireless network'); + }; + + s.lookupRadioOrNetwork = function(section_id) { + var radioDev = this.radios.filter(function(r) { return r.getName() == section_id })[0]; + if (radioDev) + return radioDev; + + var radioNet = this.wifis.filter(function(w) { return w.getName() == section_id })[0]; + if (radioNet) + return radioNet; + + return null; + }; + + s.renderRowActions = function(section_id) { + var inst = this.lookupRadioOrNetwork(section_id), btns; + + if (inst.getWifiNetworks) { + btns = [ + E('button', { + 'class': 'cbi-button cbi-button-neutral', + 'title': _('Restart radio interface'), + 'click': ui.createHandlerFn(this, radio_restart, section_id) + }, _('Restart')), + E('button', { + 'class': 'cbi-button cbi-button-action important', + 'title': _('Find and join network'), + 'click': ui.createHandlerFn(this, 'handleScan', inst) + }, _('Scan')), + E('button', { + 'class': 'cbi-button cbi-button-add', + 'title': _('Provide new network'), + 'click': ui.createHandlerFn(this, 'handleAdd', inst) + }, _('Add')) + ]; + } + else { + var isDisabled = (inst.get('disabled') == '1' || + uci.get('wireless', inst.getWifiDeviceName(), 'disabled') == '1'); + + btns = [ + E('button', { + 'class': 'cbi-button cbi-button-neutral enable-disable', + 'title': isDisabled ? _('Enable this network') : _('Disable this network'), + 'click': ui.createHandlerFn(this, network_updown, section_id, this.map) + }, isDisabled ? _('Enable') : _('Disable')), + E('button', { + 'class': 'cbi-button cbi-button-action important', + 'title': _('Edit this network'), + 'click': ui.createHandlerFn(this, 'renderMoreOptionsModal', section_id) + }, _('Edit')), + E('button', { + 'class': 'cbi-button cbi-button-negative remove', + 'title': _('Delete this network'), + 'click': ui.createHandlerFn(this, 'handleRemove', section_id) + }, _('Remove')) + ]; + } + + return E('div', { 'class': 'td middle cbi-section-actions' }, E('div', btns)); + }; + + s.addModalOptions = function(s) { + return network.getWifiNetwork(s.section).then(function(radioNet) { + var hwtype = uci.get('wireless', radioNet.getWifiDeviceName(), 'type'); + var o, ss; + + o = s.option(form.SectionValue, '_device', form.NamedSection, radioNet.getWifiDeviceName(), 'wifi-device', _('Device Configuration')); + o.modalonly = true; + + ss = o.subsection; + ss.tab('general', _('General Setup')); + ss.tab('advanced', _('Advanced Settings')); + + var isDisabled = (radioNet.get('disabled') == '1' || + uci.get('wireless', radioNet.getWifiDeviceName(), 'disabled') == 1); + + o = ss.taboption('general', form.DummyValue, '_wifistat_modal', _('Status')); + o.cfgvalue = L.bind(function(radioNet) { + return render_modal_status(null, radioNet); + }, this, radioNet); + o.write = function() {}; + + o = ss.taboption('general', form.Button, '_toggle', isDisabled ? _('Wireless network is disabled') : _('Wireless network is enabled')); + o.inputstyle = isDisabled ? 'apply' : 'reset'; + o.inputtitle = isDisabled ? _('Enable') : _('Disable'); + o.onclick = ui.createHandlerFn(s, network_updown, s.section, s.map); + + o = ss.taboption('general', CBIWifiFrequencyValue, '_freq', '
    ' + _('Operating frequency')); + o.ucisection = s.section; + + if (hwtype == 'mac80211') { + o = ss.taboption('general', CBIWifiTxPowerValue, 'txpower', _('Maximum transmit power'), _('Specifies the maximum transmit power the wireless radio may use. Depending on regulatory requirements and wireless usage, the actual transmit power may be reduced by the driver.')); + o.wifiNetwork = radioNet; + + o = ss.taboption('advanced', CBIWifiCountryValue, 'country', _('Country Code')); + o.wifiNetwork = radioNet; + + o = ss.taboption('advanced', form.Flag, 'legacy_rates', _('Allow legacy 802.11b rates')); + o.default = o.enabled; + + o = ss.taboption('advanced', form.Value, 'distance', _('Distance Optimization'), _('Distance to farthest network member in meters.')); + o.datatype = 'range(0,114750)'; + o.placeholder = 'auto'; + + o = ss.taboption('advanced', form.Value, 'frag', _('Fragmentation Threshold')); + o.datatype = 'min(256)'; + o.placeholder = _('off'); + + o = ss.taboption('advanced', form.Value, 'rts', _('RTS/CTS Threshold')); + o.datatype = 'uinteger'; + o.placeholder = _('off'); + + o = ss.taboption('advanced', form.Flag, 'noscan', _('Force 40MHz mode'), _('Always use 40MHz channels even if the secondary channel overlaps. Using this option does not comply with IEEE 802.11n-2009!')); + o.rmempty = true; + + o = ss.taboption('advanced', form.Value, 'beacon_int', _('Beacon Interval')); + o.datatype = 'range(15,65535)'; + o.placeholder = 100; + o.rmempty = true; + } + + + o = s.option(form.SectionValue, '_device', form.NamedSection, radioNet.getName(), 'wifi-iface', _('Interface Configuration')); + o.modalonly = true; + + ss = o.subsection; + ss.tab('general', _('General Setup')); + ss.tab('encryption', _('Wireless Security')); + ss.tab('macfilter', _('MAC-Filter')); + ss.tab('advanced', _('Advanced Settings')); + + o = ss.taboption('general', form.ListValue, 'mode', _('Mode')); + o.value('ap', _('Access Point')); + o.value('sta', _('Client')); + o.value('adhoc', _('Ad-Hoc')); + + o = ss.taboption('general', form.Value, 'mesh_id', _('Mesh Id')); + o.depends('mode', 'mesh'); + + o = ss.taboption('advanced', form.Flag, 'mesh_fwding', _('Forward mesh peer traffic')); + o.rmempty = false; + o.default = '1'; + o.depends('mode', 'mesh'); + + o = ss.taboption('advanced', form.Value, 'mesh_rssi_threshold', _('RSSI threshold for joining'), _('0 = not using RSSI threshold, 1 = do not change driver default')); + o.rmempty = false; + o.default = '0'; + o.datatype = 'range(-255,1)'; + o.depends('mode', 'mesh'); + + o = ss.taboption('general', form.Value, 'ssid', _('ESSID')); + o.datatype = 'maxlength(32)'; + o.depends('mode', 'ap'); + o.depends('mode', 'sta'); + o.depends('mode', 'adhoc'); + o.depends('mode', 'ahdemo'); + o.depends('mode', 'monitor'); + o.depends('mode', 'ap-wds'); + o.depends('mode', 'sta-wds'); + o.depends('mode', 'wds'); + + o = ss.taboption('general', form.Value, 'bssid', _('BSSID')); + o.datatype = 'macaddr'; + + o = ss.taboption('general', widgets.NetworkSelect, 'network', _('Network'), _('Choose the network(s) you want to attach to this wireless interface or fill out the custom field to define a new network.')); + o.rmempty = true; + o.multiple = true; + o.novirtual = true; + o.write = function(section_id, value) { + return network.getDevice(section_id).then(L.bind(function(dev) { + var old_networks = dev.getNetworks().reduce(function(o, v) { o[v.getName()] = v; return o }, {}), + new_networks = {}, + values = L.toArray(value), + tasks = []; + + for (var i = 0; i < values.length; i++) { + new_networks[values[i]] = true; + + if (old_networks[values[i]]) + continue; + + tasks.push(network.getNetwork(values[i]).then(L.bind(function(name, net) { + return net || network.addNetwork(name, { proto: 'none' }); + }, this, values[i])).then(L.bind(function(dev, net) { + if (net) { + if (!net.isEmpty()) + net.set('type', 'bridge'); + net.addDevice(dev); + } + }, this, dev))); + } + + for (var name in old_networks) + if (!new_networks[name]) + tasks.push(network.getNetwork(name).then(L.bind(function(dev, net) { + if (net) + net.deleteDevice(dev); + }, this, dev))); + + return Promise.all(tasks); + }, this)); + }; + + if (hwtype == 'mac80211') { + var mode = ss.children[0], + bssid = ss.children[5], + encr; + + mode.value('mesh', '802.11s'); + mode.value('ahdemo', _('Pseudo Ad-Hoc (ahdemo)')); + mode.value('monitor', _('Monitor')); + + bssid.depends('mode', 'adhoc'); + bssid.depends('mode', 'sta'); + bssid.depends('mode', 'sta-wds'); + + o = ss.taboption('macfilter', form.ListValue, 'macfilter', _('MAC-Address Filter')); + o.depends('mode', 'ap'); + o.depends('mode', 'ap-wds'); + o.value('', _('disable')); + o.value('allow', _('Allow listed only')); + o.value('deny', _('Allow all except listed')); + + o = ss.taboption('macfilter', form.DynamicList, 'maclist', _('MAC-List')); + o.datatype = 'macaddr'; + o.depends('macfilter', 'allow'); + o.depends('macfilter', 'deny'); + o.load = function(section_id) { + return network.getHostHints().then(L.bind(function(hints) { + hints.getMACHints().map(L.bind(function(hint) { + this.value(hint[0], hint[1] ? '%s (%s)'.format(hint[0], hint[1]) : hint[0]); + }, this)); + + return form.DynamicList.prototype.load.apply(this, [section_id]); + }, this)); + }; + + mode.value('ap-wds', '%s (%s)'.format(_('Access Point'), _('WDS'))); + mode.value('sta-wds', '%s (%s)'.format(_('Client'), _('WDS'))); + + mode.write = function(section_id, value) { + switch (value) { + case 'ap-wds': + uci.set('wireless', section_id, 'mode', 'ap'); + uci.set('wireless', section_id, 'wds', '1'); + break; + + case 'sta-wds': + uci.set('wireless', section_id, 'mode', 'sta'); + uci.set('wireless', section_id, 'wds', '1'); + break; + + default: + uci.set('wireless', section_id, 'mode', value); + uci.unset('wireless', section_id, 'wds'); + break; + } + }; + + mode.cfgvalue = function(section_id) { + var mode = uci.get('wireless', section_id, 'mode'), + wds = uci.get('wireless', section_id, 'wds'); + + if (mode == 'ap' && wds) + return 'ap-wds'; + else if (mode == 'sta' && wds) + return 'sta-wds'; + + return mode; + }; + + o = ss.taboption('general', form.Flag, 'hidden', _('Hide ESSID')); + o.depends('mode', 'ap'); + o.depends('mode', 'ap-wds'); + + o = ss.taboption('general', form.Flag, 'wmm', _('WMM Mode')); + o.depends('mode', 'ap'); + o.depends('mode', 'ap-wds'); + o.default = o.enabled; + + o = ss.taboption('advanced', form.Flag, 'isolate', _('Isolate Clients'), _('Prevents client-to-client communication')); + o.depends('mode', 'ap'); + o.depends('mode', 'ap-wds'); + + o = ss.taboption('advanced', form.Value, 'ifname', _('Interface name'), _('Override default interface name')); + o.optional = true; + o.placeholder = radioNet.getIfname(); + if (/^radio\d+\.network/.test(o.placeholder)) + o.placeholder = ''; + + o = ss.taboption('advanced', form.Flag, 'short_preamble', _('Short Preamble')); + o.default = o.enabled; + + o = ss.taboption('advanced', form.Value, 'dtim_period', _('DTIM Interval'), _('Delivery Traffic Indication Message Interval')); + o.optional = true; + o.placeholder = 2; + o.datatype = 'range(1,255)'; + + o = ss.taboption('advanced', form.Value, 'wpa_group_rekey', _('Time interval for rekeying GTK'), _('sec')); + o.optional = true; + o.placeholder = 600; + o.datatype = 'uinteger'; + + o = ss.taboption('advanced', form.Flag , 'skip_inactivity_poll', _('Disable Inactivity Polling')); + o.optional = true; + o.datatype = 'uinteger'; + + o = ss.taboption('advanced', form.Value, 'max_inactivity', _('Station inactivity limit'), _('sec')); + o.optional = true; + o.placeholder = 300; + o.datatype = 'uinteger'; + + o = ss.taboption('advanced', form.Value, 'max_listen_interval', _('Maximum allowed Listen Interval')); + o.optional = true; + o.placeholder = 65535; + o.datatype = 'uinteger'; + + o = ss.taboption('advanced', form.Flag, 'disassoc_low_ack', _('Disassociate On Low Acknowledgement'), _('Allow AP mode to disconnect STAs based on low ACK condition')); + o.default = o.enabled; + } + + + encr = o = ss.taboption('encryption', form.ListValue, 'encryption', _('Encryption')); + o.depends('mode', 'ap'); + o.depends('mode', 'sta'); + o.depends('mode', 'adhoc'); + o.depends('mode', 'ahdemo'); + o.depends('mode', 'ap-wds'); + o.depends('mode', 'sta-wds'); + o.depends('mode', 'mesh'); + + o.cfgvalue = function(section_id) { + var v = String(uci.get('wireless', section_id, 'encryption')); + if (v == 'wep') + return 'wep-open'; + else if (v.match(/\+/)) + return v.replace(/\+.+$/, ''); + return v; + }; + + o.write = function(section_id, value) { + var e = this.section.children.filter(function(o) { return o.option == 'encryption' })[0].formvalue(section_id), + co = this.section.children.filter(function(o) { return o.option == 'cipher' })[0], c = co.formvalue(section_id); + + if (value == 'wpa' || value == 'wpa2' || value == 'wpa3' || value == 'wpa3-mixed') + uci.unset('wireless', section_id, 'key'); + + if (co.isActive(section_id) && e && (c == 'tkip' || c == 'ccmp' || c == 'tkip+ccmp')) + e += '+' + c; + + uci.set('wireless', section_id, 'encryption', e); + }; + + o = ss.taboption('encryption', form.ListValue, 'cipher', _('Cipher')); + o.depends('encryption', 'wpa'); + o.depends('encryption', 'wpa2'); + o.depends('encryption', 'wpa3'); + o.depends('encryption', 'wpa3-mixed'); + o.depends('encryption', 'psk'); + o.depends('encryption', 'psk2'); + o.depends('encryption', 'wpa-mixed'); + o.depends('encryption', 'psk-mixed'); + o.value('auto', _('auto')); + o.value('ccmp', _('Force CCMP (AES)')); + o.value('tkip', _('Force TKIP')); + o.value('tkip+ccmp', _('Force TKIP and CCMP (AES)')); + o.write = ss.children.filter(function(o) { return o.option == 'encryption' })[0].write; + + o.cfgvalue = function(section_id) { + var v = String(uci.get('wireless', section_id, 'encryption')); + if (v.match(/\+/)) { + v = v.replace(/^[^+]+\+/, ''); + if (v == 'aes') + v = 'ccmp'; + else if (v == 'tkip+aes' || v == 'aes+tkip' || v == 'ccmp+tkip') + v = 'tkip+ccmp'; + } + return v; + }; + + + var crypto_modes = []; + + if (hwtype == 'mac80211') { + var has_supplicant = L.hasSystemFeature('wpasupplicant'), + has_hostapd = L.hasSystemFeature('hostapd'); + + // Probe EAP support + var has_ap_eap = L.hasSystemFeature('hostapd', 'eap'), + has_sta_eap = L.hasSystemFeature('wpasupplicant', 'eap'); + + // Probe SAE support + var has_ap_sae = L.hasSystemFeature('hostapd', 'sae'), + has_sta_sae = L.hasSystemFeature('wpasupplicant', 'sae'); + + // Probe OWE support + var has_ap_owe = L.hasSystemFeature('hostapd', 'owe'), + has_sta_owe = L.hasSystemFeature('wpasupplicant', 'owe'); + + // Probe Suite-B support + var has_ap_eap192 = L.hasSystemFeature('hostapd', 'suiteb192'), + has_sta_eap192 = L.hasSystemFeature('wpasupplicant', 'suiteb192'); + + + if (has_hostapd || has_supplicant) { + crypto_modes.push(['psk2', 'WPA2-PSK', 35]); + crypto_modes.push(['psk-mixed', 'WPA-PSK/WPA2-PSK Mixed Mode', 22]); + crypto_modes.push(['psk', 'WPA-PSK', 21]); + } + else { + encr.description = _('WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP and ad-hoc mode) to be installed.'); + } + + if (has_ap_sae || has_sta_sae) { + crypto_modes.push(['sae', 'WPA3-SAE', 31]); + crypto_modes.push(['sae-mixed', 'WPA2-PSK/WPA3-SAE Mixed Mode', 30]); + } + + if (has_ap_eap || has_sta_eap) { + if (has_ap_eap192 || has_sta_eap192) { + crypto_modes.push(['wpa3', 'WPA3-EAP', 33]); + crypto_modes.push(['wpa3-mixed', 'WPA2-EAP/WPA3-EAP Mixed Mode', 32]); + } + + crypto_modes.push(['wpa2', 'WPA2-EAP', 34]); + crypto_modes.push(['wpa', 'WPA-EAP', 20]); + } + + if (has_ap_owe || has_sta_owe) { + crypto_modes.push(['owe', 'OWE', 1]); + } + + encr.crypto_support = { + 'ap': { + 'wep-open': true, + 'wep-shared': true, + 'psk': has_hostapd || _('Requires hostapd'), + 'psk2': has_hostapd || _('Requires hostapd'), + 'psk-mixed': has_hostapd || _('Requires hostapd'), + 'sae': has_ap_sae || _('Requires hostapd with SAE support'), + 'sae-mixed': has_ap_sae || _('Requires hostapd with SAE support'), + 'wpa': has_ap_eap || _('Requires hostapd with EAP support'), + 'wpa2': has_ap_eap || _('Requires hostapd with EAP support'), + 'wpa3': has_ap_eap192 || _('Requires hostapd with EAP Suite-B support'), + 'wpa3-mixed': has_ap_eap192 || _('Requires hostapd with EAP Suite-B support'), + 'owe': has_ap_owe || _('Requires hostapd with OWE support') + }, + 'sta': { + 'wep-open': true, + 'wep-shared': true, + 'psk': has_supplicant || _('Requires wpa-supplicant'), + 'psk2': has_supplicant || _('Requires wpa-supplicant'), + 'psk-mixed': has_supplicant || _('Requires wpa-supplicant'), + 'sae': has_sta_sae || _('Requires wpa-supplicant with SAE support'), + 'sae-mixed': has_sta_sae || _('Requires wpa-supplicant with SAE support'), + 'wpa': has_sta_eap || _('Requires wpa-supplicant with EAP support'), + 'wpa2': has_sta_eap || _('Requires wpa-supplicant with EAP support'), + 'wpa3': has_sta_eap192 || _('Requires wpa-supplicant with EAP Suite-B support'), + 'wpa3-mixed': has_sta_eap192 || _('Requires wpa-supplicant with EAP Suite-B support'), + 'owe': has_sta_owe || _('Requires wpa-supplicant with OWE support') + }, + 'adhoc': { + 'wep-open': true, + 'wep-shared': true, + 'psk': has_supplicant || _('Requires wpa-supplicant'), + 'psk2': has_supplicant || _('Requires wpa-supplicant'), + 'psk-mixed': has_supplicant || _('Requires wpa-supplicant'), + }, + 'mesh': { + 'sae': has_sta_sae || _('Requires wpa-supplicant with SAE support') + }, + 'ahdemo': { + 'wep-open': true, + 'wep-shared': true + }, + 'wds': { + 'wep-open': true, + 'wep-shared': true + } + }; + + encr.crypto_support['ap-wds'] = encr.crypto_support['ap']; + encr.crypto_support['sta-wds'] = encr.crypto_support['sta']; + + encr.validate = function(section_id, value) { + var modeopt = this.section.children.filter(function(o) { return o.option == 'mode' })[0], + modeval = modeopt.formvalue(section_id), + modetitle = modeopt.vallist[modeopt.keylist.indexOf(modeval)], + enctitle = this.vallist[this.keylist.indexOf(value)]; + + if (value == 'none') + return true; + + if (!L.isObject(this.crypto_support[modeval]) || !this.crypto_support[modeval].hasOwnProperty(value)) + return _('The selected %s mode is incompatible with %s encryption').format(modetitle, enctitle); + + return this.crypto_support[modeval][value]; + }; + } + else if (hwtype == 'broadcom') { + crypto_modes.push(['psk2', 'WPA2-PSK', 33]); + crypto_modes.push(['psk+psk2', 'WPA-PSK/WPA2-PSK Mixed Mode', 22]); + crypto_modes.push(['psk', 'WPA-PSK', 21]); + } + + crypto_modes.push(['wep-open', _('WEP Open System'), 11]); + crypto_modes.push(['wep-shared', _('WEP Shared Key'), 10]); + crypto_modes.push(['none', _('No Encryption'), 0]); + + crypto_modes.sort(function(a, b) { return b[2] - a[2] }); + + for (var i = 0; i < crypto_modes.length; i++) { + var security_level = (crypto_modes[i][2] >= 30) ? _('strong security') + : (crypto_modes[i][2] >= 20) ? _('medium security') + : (crypto_modes[i][2] >= 10) ? _('weak security') : _('open network'); + + encr.value(crypto_modes[i][0], '%s (%s)'.format(crypto_modes[i][1], security_level)); + } + + + o = ss.taboption('encryption', form.Value, 'auth_server', _('Radius-Authentication-Server')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o.rmempty = true; + o.datatype = 'host(0)'; + + o = ss.taboption('encryption', form.Value, 'auth_port', _('Radius-Authentication-Port'), _('Default %d').format(1812)); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o.rmempty = true; + o.datatype = 'port'; + + o = ss.taboption('encryption', form.Value, 'auth_secret', _('Radius-Authentication-Secret')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o.rmempty = true; + o.password = true; + + o = ss.taboption('encryption', form.Value, 'acct_server', _('Radius-Accounting-Server')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o.rmempty = true; + o.datatype = 'host(0)'; + + o = ss.taboption('encryption', form.Value, 'acct_port', _('Radius-Accounting-Port'), _('Default %d').format(1813)); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o.rmempty = true; + o.datatype = 'port'; + + o = ss.taboption('encryption', form.Value, 'acct_secret', _('Radius-Accounting-Secret')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o.rmempty = true; + o.password = true; + + o = ss.taboption('encryption', form.Value, 'dae_client', _('DAE-Client')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o.rmempty = true; + o.datatype = 'host(0)'; + + o = ss.taboption('encryption', form.Value, 'dae_port', _('DAE-Port'), _('Default %d').format(3799)); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o.rmempty = true; + o.datatype = 'port'; + + o = ss.taboption('encryption', form.Value, 'dae_secret', _('DAE-Secret')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o.rmempty = true; + o.password = true; + + + o = ss.taboption('encryption', form.Value, '_wpa_key', _('Key')); + o.depends('encryption', 'psk'); + o.depends('encryption', 'psk2'); + o.depends('encryption', 'psk+psk2'); + o.depends('encryption', 'psk-mixed'); + o.depends('encryption', 'sae'); + o.depends('encryption', 'sae-mixed'); + o.datatype = 'wpakey'; + o.rmempty = true; + o.password = true; + + o.cfgvalue = function(section_id) { + var key = uci.get('wireless', section_id, 'key'); + return /^[1234]$/.test(key) ? null : key; + }; + + o.write = function(section_id, value) { + uci.set('wireless', section_id, 'key', value); + uci.unset('wireless', section_id, 'key1'); + uci.unset('wireless', section_id, 'key2'); + uci.unset('wireless', section_id, 'key3'); + uci.unset('wireless', section_id, 'key4'); + }; + + + o = ss.taboption('encryption', form.ListValue, '_wep_key', _('Used Key Slot')); + o.depends('encryption', 'wep-open'); + o.depends('encryption', 'wep-shared'); + o.value('1', _('Key #%d').format(1)); + o.value('2', _('Key #%d').format(2)); + o.value('3', _('Key #%d').format(3)); + o.value('4', _('Key #%d').format(4)); + + o.cfgvalue = function(section_id) { + var slot = +uci.get('wireless', section_id, 'key'); + return (slot >= 1 && slot <= 4) ? String(slot) : ''; + }; + + o.write = function(section_id, value) { + uci.set('wireless', section_id, 'key', value); + }; + + for (var slot = 1; slot <= 4; slot++) { + o = ss.taboption('encryption', form.Value, 'key%d'.format(slot), _('Key #%d').format(slot)); + o.depends('encryption', 'wep-open'); + o.depends('encryption', 'wep-shared'); + o.datatype = 'wepkey'; + o.rmempty = true; + o.password = true; + + o.write = function(section_id, value) { + if (value != null && (value.length == 5 || value.length == 13)) + value = 's:%s'.format(value); + uci.set('wireless', section_id, this.option, value); + }; + } + + + if (hwtype == 'mac80211') { + // Probe 802.11r support (and EAP support as a proxy for Openwrt) + var has_80211r = L.hasSystemFeature('hostapd', '11r') || L.hasSystemFeature('hostapd', 'eap'); + + o = ss.taboption('encryption', form.Flag, 'ieee80211r', _('802.11r Fast Transition'), _('Enables fast roaming among access points that belong to the same Mobility Domain')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + if (has_80211r) + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk-mixed', 'sae', 'sae-mixed'] }); + o.rmempty = true; + + o = ss.taboption('encryption', form.Value, 'nasid', _('NAS ID'), _('Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not needed with normal WPA(2)-PSK.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o.depends({ ieee80211r: '1' }); + o.rmempty = true; + + o = ss.taboption('encryption', form.Value, 'mobility_domain', _('Mobility Domain'), _('4-character hexadecimal ID')); + o.depends({ ieee80211r: '1' }); + o.placeholder = '4f57'; + o.datatype = 'and(hexstring,length(4))'; + o.rmempty = true; + + o = ss.taboption('encryption', form.Value, 'reassociation_deadline', _('Reassociation Deadline'), _('time units (TUs / 1.024 ms) [1000-65535]')); + o.depends({ ieee80211r: '1' }); + o.placeholder = '1000'; + o.datatype = 'range(1000,65535)'; + o.rmempty = true; + + o = ss.taboption('encryption', form.ListValue, 'ft_over_ds', _('FT protocol')); + o.depends({ ieee80211r: '1' }); + o.value('1', _('FT over DS')); + o.value('0', _('FT over the Air')); + o.rmempty = true; + + o = ss.taboption('encryption', form.Flag, 'ft_psk_generate_local', _('Generate PMK locally'), _('When using a PSK, the PMK can be automatically generated. When enabled, the R0/R1 key options below are not applied. Disable this to use the R0 and R1 key options.')); + o.depends({ ieee80211r: '1' }); + o.default = o.enabled; + o.rmempty = false; + + o = ss.taboption('encryption', form.Value, 'r0_key_lifetime', _('R0 Key Lifetime'), _('minutes')); + o.depends({ ieee80211r: '1' }); + o.placeholder = '10000'; + o.datatype = 'uinteger'; + o.rmempty = true; + + o = ss.taboption('encryption', form.Value, 'r1_key_holder', _('R1 Key Holder'), _('6-octet identifier as a hex string - no colons')); + o.depends({ ieee80211r: '1' }); + o.placeholder = '00004f577274'; + o.datatype = 'and(hexstring,length(12))'; + o.rmempty = true; + + o = ss.taboption('encryption', form.Flag, 'pmk_r1_push', _('PMK R1 Push')); + o.depends({ ieee80211r: '1' }); + o.placeholder = '0'; + o.rmempty = true; + + o = ss.taboption('encryption', form.DynamicList, 'r0kh', _('External R0 Key Holder List'), _('List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID (NAS Identifier) to a destination MAC address when requesting PMK-R1 key from the R0KH that the STA used during the Initial Mobility Domain Association.')); + o.depends({ ieee80211r: '1' }); + o.rmempty = true; + + o = ss.taboption('encryption', form.DynamicList, 'r1kh', _('External R1 Key Holder List'), _ ('List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID as 6 octets with colons,128-bit key as hex string.
    This list is used to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the R0KH. This is also the list of authorized R1KHs in the MD that can request PMK-R1 keys.')); + o.depends({ ieee80211r: '1' }); + o.rmempty = true; + // End of 802.11r options + + o = ss.taboption('encryption', form.ListValue, 'eap_type', _('EAP-Method')); + o.value('tls', 'TLS'); + o.value('ttls', 'TTLS'); + o.value('peap', 'PEAP'); + o.value('fast', 'FAST'); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + + o = ss.taboption('encryption', form.Flag, 'ca_cert_usesystem', _('Use system certificates'), _("Validate server certificate using built-in system CA bundle,
    requires the \"ca-bundle\" package")); + o.enabled = '1'; + o.disabled = '0'; + o.default = o.disabled; + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o.validate = function(section_id, value) { + if (value == '1' && !L.hasSystemFeature('cabundle')) { + return _("This option cannot be used because the ca-bundle package is not installed."); + } + return true; + }; + + o = ss.taboption('encryption', form.FileUpload, 'ca_cert', _('Path to CA-Certificate')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], ca_cert_usesystem: ['0'] }); + + o = ss.taboption('encryption', form.Value, 'subject_match', _('Certificate constraint (Subject)'), _("Certificate constraint substring - e.g. /CN=wifi.mycompany.com
    See `logread -f` during handshake for actual values")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + + o = ss.taboption('encryption', form.DynamicList, 'altsubject_match', _('Certificate constraint (SAN)'), _("Certificate constraint(s) via Subject Alternate Name values
    (supported attributes: EMAIL, DNS, URI) - e.g. DNS:wifi.mycompany.com")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + + o = ss.taboption('encryption', form.DynamicList, 'domain_match', _('Certificate constraint (Domain)'), _("Certificate constraint(s) against DNS SAN values (if available)
    or Subject CN (exact match)")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + + o = ss.taboption('encryption', form.DynamicList, 'domain_suffix_match', _('Certificate constraint (Wildcard)'), _("Certificate constraint(s) against DNS SAN values (if available)
    or Subject CN (suffix match)")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + + o = ss.taboption('encryption', form.FileUpload, 'client_cert', _('Path to Client-Certificate')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['tls'] }); + + o = ss.taboption('encryption', form.FileUpload, 'priv_key', _('Path to Private Key')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['tls'] }); + + o = ss.taboption('encryption', form.Value, 'priv_key_pwd', _('Password of Private Key')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['tls'] }); + o.password = true; + + o = ss.taboption('encryption', form.ListValue, 'auth', _('Authentication')); + o.value('PAP', 'PAP'); + o.value('CHAP', 'CHAP'); + o.value('MSCHAP', 'MSCHAP'); + o.value('MSCHAPV2', 'MSCHAPv2'); + o.value('EAP-GTC', 'EAP-GTC'); + o.value('EAP-MD5', 'EAP-MD5'); + o.value('EAP-MSCHAPV2', 'EAP-MSCHAPv2'); + o.value('EAP-TLS', 'EAP-TLS'); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['fast', 'peap', 'ttls'] }); + + o.validate = function(section_id, value) { + var eo = this.section.children.filter(function(o) { return o.option == 'eap_type' })[0], + ev = eo.formvalue(section_id); + + if (ev != 'ttls' && (value == 'PAP' || value == 'CHAP' || value == 'MSCHAP' || value == 'MSCHAPV2')) + return _('This authentication type is not applicable to the selected EAP method.'); + + return true; + }; + + o = ss.taboption('encryption', form.Flag, 'ca_cert2_usesystem', _('Use system certificates for inner-tunnel'), _("Validate server certificate using built-in system CA bundle,
    requires the \"ca-bundle\" package")); + o.enabled = '1'; + o.disabled = '0'; + o.default = o.disabled; + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + o.validate = function(section_id, value) { + if (value == '1' && !L.hasSystemFeature('cabundle')) { + return _("This option cannot be used because the ca-bundle package is not installed."); + } + return true; + }; + + o = ss.taboption('encryption', form.FileUpload, 'ca_cert2', _('Path to inner CA-Certificate')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'], ca_cert2_usesystem: ['0'] }); + + o = ss.taboption('encryption', form.Value, 'subject_match2', _('Inner certificate constraint (Subject)'), _("Certificate constraint substring - e.g. /CN=wifi.mycompany.com
    See `logread -f` during handshake for actual values")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + + o = ss.taboption('encryption', form.DynamicList, 'altsubject_match2', _('Inner certificate constraint (SAN)'), _("Certificate constraint(s) via Subject Alternate Name values
    (supported attributes: EMAIL, DNS, URI) - e.g. DNS:wifi.mycompany.com")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + + o = ss.taboption('encryption', form.DynamicList, 'domain_match2', _('Inner certificate constraint (Domain)'), _("Certificate constraint(s) against DNS SAN values (if available)
    or Subject CN (exact match)")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + + o = ss.taboption('encryption', form.DynamicList, 'domain_suffix_match2', _('Inner certificate constraint (Wildcard)'), _("Certificate constraint(s) against DNS SAN values (if available)
    or Subject CN (suffix match)")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + + o = ss.taboption('encryption', form.FileUpload, 'client_cert2', _('Path to inner Client-Certificate')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + + o = ss.taboption('encryption', form.FileUpload, 'priv_key2', _('Path to inner Private Key')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + + o = ss.taboption('encryption', form.Value, 'priv_key2_pwd', _('Password of inner Private Key')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + o.password = true; + + o = ss.taboption('encryption', form.Value, 'identity', _('Identity')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['fast', 'peap', 'tls', 'ttls'] }); + + o = ss.taboption('encryption', form.Value, 'anonymous_identity', _('Anonymous Identity')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['fast', 'peap', 'tls', 'ttls'] }); + + o = ss.taboption('encryption', form.Value, 'password', _('Password')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['fast', 'peap', 'ttls'] }); + o.password = true; + + + if (hwtype == 'mac80211') { + // ieee802.11w options + if (L.hasSystemFeature('hostapd', '11w')) { + o = ss.taboption('encryption', form.ListValue, 'ieee80211w', _('802.11w Management Frame Protection'), _("Requires the 'full' version of wpad/hostapd and support from the wifi driver
    (as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)")); + o.value('', _('Disabled')); + o.value('1', _('Optional')); + o.value('2', _('Required')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds', 'sta', 'sta-wds'], encryption: ['owe', 'psk2', 'psk-mixed', 'sae', 'sae-mixed', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + + o.defaults = { + '2': [{ encryption: 'sae' }, { encryption: 'owe' }, { encryption: 'wpa3' }, { encryption: 'wpa3-mixed' }], + '1': [{ encryption: 'sae-mixed'}], + '': [] + }; + + o = ss.taboption('encryption', form.Value, 'ieee80211w_max_timeout', _('802.11w maximum timeout'), _('802.11w Association SA Query maximum timeout')); + o.depends('ieee80211w', '1'); + o.depends('ieee80211w', '2'); + o.datatype = 'uinteger'; + o.placeholder = '1000'; + o.rmempty = true; + + o = ss.taboption('encryption', form.Value, 'ieee80211w_retry_timeout', _('802.11w retry timeout'), _('802.11w Association SA Query retry timeout')); + o.depends('ieee80211w', '1'); + o.depends('ieee80211w', '2'); + o.datatype = 'uinteger'; + o.placeholder = '201'; + o.rmempty = true; + }; + + o = ss.taboption('encryption', form.Flag, 'wpa_disable_eapol_key_retries', _('Enable key reinstallation (KRACK) countermeasures'), _('Complicates key reinstallation attacks on the client side by disabling retransmission of EAPOL-Key frames that are used to install keys. This workaround might cause interoperability issues and reduced robustness of key negotiation especially in environments with heavy traffic load.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk2', 'psk-mixed', 'sae', 'sae-mixed', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + + if (L.hasSystemFeature('hostapd', 'cli') && L.hasSystemFeature('wpasupplicant')) { + o = ss.taboption('encryption', form.Flag, 'wps_pushbutton', _('Enable WPS pushbutton, requires WPA(2)-PSK/WPA3-SAE')) + o.enabled = '1'; + o.disabled = '0'; + o.default = o.disabled; + o.depends('encryption', 'psk'); + o.depends('encryption', 'psk2'); + o.depends('encryption', 'psk-mixed'); + o.depends('encryption', 'sae'); + o.depends('encryption', 'sae-mixed'); + } + } + } + }); + }; + + s.handleRemove = function(section_id, ev) { + document.querySelector('.cbi-section-table-row[data-sid="%s"]'.format(section_id)).style.opacity = 0.5; + return form.TypedSection.prototype.handleRemove.apply(this, [section_id, ev]); + }; + + s.handleScan = function(radioDev, ev) { + var table = E('div', { 'class': 'table' }, [ + E('div', { 'class': 'tr table-titles' }, [ + E('div', { 'class': 'th col-2 middle center' }, _('Signal')), + E('div', { 'class': 'th col-4 middle left' }, _('SSID')), + E('div', { 'class': 'th col-2 middle center hide-xs' }, _('Channel')), + E('div', { 'class': 'th col-2 middle left hide-xs' }, _('Mode')), + E('div', { 'class': 'th col-3 middle left hide-xs' }, _('BSSID')), + E('div', { 'class': 'th col-3 middle left' }, _('Encryption')), + E('div', { 'class': 'th cbi-section-actions right' }, ' '), + ]) + ]); + + var stop = E('button', { + 'class': 'btn', + 'click': L.bind(this.handleScanStartStop, this), + 'style': 'display:none', + 'data-state': 'stop' + }, _('Stop refresh')); + + cbi_update_table(table, [], E('em', { class: 'spinning' }, _('Starting wireless scan...'))); + + var md = ui.showModal(_('Join Network: Wireless Scan'), [ + table, + E('div', { 'class': 'right' }, [ + stop, + ' ', + E('button', { + 'class': 'btn', + 'click': L.bind(this.handleScanAbort, this) + }, _('Dismiss')) + ]) + ]); + + md.style.maxWidth = '90%'; + md.style.maxHeight = 'none'; + + this.pollFn = L.bind(this.handleScanRefresh, this, radioDev, {}, table, stop); + + poll.add(this.pollFn); + poll.start(); + }; + + s.handleScanRefresh = function(radioDev, scanCache, table, stop) { + return radioDev.getScanList().then(L.bind(function(results) { + var rows = []; + + for (var i = 0; i < results.length; i++) + scanCache[results[i].bssid] = results[i]; + + for (var k in scanCache) + if (scanCache[k].stale) + results.push(scanCache[k]); + + results.sort(function(a, b) { + var diff = (b.quality - a.quality) || (a.channel - b.channel); + + if (diff) + return diff; + + if (a.ssid < b.ssid) + return -1; + else if (a.ssid > b.ssid) + return 1; + + if (a.bssid < b.bssid) + return -1; + else if (a.bssid > b.bssid) + return 1; + }); + + for (var i = 0; i < results.length; i++) { + var res = results[i], + qv = res.quality || 0, + qm = res.quality_max || 0, + q = (qv > 0 && qm > 0) ? Math.floor((100 / qm) * qv) : 0, + s = res.stale ? 'opacity:0.5' : ''; + + rows.push([ + E('span', { 'style': s }, render_signal_badge(q, res.signal, res.noise)), + E('span', { 'style': s }, (res.ssid != null) ? '%h'.format(res.ssid) : E('em', _('hidden'))), + E('span', { 'style': s }, '%d'.format(res.channel)), + E('span', { 'style': s }, '%h'.format(res.mode)), + E('span', { 'style': s }, '%h'.format(res.bssid)), + E('span', { 'style': s }, '%h'.format(network.formatWifiEncryption(res.encryption))), + E('div', { 'class': 'right' }, E('button', { + 'class': 'cbi-button cbi-button-action important', + 'click': L.bind(this.handleJoin, this, radioDev, res) + }, _('Join Network'))) + ]); + + res.stale = true; + } + + cbi_update_table(table, rows); + + stop.disabled = false; + stop.style.display = ''; + stop.classList.remove('spinning'); + }, this)); + }; + + s.handleScanStartStop = function(ev) { + var btn = ev.currentTarget; + + if (btn.getAttribute('data-state') == 'stop') { + poll.remove(this.pollFn); + btn.firstChild.data = _('Start refresh'); + btn.setAttribute('data-state', 'start'); + } + else { + poll.add(this.pollFn); + btn.firstChild.data = _('Stop refresh'); + btn.setAttribute('data-state', 'stop'); + btn.classList.add('spinning'); + btn.disabled = true; + } + }; + + s.handleScanAbort = function(ev) { + var md = dom.parent(ev.target, 'div[aria-modal="true"]'); + if (md) { + md.style.maxWidth = ''; + md.style.maxHeight = ''; + } + + ui.hideModal(); + poll.remove(this.pollFn); + + this.pollFn = null; + }; + + s.handleJoinConfirm = function(radioDev, bss, form, ev) { + var nameopt = L.toArray(form.lookupOption('name', '_new_'))[0], + passopt = L.toArray(form.lookupOption('password', '_new_'))[0], + bssidopt = L.toArray(form.lookupOption('bssid', '_new_'))[0], + zoneopt = L.toArray(form.lookupOption('zone', '_new_'))[0], + replopt = L.toArray(form.lookupOption('replace', '_new_'))[0], + nameval = (nameopt && nameopt.isValid('_new_')) ? nameopt.formvalue('_new_') : null, + passval = (passopt && passopt.isValid('_new_')) ? passopt.formvalue('_new_') : null, + bssidval = (bssidopt && bssidopt.isValid('_new_')) ? bssidopt.formvalue('_new_') : null, + zoneval = zoneopt ? zoneopt.formvalue('_new_') : null, + enc = L.isObject(bss.encryption) ? bss.encryption : null, + is_wep = (enc && Array.isArray(enc.wep)), + is_psk = (enc && Array.isArray(enc.wpa) && L.toArray(enc.authentication).filter(function(a) { return a == 'psk' })), + is_sae = (enc && Array.isArray(enc.wpa) && L.toArray(enc.authentication).filter(function(a) { return a == 'sae' })); + + if (nameval == null || (passopt && passval == null)) + return; + + var section_id = null; + + return this.map.save(function() { + var wifi_sections = uci.sections('wireless', 'wifi-iface'); + + if (replopt.formvalue('_new_') == '1') { + for (var i = 0; i < wifi_sections.length; i++) + if (wifi_sections[i].device == radioDev.getName()) + uci.remove('wireless', wifi_sections[i]['.name']); + } + + if (uci.get('wireless', radioDev.getName(), 'disabled') == '1') { + for (var i = 0; i < wifi_sections.length; i++) + if (wifi_sections[i].device == radioDev.getName()) + uci.set('wireless', wifi_sections[i]['.name'], 'disabled', '1'); + + uci.unset('wireless', radioDev.getName(), 'disabled'); + } + + section_id = next_free_sid(wifi_sections.length); + + uci.add('wireless', 'wifi-iface', section_id); + uci.set('wireless', section_id, 'device', radioDev.getName()); + uci.set('wireless', section_id, 'mode', (bss.mode == 'Ad-Hoc') ? 'adhoc' : 'sta'); + uci.set('wireless', section_id, 'network', nameval); + + if (bss.ssid != null) { + uci.set('wireless', section_id, 'ssid', bss.ssid); + + if (bssidval == '1') + uci.set('wireless', section_id, 'bssid', bss.bssid); + } + else if (bss.bssid != null) { + uci.set('wireless', section_id, 'bssid', bss.bssid); + } + + if (is_sae) { + uci.set('wireless', section_id, 'encryption', 'sae'); + uci.set('wireless', section_id, 'key', passval); + } + else if (is_psk) { + for (var i = enc.wpa.length - 1; i >= 0; i--) { + if (enc.wpa[i] == 2) { + uci.set('wireless', section_id, 'encryption', 'psk2'); + break; + } + else if (enc.wpa[i] == 1) { + uci.set('wireless', section_id, 'encryption', 'psk'); + break; + } + } + + uci.set('wireless', section_id, 'key', passval); + } + else if (is_wep) { + uci.set('wireless', section_id, 'encryption', 'wep-open'); + uci.set('wireless', section_id, 'key', '1'); + uci.set('wireless', section_id, 'key1', passval); + } + else { + uci.set('wireless', section_id, 'encryption', 'none'); + } + + return network.addNetwork(nameval, { proto: 'dhcp' }).then(function(net) { + firewall.deleteNetwork(net.getName()); + + var zonePromise = zoneval + ? firewall.getZone(zoneval).then(function(zone) { return zone || firewall.addZone(zoneval) }) + : Promise.resolve(); + + return zonePromise.then(function(zone) { + if (zone) + zone.addNetwork(net.getName()); + }); + }); + }).then(L.bind(function() { + return this.renderMoreOptionsModal(section_id); + }, this)); + }; + + s.handleJoin = function(radioDev, bss, ev) { + this.handleScanAbort(ev); + + var m2 = new form.Map('wireless'), + s2 = m2.section(form.NamedSection, '_new_'), + enc = L.isObject(bss.encryption) ? bss.encryption : null, + is_wep = (enc && Array.isArray(enc.wep)), + is_psk = (enc && Array.isArray(enc.wpa) && L.toArray(enc.authentication).filter(function(a) { return a == 'psk' || a == 'sae' })), + replace, passphrase, name, bssid, zone; + + var nameUsed = function(name) { + var s = uci.get('network', name); + if (s != null && s['.type'] != 'interface') + return true; + + var net = (s != null) ? network.instantiateNetwork(name) : null; + return (net != null && !net.isEmpty()); + }; + + s2.render = function() { + return Promise.all([ + {}, + this.renderUCISection('_new_') + ]).then(this.renderContents.bind(this)); + }; + + replace = s2.option(form.Flag, 'replace', _('Replace wireless configuration'), _('Check this option to delete the existing networks from this radio.')); + + name = s2.option(form.Value, 'name', _('Name of the new network'), _('The allowed characters are: A-Z, a-z, 0-9 and _')); + name.datatype = 'uciname'; + name.default = 'wwan'; + name.rmempty = false; + name.validate = function(section_id, value) { + if (nameUsed(value)) + return _('The network name is already used'); + + return true; + }; + + for (var i = 2; nameUsed(name.default); i++) + name.default = 'wwan%d'.format(i); + + if (is_wep || is_psk) { + passphrase = s2.option(form.Value, 'password', is_wep ? _('WEP passphrase') : _('WPA passphrase'), _('Specify the secret encryption key here.')); + passphrase.datatype = is_wep ? 'wepkey' : 'wpakey'; + passphrase.password = true; + passphrase.rmempty = false; + } + + if (bss.ssid != null) { + bssid = s2.option(form.Flag, 'bssid', _('Lock to BSSID'), _('Instead of joining any network with a matching SSID, only connect to the BSSID %h.').format(bss.bssid)); + bssid.default = '0'; + } + + zone = s2.option(widgets.ZoneSelect, 'zone', _('Create / Assign firewall-zone'), _('Choose the firewall zone you want to assign to this interface. Select unspecified to remove the interface from the associated zone or fill out the custom field to define a new zone and attach the interface to it.')); + zone.default = 'wan'; + + return m2.render().then(L.bind(function(nodes) { + ui.showModal(_('Joining Network: %q').replace(/%q/, '"%h"'.format(bss.ssid)), [ + nodes, + E('div', { 'class': 'right' }, [ + E('button', { + 'class': 'btn', + 'click': ui.hideModal + }, _('Cancel')), ' ', + E('button', { + 'class': 'cbi-button cbi-button-positive important', + 'click': ui.createHandlerFn(this, 'handleJoinConfirm', radioDev, bss, m2) + }, _('Submit')) + ]) + ], 'cbi-modal').querySelector('[id="%s"] input[class][type]'.format((passphrase || name).cbid('_new_'))).focus(); + }, this)); + }; + + s.handleAdd = function(radioDev, ev) { + var section_id = next_free_sid(uci.sections('wireless', 'wifi-iface').length); + + uci.unset('wireless', radioDev.getName(), 'disabled'); + + uci.add('wireless', 'wifi-iface', section_id); + uci.set('wireless', section_id, 'device', radioDev.getName()); + uci.set('wireless', section_id, 'mode', 'ap'); + uci.set('wireless', section_id, 'ssid', 'OpenWrt'); + uci.set('wireless', section_id, 'encryption', 'none'); + + this.addedSection = section_id; + return this.renderMoreOptionsModal(section_id); + }; + + o = s.option(form.DummyValue, '_badge'); + o.modalonly = false; + o.textvalue = function(section_id) { + var inst = this.section.lookupRadioOrNetwork(section_id), + node = E('div', { 'class': 'center' }); + + if (inst.getWifiNetworks) + node.appendChild(render_radio_badge(inst)); + else + node.appendChild(render_network_badge(inst)); + + return node; + }; + + o = s.option(form.DummyValue, '_stat'); + o.modalonly = false; + o.textvalue = function(section_id) { + var inst = this.section.lookupRadioOrNetwork(section_id); + + if (inst.getWifiNetworks) + return render_radio_status(inst, this.section.wifis.filter(function(e) { + return (e.getWifiDeviceName() == inst.getName()); + })); + else + return render_network_status(inst); + }; + + return m.render().then(L.bind(function(m, nodes) { + poll.add(L.bind(function() { + var section_ids = m.children[0].cfgsections(), + tasks = [ network.getHostHints(), network.getWifiDevices() ]; + + for (var i = 0; i < section_ids.length; i++) { + var row = nodes.querySelector('.cbi-section-table-row[data-sid="%s"]'.format(section_ids[i])), + dsc = row.querySelector('[data-name="_stat"] > div'), + btns = row.querySelectorAll('.cbi-section-actions button'); + + if (dsc.getAttribute('restart') == '') { + dsc.setAttribute('restart', '1'); + tasks.push(fs.exec('/sbin/wifi', ['up', section_ids[i]]).catch(function(e) { + ui.addNotification(null, E('p', e.message)); + })); + } + else if (dsc.getAttribute('restart') == '1') { + dsc.removeAttribute('restart'); + btns[0].classList.remove('spinning'); + btns[0].disabled = false; + } + } + + return Promise.all(tasks) + .then(L.bind(function(hosts_radios) { + var tasks = []; + + for (var i = 0; i < hosts_radios[1].length; i++) + tasks.push(hosts_radios[1][i].getWifiNetworks()); + + return Promise.all(tasks).then(function(data) { + hosts_radios[2] = []; + + for (var i = 0; i < data.length; i++) + hosts_radios[2].push.apply(hosts_radios[2], data[i]); + + return hosts_radios; + }); + }, network)) + .then(L.bind(function(hosts_radios_wifis) { + var tasks = []; + + for (var i = 0; i < hosts_radios_wifis[2].length; i++) + tasks.push(hosts_radios_wifis[2][i].getAssocList()); + + return Promise.all(tasks).then(function(data) { + hosts_radios_wifis[3] = []; + + for (var i = 0; i < data.length; i++) { + var wifiNetwork = hosts_radios_wifis[2][i], + radioDev = hosts_radios_wifis[1].filter(function(d) { return d.getName() == wifiNetwork.getWifiDeviceName() })[0]; + + for (var j = 0; j < data[i].length; j++) + hosts_radios_wifis[3].push(Object.assign({ radio: radioDev, network: wifiNetwork }, data[i][j])); + } + + return hosts_radios_wifis; + }); + }, network)) + .then(L.bind(this.poll_status, this, nodes)); + }, this), 5); + + var table = E('div', { 'class': 'table assoclist', 'id': 'wifi_assoclist_table' }, [ + E('div', { 'class': 'tr table-titles' }, [ + E('div', { 'class': 'th nowrap' }, _('Network')), + E('div', { 'class': 'th hide-xs' }, _('MAC-Address')), + E('div', { 'class': 'th' }, _('Host')), + E('div', { 'class': 'th' }, _('Signal / Noise')), + E('div', { 'class': 'th' }, _('RX Rate / TX Rate')) + ]) + ]); + + cbi_update_table(table, [], E('em', { 'class': 'spinning' }, _('Collecting data...'))) + + return E([ nodes, E('h3', _('Associated Stations')), table ]); + }, this, m)); + } +}); diff --git a/luci-mod-network/root/etc/uci-defaults/50_luci-mod-admin-full b/luci-mod-network/root/etc/uci-defaults/50_luci-mod-admin-full new file mode 100755 index 000000000..140c83299 --- /dev/null +++ b/luci-mod-network/root/etc/uci-defaults/50_luci-mod-admin-full @@ -0,0 +1,22 @@ +#!/bin/sh + +if [ "$(uci -q get luci.diag)" != "internal" ]; then + host="" + + if [ -s /etc/os-release ]; then + . /etc/os-release + host="${HOME_URL:-${BUG_URL:-$OPENWRT_DEVICE_MANUFACTURER_URL}}" + host="${host#*://}" + host="${host%%/*}" + fi + + uci -q batch <<-EOF >/dev/null + set luci.diag=internal + set luci.diag.dns='${host:-openwrt.org}' + set luci.diag.ping='${host:-openwrt.org}' + set luci.diag.route='${host:-openwrt.org}' + commit luci + EOF +fi + +exit 0 diff --git a/luci-mod-network/root/usr/libexec/luci-peeraddr b/luci-mod-network/root/usr/libexec/luci-peeraddr new file mode 100755 index 000000000..84a0158fd --- /dev/null +++ b/luci-mod-network/root/usr/libexec/luci-peeraddr @@ -0,0 +1,46 @@ +#!/bin/sh + +NL=" +" + +function ifaces_by_device() { + ubus call network.interface dump 2>/dev/null | \ + jsonfilter -e "@.interface[@.device='$1' || @.l3_device='$1'].interface" +} + +function device_by_addr() { + set -- $(ip route get "$1" ${2:+from "$2"} 2>/dev/null) + echo "$5" +} + +for inbound_device in $(device_by_addr "$REMOTE_ADDR" "$SERVER_ADDR"); do + inbound_devices="$inbound_device" + inbound_interfaces="" + + for iface in $(ifaces_by_device "$inbound_device"); do + inbound_interfaces="${inbound_interfaces:+$inbound_interfaces$NL}$iface" + + for peeraddr in $(uci get "network.$iface.peeraddr"); do + for ipaddr in $(resolveip -t 1 "$peeraddr" 2>/dev/null); do + for peerdev in $(device_by_addr "$ipaddr"); do + for iface in $(ifaces_by_device "$peerdev"); do + inbound_devices="${inbound_devices:+$inbound_devices$NL}$peerdev" + inbound_interfaces="${inbound_interfaces:+$inbound_interfaces$NL}$iface" + done + done + done + done + done +done + +inbound_devices="$(echo "$inbound_devices" | sort -u | sed ':a;N;$!ba;s/\n/", "/g')" +inbound_interfaces="$(echo "$inbound_interfaces" | sort -u | sed ':a;N;$!ba;s/\n/", "/g')" + +cat < +# +# This is free software, licensed under the Apache License Version 2.0. +# See https://www.apache.org/licenses/LICENSE-2.0 for more information. +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Support for Link Aggregation (Channel Bonding) +LUCI_DEPENDS:=+proto-bonding + +PKG_MAINTAINER:=Helge Mader + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js b/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js new file mode 100644 index 000000000..5b9dc8afd --- /dev/null +++ b/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js @@ -0,0 +1,442 @@ +'use strict'; +'require ui'; +'require uci'; +'require form'; +'require network'; + +function getSelectableSlaves(section_id) { + var rv = []; + var interfaces = uci.sections('network', 'interface'); + + return network.getDevices().then(function(devices) { + for (var i = 0; i < devices.length; i++) { + var in_use = false; + if (devices[i].ifname.match(/eth/)) { + for (var j = 0; j < interfaces.length; j++) { + if (uci.get('network', interfaces[j]['.name'], 'proto') == 'bonding') { + var slaves = uci.get('network', interfaces[j]['.name'], 'slaves'); + if (slaves != null) { + for (var k = 0; k < slaves.length; k++) { + if (devices[i].ifname == slaves[k] && interfaces[j]['.name'] != section_id) { + in_use = true; + } + } + } + } + } + if (in_use == false) { + rv.push(devices[i].ifname); + } + } + } + + return rv.sort(); + }); +} + +function validateEmpty(section, value) { + if (value) { + return true; + } + else { + return _('Expecting: non-empty value'); + } +} + +function validate_arp_policy(section, value) { + + var opt = this.map.lookupOption('link_monitoring', section); + var selected_link_monitoring = opt[0].formvalue(section); + + var opt = this.map.lookupOption('bonding_policy', section); + var selected_policy = opt[0].formvalue(section); + + if (selected_link_monitoring == 'arp') { + if (selected_policy == '802.3ad' || selected_policy == 'balance-tlb' || selected_policy == 'balance-alb') { + return _('ARP monitoring is not supported for the selected policy!'); + } + } + + return true; +} + +function validate_arp_ip_targets(section, value) { + + var opt = this.map.lookupOption('link_monitoring', section); + var selected_link_monitoring = opt[0].formvalue(section); + + var opt = this.map.lookupOption('arp_ip_target', section); + var selected_arp_ip_targets = opt[0].formvalue(section); + + var opt = this.map.lookupOption('bonding_policy', section); + var selected_policy = opt[0].formvalue(section); + + if (selected_link_monitoring == 'arp' && selected_arp_ip_targets.length == 0) { + return _('You must select at least one ARP IP target if ARP monitoring is selected!'); + } + + return true; +} + +function validate_primary_interface(section, value) { + + var primary_valid = 'false'; + + var opt = this.map.lookupOption('bonding_policy', section); + var selected_policy = opt[0].formvalue(section); + + var opt = this.map.lookupOption('slaves', section); + var selected_slaves = opt[0].formvalue(section); + + var opt = this.map.lookupOption('primary', section); + var selected_primary = opt[0].formvalue(section); + + if (selected_policy == 'active-backup' || selected_policy == 'balance-tlb' || selected_policy == 'balance-alb') { + + for (var i = 0; i < selected_slaves.length; i++) { + if (selected_slaves[i] == selected_primary) { + primary_valid = 'true'; + } + } + + if (primary_valid == 'false') { + return _('You must select a primary interface which is included in selected slave interfaces!'); + } + } + + return true; +} + +return network.registerProtocol('bonding', { + getI18n: function() { + return _('Link Aggregation (Channel Bonding)'); + }, + + getIfname: function() { + return null; + }, + + getOpkgPackage: function() { + return 'bonding'; + }, + + isFloating: function() { + return true; + }, + + isCreateable: function(ifname) { + return getSelectableSlaves(ifname).then(L.bind(function(devices) { + return devices.length == 0 ? _('No more slaves available') : null; + }, this)); + + return _('No more slaves available'); + }, + + isVirtual: function() { + return true; + }, + + getDevices: function() { + return null; + }, + + containsDevice: function(ifname) { + return (network.getIfnameOf(ifname) == this.getIfname()); + }, + + renderFormOptions: function(s) { + var o; + + o = s.taboption('general', form.Value, 'ipaddr', + _('IPv4 address'), + _('The local IPv4 address')); + o.datatype = 'ip4addr'; + o.validate = validateEmpty; + + o = s.taboption('general', form.Value, 'netmask', + _('IPv4 netmask'), + _('The local IPv4 netmask')); + o.datatype = 'ip4addr'; + o.validate = validateEmpty; + o.value("255.255.255.0"); + o.value("255.255.0.0"); + o.value("255.0.0.0"); + + o = s.taboption('advanced', form.MultiValue, 'slaves', + _('Slave Interfaces'), + _('Specifies which slave interfaces should be attached to this bonding interface')); + + o.load = function(section_id) { + return getSelectableSlaves(section_id).then(L.bind(function(devices) { + for (var i = 0; i < devices.length; i++) { + this.value(devices[i], devices[i]); + } + + if (devices.length == 0) { + this.placeholder = _('No more slaves available, can not save interface'); + this.value('', ''); + return ''; + } + + var if_slaves = uci.get('network', section_id, 'slaves'); + + if (if_slaves != null) { + return if_slaves; + } + + return; + }, this)); + }; + o.cfgvalue = function(section_id) { + return uci.get('network', section_id, 'slaves'); + }; + o.validate = validateEmpty; + + o = s.taboption('advanced', form.ListValue, 'bonding_policy', + _('Bonding Policy'), + _('Specifies the mode to be used for this bonding interface')); + o.default = 'balance-rr'; + o.value('balance-rr', _('Round-Robin policy (balance-rr, 0)')); + o.value('active-backup', _('Active-Backup policy (active-backup, 1)')); + o.value('balance-xor', _('XOR policy (balance-xor, 2)')); + o.value('broadcast', _('Broadcast policy (broadcast, 3)')); + o.value('802.3ad', _('IEEE 802.3ad Dynamic link aggregation (802.3ad, 4)')); + o.value('balance-tlb', _('Adaptive transmit load balancing (balance-tlb, 5)')); + o.value('balance-alb', _('Adaptive load balancing (balance-alb, 6)')); + + o = s.taboption('advanced', form.ListValue, 'primary', + _('Primary Slave'), + _('Specifies which slave is the primary device. It will always be the active slave while it is available')); + o.depends('bonding_policy', 'active-backup'); + o.depends('bonding_policy', 'balance-tlb'); + o.depends('bonding_policy', 'balance-alb'); + + o.load = function(section_id) { + return getSelectableSlaves(section_id).then(L.bind(function(devices) { + for (var i = 0; i < devices.length; i++) { + this.value(devices[i], devices[i]); + } + + if (devices.length == 0) { + this.placeholder = _('No more primaries available, can not save interface'); + this.value('', ''); + return ''; + } + + var primary = uci.get('network', section_id, 'primary'); + + if (primary != null) { + return primary; + } + + return; + }, this)); + }; + o.cfgvalue = function(section_id) { + return uci.get('network', section_id, 'primary'); + }; + o.validate = validate_primary_interface; + + o = s.taboption('advanced', form.ListValue, 'primary_reselect', + _('Reselection policy for primary slave'), + _('Specifies the reselection policy for the primary slave when failure of the active slave or recovery of the primary slave occurs')); + o.default = 'always'; + o.value('always', _('Primary becomes active slave whenever it comes back up (always, 0)')); + o.value('better', _('Primary becomes active slave when it comes back up if speed and duplex better than current slave (better, 1)')); + o.value('failure', _('Only if current active slave fails and the primary slave is up (failure, 2)')); + o.depends('bonding_policy', 'active-backup'); + o.depends('bonding_policy', 'balance-tlb'); + o.depends('bonding_policy', 'balance-alb'); + + o = s.taboption('advanced', form.Value, 'min_links', + _('Minimum Number of Links'), + _('Specifies the minimum number of links that must be active before asserting carrier')); + o.datatype = 'uinteger'; + o.default = 0; + o.validate = validateEmpty; + o.depends('bonding_policy', '802.3ad'); + + o = s.taboption('advanced', form.Value, 'ad_actor_sys_prio', + _('System Priority'), + _('Specifies the system priority')); + o.datatype = 'range(1,65535)'; + o.default = 65535; + o.validate = validateEmpty; + o.depends('bonding_policy', '802.3ad'); + + o = s.taboption('advanced', form.Value, 'ad_actor_system', + _('MAC Address For The Actor'), + _("Specifies the mac-address for the actor in protocol packet exchanges (LACPDUs). If empty, masters' mac address defaults to system default")); + o.datatype = 'macaddr'; + o.default = ''; + o.depends('bonding_policy', '802.3ad'); + + o = s.taboption('advanced', form.ListValue, 'ad_select', + _('Aggregation Selection Logic'), + _('Specifies the aggregation selection logic to use')); + o.default = 'stable'; + o.value('stable', _('Aggregator: All slaves down or has no slaves (stable, 0)')); + o.value('bandwidth', _('Aggregator: Slave added/removed or state changes (bandwidth, 1)')); + o.value('count', _('Aggregator: Chosen by the largest number of ports + slave added/removed or state changes (count, 2)')); + o.depends('bonding_policy', '802.3ad'); + + o = s.taboption('advanced', form.ListValue, 'lacp_rate', + _('LACPDU Packets'), + _('Specifies the rate in which the link partner will be asked to transmit LACPDU packets')); + o.default = 'slow'; + o.value('slow', _('Every 30 seconds (slow, 0)')); + o.value('fast', _('Every second (fast, 1)')); + o.depends('bonding_policy', '802.3ad'); + + o = s.taboption('advanced', form.Value, 'packets_per_slave', + _('Packets To Transmit Before Moving To Next Slave'), + _("Specifies the number of packets to transmit through a slave before moving to the next one")); + o.datatype = 'range(0,65535)'; + o.default = '1'; + o.validate = validateEmpty; + o.depends('bonding_policy', 'balance-rr'); + + o = s.taboption('advanced', form.Value, 'lp_interval', + _('Interval For Sending Learning Packets'), + _("Specifies the number of seconds between instances where the bonding driver sends learning packets to each slaves peer switch")); + o.datatype = 'range(1,2147483647)'; + o.default = '1'; + o.validate = validateEmpty; + o.depends('bonding_policy', 'balance-tlb'); + o.depends('bonding_policy', 'balance-alb'); + + o = s.taboption('advanced', form.ListValue, 'tlb_dynamic_lb', + _('Enable Dynamic Shuffling Of Flows'), + _('Specifies whether to shuffle active flows across slaves based on the load')); + o.default = '1'; + o.value('1', _('Yes')); + o.value('0', _('No')); + o.depends('bonding_policy', 'balance-tlb'); + + o = s.taboption('advanced', form.ListValue, 'fail_over_mac', + _('Set same MAC Address to all slaves'), + _('Specifies whether active-backup mode should set all slaves to the same MAC address at enslavement')); + o.default = 'none'; + o.value('none', _('Yes (none, 0)')); + o.value('active', _('Set to currently active slave (active, 1)')); + o.value('follow', _('Set to first slave added to the bond (follow, 2)')); + o.depends('bonding_policy', 'active-backup'); + + o = s.taboption('advanced', form.Value, 'num_grat_arp__num_unsol_na', + _('Number of peer notifications after failover event'), + _("Specifies the number of peer notifications (gratuitous ARPs and unsolicited IPv6 Neighbor Advertisements) to be issued after a failover event")); + o.datatype = 'range(0,255)'; + o.default = '1'; + o.validate = validateEmpty; + o.depends('bonding_policy', 'active-backup'); + + o = s.taboption('advanced', form.ListValue, 'xmit_hash_policy', + _('Transmit Hash Policy'), + _('Selects the transmit hash policy to use for slave selection')); + o.default = 'layer2'; + o.value('layer2', _('Use XOR of hardware MAC addresses (layer2)')); + o.value('layer2+3', _('Use XOR of hardware MAC addresses and IP addresses (layer2+3)')); + o.value('layer3+4', _('Use upper layer protocol information (layer3+4)')); + o.value('encap2+3', _('Use XOR of hardware MAC addresses and IP addresses, rely on skb_flow_dissect (encap2+3)')); + o.value('encap3+4', _('Use upper layer protocol information, rely on skb_flow_dissect (encap3+4)')); + o.depends('bonding_policy', 'balance-rr'); + o.depends('bonding_policy', 'active-backup'); + o.depends('bonding_policy', 'balance-tlb'); + o.depends('bonding_policy', 'balance-alb'); + o.depends('bonding_policy', 'balance-xor'); + + o = s.taboption('advanced', form.Value, 'resend_igmp', + _('Number of IGMP membership reports'), + _("Specifies the number of IGMP membership reports to be issued after a failover event in 200ms intervals")); + o.datatype = 'range(0,255)'; + o.default = '1'; + o.validate = validateEmpty; + o.depends('bonding_policy', 'balance-tlb'); + o.depends('bonding_policy', 'balance-alb'); + + o = s.taboption('advanced', form.ListValue, 'all_slaves_active', + _('Drop Duplicate Frames'), + _('Specifies that duplicate frames (received on inactive ports) should be dropped or delivered')); + o.default = '0'; + o.value('0', _('Yes')); + o.value('1', _('No')); + + o = s.taboption('advanced', form.ListValue, 'link_monitoring', + _('Link Monitoring'), + _('Method of link monitoring')); + o.default = 'off'; + o.value('off', _('Off')); + o.value('arp', _('ARP')); + o.value('mii', _('MII')); + o.validate = validate_arp_policy; + + o = s.taboption('advanced', form.Value, 'arp_interval', + _('ARP Interval'), + _("Specifies the ARP link monitoring frequency in milliseconds")); + o.datatype = 'uinteger'; + o.default = '0'; + o.validate = validateEmpty; + o.depends('link_monitoring', 'arp'); + + o = s.taboption('advanced', form.DynamicList, 'arp_ip_target', + _('ARP IP Targets'), + _('Specifies the IP addresses to use for ARP monitoring')); + o.datatype = 'ipaddr'; + o.cast = 'string'; + o.depends('link_monitoring', 'arp'); + o.validate = validate_arp_ip_targets; + + o = s.taboption('advanced', form.ListValue, 'arp_all_targets', + _('ARP mode to consider a slave as being up'), + _('Specifies the quantity of ARP IP targets that must be reachable')); + o.default = 'any'; + o.value('any', _('Consider the slave up when any ARP IP target is reachable (any, 0)')); + o.value('all', _('Consider the slave up when all ARP IP targets are reachable (all, 1)')); + o.depends({link_monitoring: 'arp', bonding_policy: 'active-backup'}); + + o = s.taboption('advanced', form.ListValue, 'arp_validate', + _('ARP Validation'), + _('Specifies whether ARP probes and replies should be validated or non-ARP traffic should be filtered for link monitoring')); + o.default = 'filter'; + o.value('none', _('No validation or filtering')); + o.value('active', _('Validation only for active slave')); + o.value('backup', _('Validation only for backup slaves')); + o.value('all', _('Validation for all slaves')); + o.value('filter', _('Filtering for all slaves, no validation')); + o.value('filter_active', _('Filtering for all slaves, validation only for active slave')); + o.value('filter_backup', _('Filtering for all slaves, validation only for backup slaves')); + o.depends('link_monitoring', 'arp'); + + o = s.taboption('advanced', form.Value, 'miimon', + _('MII Interval'), + _("Specifies the MII link monitoring frequency in milliseconds")); + o.datatype = 'uinteger'; + o.default = '0'; + o.validate = validateEmpty; + o.depends('link_monitoring', 'mii'); + + o = s.taboption('advanced', form.Value, 'downdelay', + _('Down Delay'), + _("Specifies the time in milliseconds to wait before disabling a slave after a link failure detection")); + o.datatype = 'uinteger'; + o.default = '0'; + o.validate = validateEmpty; + o.depends('link_monitoring', 'mii'); + + o = s.taboption('advanced', form.Value, 'updelay', + _('Up Delay'), + _("Specifies the time in milliseconds to wait before enabling a slave after a link recovery detection")); + o.datatype = 'uinteger'; + o.default = '0'; + o.validate = validateEmpty; + o.depends('link_monitoring', 'mii'); + + o = s.taboption('advanced', form.ListValue, 'use_carrier', + _('Method to determine link status'), + _('Specifies whether or not miimon should use MII or ETHTOOL ioctls vs. netif_carrier_ok()')); + o.default = '1'; + o.value('0', _('MII / ETHTOOL ioctls')); + o.value('1', _('netif_carrier_ok()')); + o.depends('link_monitoring', 'mii'); + } +}); diff --git a/luci-theme-argon/Makefile b/luci-theme-argon/Makefile new file mode 100644 index 000000000..faf7f5255 --- /dev/null +++ b/luci-theme-argon/Makefile @@ -0,0 +1,18 @@ +# +# Copyright (C) 2008-2019 Jerrykuku +# Copyright (C) 2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# (small changes for OpenMPTCProuter) +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Argon Theme +LUCI_DEPENDS:= +PKG_VERSION:=2.1 +PKG_RELEASE:=20200206 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature \ No newline at end of file diff --git a/luci-theme-argon/README.md b/luci-theme-argon/README.md new file mode 100644 index 000000000..3513a9745 --- /dev/null +++ b/luci-theme-argon/README.md @@ -0,0 +1,36 @@ +# luci-theme-argon ([中文](/README_ZH.md)) +A new Luci theme for LEDE/OpenWRT +Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template + + +The old version is still in another branch call old. If you need that you can checkout that branch. + +## Notice +Adapt to official 19.07 stable version (not snapshot) LuCI openwrt-19.07 branch (git-20.006.26738-35aa527). +You can checkout branch 18.06 for OpenWRT 18.06 + +## How to use + +Enter in your openwrt/package/lean or other + +``` +git clone https://github.com/jerrykuku/luci-theme-argon.git +make menuconfig #choose LUCI->Theme->Luci-theme-argon +make -j1 V=s +``` +## Install +``` +opkg install https://github.com/jerrykuku/luci-theme-argon/releases/download/V1.3/luci-theme-argon_1.3-01-20191111_all.ipk +``` + +## Update log 20200131 +1. New Code For OpenWRT 19.07 for test. + +## Screenshots +![](/Screenshots/pc1.jpg) +![](/Screenshots/pc2.jpg) +![](/Screenshots/pc3.jpg) +![](/Screenshots/phone.jpg) + +## Thanks to +luci-theme-material: https://github.com/LuttyYang/luci-theme-material/ diff --git a/luci-theme-argon/README_ZH.md b/luci-theme-argon/README_ZH.md new file mode 100644 index 000000000..83767aa83 --- /dev/null +++ b/luci-theme-argon/README_ZH.md @@ -0,0 +1,35 @@ +# luci-theme-argon ([Eng](/README.md)) +全新的 Openwrt 主题,基于luci-theme-material 和 开源免费的 Argon 模板进行移植。 + +## 注意 +当前master版本基于官方 OpenWrt 19.07.1 稳定版固件进行移植适配。 +集成前请确认当前的luci 版本是比较新的版本,如果不是新版的LUCI 建议拉取18.06分支。 + + +## 如何使用 +进入 openwrt/package/lean 或者其他目录 + +``` +git clone https://github.com/jerrykuku/luci-theme-argon.git + +make menuconfig #choose LUCI->Theme->Luci-theme-argon + +make -j1 V=s +``` +## 安装 +``` +opkg install https://github.com/jerrykuku/luci-theme-argon/releases/download/V1.3/luci-theme-argon_1.3-01-20191111_all.ipk +``` + +## 更新日志 20200203 +1. 修复了一些首页不能显示的问题。 + + +## 截图 +![](/Screenshots/pc1.jpg) +![](/Screenshots/pc2.jpg) +![](/Screenshots/pc3.jpg) +![](/Screenshots/phone.jpg) + +## 感谢 +luci-theme-material: https://github.com/LuttyYang/luci-theme-material/ diff --git a/luci-theme-argon/Screenshots/pc1.jpg b/luci-theme-argon/Screenshots/pc1.jpg new file mode 100644 index 000000000..35a890823 Binary files /dev/null and b/luci-theme-argon/Screenshots/pc1.jpg differ diff --git a/luci-theme-argon/Screenshots/pc2.jpg b/luci-theme-argon/Screenshots/pc2.jpg new file mode 100644 index 000000000..ba649fa3a Binary files /dev/null and b/luci-theme-argon/Screenshots/pc2.jpg differ diff --git a/luci-theme-argon/Screenshots/pc3.jpg b/luci-theme-argon/Screenshots/pc3.jpg new file mode 100644 index 000000000..a4e3385c5 Binary files /dev/null and b/luci-theme-argon/Screenshots/pc3.jpg differ diff --git a/luci-theme-argon/Screenshots/phone.jpg b/luci-theme-argon/Screenshots/phone.jpg new file mode 100644 index 000000000..290ce1bb3 Binary files /dev/null and b/luci-theme-argon/Screenshots/phone.jpg differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/cascade.css b/luci-theme-argon/htdocs/luci-static/argon/cascade.css new file mode 100644 index 000000000..3cee0cc8f --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/cascade.css @@ -0,0 +1,3087 @@ +/** + * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template + * + * luci-theme-argon + * Copyright 2019 Jerrykuku + * + * Have a bug? Please create an issue here on GitHub! + * https://github.com/jerrykuku/luci-theme-argon/issues + * + * luci-theme-material: + * Copyright 2015 Lutty Yang + * https://github.com/LuttyYang/luci-theme-material/ + * + * Agron Theme + * https://demos.creative-tim.com/argon-dashboard/index.html + * + * Login background + * https://unsplash.com/ + * Font generate by Icomoon + * + * Licensed to the public under the Apache License 2.0 + */ +/* + * Include base and custom css + */ +@import url("custom.css?v=1"); +/* + * Icon Css and Fonts + */ +@font-face { + font-family: 'argon'; + src: url('fonts/argon.eot?vncylf'); + src: url('fonts/argon.eot?vncylf#iefix') format('embedded-opentype'), url('fonts/argon.ttf?vncylf') format('truetype'), url('fonts/argon.woff?vncylf') format('woff'), url('fonts/argon.svg?vncylf#argon') format('svg'); + font-weight: normal; + font-style: normal; + font-display: block; +} +@font-face { + font-family: 'TypoGraphica'; + src: url('fonts/TypoGraphica.eot?#iefix') format('embedded-opentype'), url('fonts/TypoGraphica.woff') format('woff'), url('fonts/TypoGraphica.ttf') format('truetype'), url('fonts/TypoGraphica.svg#TypoGraphica') format('svg'); + font-weight: normal; + font-style: normal; +} +[class^="icon-"], +[class*=" icon-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.icon-hello-world:before { + content: "\e90e"; +} +.icon-expand_more:before { + content: "\e20b"; +} +.icon-menu:before { + content: "\e20e"; +} +.icon-favorite:before { + content: "\e291"; +} +.icon-spinner:before { + content: "\e603"; +} +.icon-delete:before { + content: "\e900"; +} +.icon-edit:before { + content: "\e901"; +} +.icon-use:before { + content: "\e902"; +} +.icon-loading:before { + content: "\e903"; +} +.icon-switch:before { + content: "\e904"; +} +.icon-error:before { + content: "\e905"; +} +.icon-dashboard:before { + content: "\e906"; +} +.icon-logout:before { + content: "\e907"; +} +.icon-Network:before { + content: "\e908"; +} +.icon-services:before { + content: "\e909"; +} +.icon-system:before { + content: "\e90a"; +} +.icon-vpn:before { + content: "\e90b"; +} +.icon-storage:before { + content: "\e90c"; +} +.icon-statistics:before { + content: "\e90d"; +} +.icon-angle-right:before { + content: "\e90f"; +} +.icon-password:before { + content: "\e910"; +} +.icon-user:before { + content: "\e971"; +} +.icon-question:before { + content: "\f059"; +} +.sk-folding-cube { + position: absolute; + width: 40px; + height: 40px; + left: 50%; + top: 50%; + margin: -20px 0 0 -20px; + -webkit-transform: rotateZ(45deg); + transform: rotateZ(45deg); +} +.sk-folding-cube .sk-cube { + float: left; + width: 50%; + height: 50%; + position: relative; + -webkit-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1); +} +.sk-folding-cube .sk-cube:before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: #5e72e4; + -webkit-animation: sk-foldCubeAngle 2.4s infinite linear both; + animation: sk-foldCubeAngle 2.4s infinite linear both; + -webkit-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + transform-origin: 100% 100%; +} +.sk-folding-cube .sk-cube2 { + -webkit-transform: scale(1.1) rotateZ(90deg); + transform: scale(1.1) rotateZ(90deg); +} +.sk-folding-cube .sk-cube3 { + -webkit-transform: scale(1.1) rotateZ(180deg); + transform: scale(1.1) rotateZ(180deg); +} +.sk-folding-cube .sk-cube4 { + -webkit-transform: scale(1.1) rotateZ(270deg); + transform: scale(1.1) rotateZ(270deg); +} +.sk-folding-cube .sk-cube2:before { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} +.sk-folding-cube .sk-cube3:before { + -webkit-animation-delay: 0.6s; + animation-delay: 0.6s; +} +.sk-folding-cube .sk-cube4:before { + -webkit-animation-delay: 0.9s; + animation-delay: 0.9s; +} +@-webkit-keyframes sk-foldCubeAngle { + 0%, + 10% { + -webkit-transform: perspective(140px) rotateX(-180deg); + transform: perspective(140px) rotateX(-180deg); + opacity: 0; + } + 25%, + 75% { + -webkit-transform: perspective(140px) rotateX(0deg); + transform: perspective(140px) rotateX(0deg); + opacity: 1; + } + 90%, + 100% { + -webkit-transform: perspective(140px) rotateY(180deg); + transform: perspective(140px) rotateY(180deg); + opacity: 0; + } +} +@keyframes sk-foldCubeAngle { + 0%, + 10% { + -webkit-transform: perspective(140px) rotateX(-180deg); + transform: perspective(140px) rotateX(-180deg); + opacity: 0; + } + 25%, + 75% { + -webkit-transform: perspective(140px) rotateX(0deg); + transform: perspective(140px) rotateX(0deg); + opacity: 1; + } + 90%, + 100% { + -webkit-transform: perspective(140px) rotateY(180deg); + transform: perspective(140px) rotateY(180deg); + opacity: 0; + } +} +.table { + position: relative; + display: table; +} +.tr { + display: table-row; +} +.thead { + display: table-header-group; +} +.tbody { + display: table-row-group; +} +.tfoot { + display: table-footer-group; +} +.td, +.th { + line-height: normal; + display: table-cell; + padding: 0.5em; + text-align: center; + vertical-align: middle; +} +.th { + font-weight: bold; +} +.tr.placeholder { + height: 4em; +} +.tr.placeholder > .td { + line-height: 3; + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 0.4rem 0 !important; + text-align: center !important; + background: inherit; +} +.td[width="33%"] { + padding: 1.1em 1.5rem; +} +.table[width="33%"], +.th[width="33%"], +.td[width="33%"] { + width: 33%; +} +.table[width="100%"], +.th[width="100%"], +.td[width="100%"] { + width: 100%; +} +.col-1 { + flex: 1 1 30px !important; +} +.col-2 { + flex: 2 2 60px !important; +} +.col-3 { + flex: 3 3 90px !important; +} +.col-4 { + flex: 4 4 120px !important; +} +.col-5 { + flex: 5 5 150px !important; +} +.col-6 { + flex: 6 6 180px !important; +} +.col-7 { + flex: 7 7 210px !important; +} +.col-8 { + flex: 8 8 240px !important; +} +.col-9 { + flex: 9 9 270px !important; +} +.col-10 { + flex: 10 10 300px !important; +} +* { + box-sizing: border-box; + margin: 0; + padding: 0; + color: #32325d; + color: var(--gray-dark); +} +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: inherit; + font-weight: normal; + line-height: 1.1 !important; + color: inherit; +} +html { + overflow-y: hidden; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + font-size: 0.8rem; + background-color: #f8f9fe; +} +html, +body { + font-family: "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; + font-family: var(--font-body); + height: 100%; + margin: 0; + padding: 0; +} +select { + padding: 0.36rem 0.8rem; + color: #555; + border: thin solid #ccc; + background-color: #fff; + background-image: none; +} +.btn, +button, +select, +input, +.cbi-dropdown { + line-height: 1.5rem; + height: 2.5rem; + padding: 0.625rem 0.75rem; + margin: 0.25rem 0.1rem; + color: #8898aa; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + outline: 0; + background-image: none; + box-shadow: none; + transition: box-shadow 0.15s ease; +} +select, +.cbi-dropdown { + width: inherit; + cursor: default; +} +select:not([multiple="multiple"]):focus, +input:not(.cbi-button):focus, +.cbi-dropdown:focus { + border-color: #5e72e4; + border-color: var(--primary); + box-shadow: 0 3px 9px rgba(50, 50, 9, 0), 3px 4px 8px rgba(94, 114, 228, 0.1); +} +.cbi-dropdown, +select[multiple="multiple"] { + height: auto; +} +pre { + overflow: auto; +} +code { + font-size: 1rem; + font-size-adjust: 0.35; + padding: 1px 3px; + color: #101010; + border-radius: 2px; + background: #ddd; +} +abbr { + cursor: help; + text-decoration: underline; + color: #fff; +} +hr { + margin: 1rem 0; + opacity: 0.1; + border-color: #eee; +} +header, +.main { + width: 100%; +} +footer { + font-size: 0.8rem; + overflow: hidden; + padding: 1rem; + text-align: right; + white-space: nowrap; + color: #aaa; + text-shadow: 0 0 2px #bbb; +} +footer > a { + text-decoration: none; + color: #aaa; +} +small { + font-size: 90%; + line-height: 1.42857143; + white-space: normal; +} +.main { + position: relative; + top: 0; + bottom: 0; + overflow-y: auto; + height: 100%; +} +.main > .loading { + position: fixed; + z-index: 1000; + top: 0; + display: block; + width: 100%; + height: 100%; + pointer-events: none; + background-color: #f0f0f0; +} +.main > .loading > span { + font-family: monospace; + font-size: 2rem; + font-size-adjust: 0.35; + position: relative; + top: 12.5%; + display: block; + text-align: center; + color: #888; +} +.main > .loading > span > .loading-img { + position: relative; + top: 0.1rem; + left: 0.05rem; + display: inline-block; + width: 1.25rem; + height: 1.25rem; + margin-right: 1rem; + animation: anim-rotate 2s infinite linear; + background: url(icons/spinner.svg) no-repeat center; +} +@keyframes anim-rotate { + 0% { + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + } + 100% { + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.main-left { + top: 0; + float: left; + width: 15%; + width: calc(0% + 20rem); + height: 100%; + background-color: #fff; + background-color: var(--menu-bg-color); + box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15); + overflow-x: auto; + position: fixed; + z-index: 100; +} +.main-left .sidenav-header { + padding: 1.5rem; + text-align: center; +} +.main-left .sidenav-header .brand { + font-size: 1.8rem; + color: #5e72e4; + font-family: "TypoGraphica"; + text-decoration: none; + text-align: center; + cursor: default; + vertical-align: text-bottom; + white-space: nowrap; +} +.main-right { + float: right; + width: 85%; + width: calc(100% - 20rem); + height: 100%; + background-color: #f8f9fe; + transition: all 0.2s; +} +.main-right > #maincontent { + position: relative; + z-index: 50; + margin-top: -13rem; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.nowrap:not(.td) { + white-space: nowrap; +} +[disabled="disabled"] { + pointer-events: none; +} +header { + color: #fff; + color: var(--header-color); + padding: 0 0 14rem 0; +} +header.bg-primary { + background-color: #5e72e4 !important; + background-color: var(--primary) !important; +} +header .fill { + padding: 0.8rem 0; + border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important; +} +header .fill .container { + height: 2rem; + padding: 0 1rem; +} +header .fill .container .showSide { + display: none; + color: #fff; + font-size: 1.4rem; +} +header .fill .container .brand { + font-size: 1.5rem; + color: #fff; + font-family: "TypoGraphica"; + text-decoration: none; + padding-left: 1rem; + cursor: default; + vertical-align: text-bottom; + display: none; +} +header .fill .container .pull-right { + float: right; + margin-top: 0rem; + display: flex; +} +header .fill .status { + position: absolute; + top: 25%; + right: 1em; + float: right; +} +header .fill .status * { + position: relative; + top: 0.2rem; + float: left; + margin-left: 0.3rem; + cursor: pointer; +} +#xhr_poll_status { + display: flex; + margin-left: 0.5rem; +} +#xhr_poll_status * { + color: #fff; +} +.danger { + background-color: #ff7d60 !important; +} +.warning { + background-color: #f0e68c !important; +} +.success { + background-color: #5cb85c !important; +} +.notice { + background-color: #11cdef !important; + color: #fff; +} +.error { + color: #f00; +} +.alert, +.alert-message { + font-weight: bold; + margin-bottom: 1em; + padding: 1rem; + border: 0; + border-radius: 0.375rem !important; + background-color: #fff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + text-shadow: 1px 1px rgba(0, 0, 0, 0.1); +} +.alert.error, +.alert-message.error { + background-color: #ffd600; +} +.alert h4, +.alert-message h4 { + padding: 0rem 1.5rem 0.75rem 0rem; +} +.alert .btn, +.alert-message .btn { + height: auto; +} +.alert-message > h4 { + font-size: 110%; + font-weight: bold; +} +.alert-message > * { + margin: 0.5rem 0; +} +.alert-message .btn { + padding: 0.3rem 0.6rem; +} +.container .alert, +.container .alert-message { + margin-top: 1rem; +} +/* + * Main Menu + */ +.main .main-left { + transition: all 0.2s; +} +.main .main-left .nav { + margin-top: 0.5rem; +} +.main .main-left .nav li { + padding: 0.5rem 1rem; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.main .main-left .nav li a { + display: block; + color: #5f6368; + color: var(--menu-color); +} +.main .main-left .nav li.slide { + padding: 0; +} +.main .main-left .nav li.slide ul { + display: none; +} +.main .main-left .nav li.slide .menu { + display: block; + margin: 0.1rem 0.5rem 0.1rem 0.5rem; + padding: 0.675rem 0 0.675rem 2.5rem; + border-radius: 0.375rem; + text-decoration: none; + cursor: default; + font-size: 1rem; + transition: all 0.2s; + position: relative; +} +.main .main-left .nav li.slide .menu.active { + color: #fff; + background: #5e72e4; + background: var(--primary); +} +.main .main-left .nav li.slide .menu.active::before { + color: #fff !important; +} +.main .main-left .nav li.slide .menu.active::after { + transform: rotate(90deg); + color: #fff !important; +} +.main .main-left .nav li.slide .menu:hover { + cursor: pointer; + color: #fff; + background: #5e72e4; + background: var(--primary); +} +.main .main-left .nav li.slide .menu:hover::before { + color: #fff !important; +} +.main .main-left .nav li.slide .menu::before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + left: 0.8rem; + padding-top: 3px; + transition: all 0.3s; +} +.main .main-left .nav li.slide .menu::after { + position: absolute; + right: 0.5rem; + top: 0.8rem; + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -moz-osx-font-smoothing: grayscale; + content: '\e90f'; + transition: all 0.15s ease; + color: #ced4da; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + transition: all 0.3s; +} +.main .main-left .nav li.slide .menu[data-title=Status]:before { + content: "\e906"; + color: #5e72e4; +} +.main .main-left .nav li.slide .menu[data-title=System]:before { + content: "\e90a"; + color: #fb6340; +} +.main .main-left .nav li.slide .menu[data-title=Services]:before { + content: "\e909"; + color: #11cdef; +} +.main .main-left .nav li.slide .menu[data-title=NAS]:before { + content: "\e90c"; + color: #f3a4b5; +} +.main .main-left .nav li.slide .menu[data-title=VPN]:before { + content: "\e90b"; + color: #172b4d; +} +.main .main-left .nav li.slide .menu[data-title=Network]:before { + content: "\e908"; + color: #8965e0; +} +.main .main-left .nav li.slide .menu[data-title=Bandwidth_Monitor]:before { + content: "\e90d"; + color: #2dce89; +} +.main .main-left .nav li.slide:hover { + background: none; +} +.main .main-left .nav li.slide .slide-menu { + margin: 0 0.5rem 0 2.5rem; + padding: 0rem 0.5rem; +} +.main .main-left .nav li.slide .slide-menu li { + position: relative; + border-radius: 0.375rem; + margin: 0.2rem 0; + padding: 0.5rem 0rem; + background: none; +} +.main .main-left .nav li.slide .slide-menu li a { + white-space: nowrap; + text-decoration: none; +} +.main .main-left .nav li.slide .slide-menu li::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 0; + height: 2px; + background-color: #5e72e4; + transition: all 0.2s; +} +.main .main-left .nav li.slide .slide-menu li:hover { + background: none; +} +.main .main-left .nav li.slide .slide-menu li:hover::after { + width: 100%; +} +.main .main-left .nav li.slide .slide-menu .active { + background: none; + color: var(--menu-color); +} +.main .main-left .nav li.slide .slide-menu .active a { + color: var(--menu-color); +} +.main .main-left .nav li.slide .slide-menu .active::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 2px; + background-color: #5e72e4; + transition: all 0.2s; +} +.main .main-left .nav li.slide .slide-menu .active:hover { + background: none; +} +.main .main-left .nav li.slide .slide-menu .active:hover::after { + width: 100%; +} +.lg { + margin: 0; + padding: 0 !important; +} +.logout { + display: block; + margin: 0.8rem 0.5rem 0.1rem 0.5rem; + padding: 0.675rem 0 0.675rem 2.5rem; + border-radius: 0.375rem; + text-decoration: none; + font-size: 1rem; + transition: all 0.2s; + position: relative; +} +.logout:before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + left: 0.8rem; + padding-top: 3px; + transition: all 0.3s; + content: "\e907"; + color: #32325d !important; +} +body[class*="node-"] > .main > .main-left > .nav > .slide > .menu::before { + transition: transform 0.1s ease-in-out; +} +body[class*="node-"] > .main > .main-left > .nav > .slide > .menu.active::before { + transition: transform 0.2s ease-in-out; +} +.main > .main-left[style*="overflow: hidden"] > .nav > .slide > .menu::before { + display: none; +} +#maincontent > .container { + margin: 0 2rem 1rem 2rem; +} +ul { + line-height: normal; +} +li { + list-style-type: none; +} +h1 { + font-size: 2rem; + padding-bottom: 10px; + border-bottom: thin solid #eee; +} +h2 { + color: #fff; + font-size: 1.8rem; + margin: 1rem 0 0 0; + padding-bottom: 10px; +} +h3 { + font-size: 1.4rem; + margin: 0rem 0 0 0; + padding: 2rem 1.5rem 1.25rem 1.5rem; +} +h4 { + font-size: 1.2rem; + margin: 2rem 0 0 0; + padding: 0rem 1.5rem 0.75rem 1.5rem; +} +h5 { + font-size: 1rem; + margin: 2rem 0 0 0; + padding-bottom: 10px; +} +.cbi-section, +.cbi-section-error, +#iptables, +.Firewall form, +#cbi-network > .cbi-section-node, +#cbi-wireless > .cbi-section-node, +#cbi-wireless > #wifi_assoclist_table, +[data-tab-title], +[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), +[data-page="admin-system-opkg"] #maincontent > .container { + font-family: inherit; + font-weight: normal; + font-style: normal; + line-height: normal; + min-width: inherit; + margin: 1.5rem 0; + padding: 0rem; + border: 0; + border-radius: 0.375rem; + background-color: #fff; + box-shadow: 0 0 1rem 0 rgba(136, 152, 170, 0.15); +} +.cbi-modal .cbi-section, +.cbi-section .cbi-section { + padding: 0; + box-shadow: none; +} +.cbi-modal .cbi-tabmenu { + margin-left: 0; +} +.cbi-map-descr, +.cbi-section-descr { + font-size: small; + line-height: 1.42857143; + padding: 0.5rem 0; + color: #fff; +} +.cbi-map-descr + fieldset { + margin-top: 1rem; +} +.cbi-section > legend { + display: none !important; +} +fieldset > fieldset, +.cbi-section > .cbi-section { + margin: 0; + padding: 0; + border: 0; + box-shadow: none; +} +.cbi-section > h3:first-child, +.panel-title { + font-size: 1.4rem; + line-height: 1; + display: block; + width: 100%; + margin: 0; + margin-bottom: 0; + padding: 1.25rem 1.5rem; + color: #32325d; + color: var(--gray-dark); +} +.cbi-section > h3:first-child, +.cbi-section > h4:first-child, +.cbi-section > p:first-child, +[data-tab-title] > h3:first-child, +[data-tab-title] > h4:first-child, +[data-tab-title] > p:first-child { + padding-top: 1rem; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +table, +.table { + overflow-y: hidden; + width: 100%; +} +table > tbody > tr > td, +table > tbody > tr > th, +table > tfoot > tr > td, +table > tfoot > tr > th, +table > thead > tr > td, +table > thead > tr > th, +.table > .tbody > .tr > .td, +.table > .tbody > .tr > .th, +.table > .tfoot > .tr > .td, +.table > .tfoot > .tr > .th, +.table > .thead > .tr > .td, +.table > .thead > .tr > .th, +.table > .tr > .td.cbi-value-field, +.table > .tr > .th.cbi-section-table-cell { + padding: 0.5rem; +} +.container > .cbi-section:first-of-type > .table[width="100%"] > .tr > .td { + padding: 0.6rem; +} +.cbi-section-table-cell { + line-height: 1.1; + align-self: flex-end; + flex: 1 1 auto; +} +tr > td, +tr > th, +.tr > .td, +.tr > .th, +.cbi-section-table-row::before, +#cbi-wireless > #wifi_assoclist_table > .tr:nth-child(2) { + border-top: thin solid #ddd; + padding: 1.1em 1.5rem; +} +#cbi-wireless .td, +#cbi-network .tr:first-child > .td, +.table[width="100%"] > .tr:first-child > .td, +[data-page="admin-network-diagnostics"] .tr > .td, +.tr.table-titles > .th, +.tr.cbi-section-table-titles > .th { + border-top: 0 !important; + background-color: #f6f9fc; + padding: 1.1em 1.5rem; + line-height: 1.3rem; +} +.table[width="100%"] > .tr:first-child > .td { + margin: auto 0; +} +.cbi-section-table-row { + margin-bottom: 1rem; + text-align: center !important; + background: #f4f4f4; +} +.cbi-section-table-row:last-child { + margin-bottom: 0; +} +.cbi-section-table-row > .cbi-value-field .cbi-dropdown, +.cbi-section-table-row > .cbi-value-field .cbi-input-select, +.cbi-section-table-row > .cbi-value-field .cbi-input-text, +.cbi-section-table-row > .cbi-value-field .cbi-input-password { + width: 100%; +} +.cbi-section-table-row > .cbi-value-field [data-dynlist] > input, +.cbi-section-table-row > .cbi-value-field input.cbi-input-password { + width: calc(100% - 1.5rem); +} +.cbi-section-table-row .td { + text-align: center !important; +} +div > table > tbody > tr:nth-of-type(2n), +div > .table > .tr:nth-of-type(2n) { + background-color: #f9f9f9; +} +/* fix multiple table */ +table table, +.table .table, +.cbi-value-field table, +.cbi-value-field .table, +td > table > tbody > tr > td, +.td > .table > .tbody > .tr > .td, +.cbi-value-field > table > tbody > tr > td, +.cbi-value-field > .table > .tbody > .tr > .td { + border: 0; +} +/* button style */ +.btn, +.cbi-button, +.item::after { + font-size: 0.8rem; + display: inline-block; + width: auto !important; + padding: 0 0.8rem; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + transition: all 0.2s ease-in-out; + text-align: center; + vertical-align: middle; + white-space: nowrap; + text-decoration: none; + text-transform: uppercase; + color: rgba(0, 0, 0, 0.87); + border: 0; + border-radius: 0.2rem; + background-color: #f0f0f0; + background-image: none; + -webkit-appearance: none; + -ms-touch-action: manipulation; + touch-action: manipulation; +} +.cbi-button-up, +.cbi-button-down { + font-size: 1.2rem; + display: inline-block; + min-width: 0; + padding: 0.2rem 0.3rem; + color: transparent !important; + background: url(icons/arrow.svg) no-repeat center; + background-size: 12px 20px; +} +.cbi-button-up { + transform: scaleY(-1); +} +.cbi-button:not(select) { + -webkit-appearance: none !important; +} +.cbi-button + .cbi-button { + margin-left: 0.6rem; +} +.btn:hover, +.btn:focus, +.btn:active, +.cbi-button:hover, +.cbi-button:focus, +.cbi-button:active, +.item:hover::after, +.item:focus::after, +.item:active::after, +.cbi-page-actions .cbi-button-apply + .cbi-button-save:hover, +.cbi-page-actions .cbi-button-apply + .cbi-button-save:focus, +.cbi-page-actions .cbi-button-apply + .cbi-button-save:active { + text-decoration: none; + outline: 0; +} +.btn:hover, +.btn:focus, +.cbi-button:hover, +.cbi-button:focus, +.item:hover::after, +.item:focus::after { + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); +} +.btn:active, +.cbi-button:active, +.item:active::after { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); +} +.cbi-button-up:hover, +.cbi-button-up:focus { + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 -2px 2px rgba(0, 0, 0, 0.2); +} +.cbi-button-up:active { + box-shadow: 0 -10px 20px rgba(0, 0, 0, 0.19), 0 -6px 6px rgba(0, 0, 0, 0.23); +} +.btn:disabled, +.cbi-button:disabled { + cursor: not-allowed; + pointer-events: none; + opacity: 0.5; + box-shadow: none; +} +/* gray */ +.alert-message [class="btn"], +.modal div[class="btn"], +.cbi-button-find, +.cbi-button-link, +.cbi-button-up, +.cbi-button-down, +.cbi-button-neutral, +.cbi-button[name="zero"], +.cbi-button[name="restart"], +.cbi-button[onclick="hide_empty(this)"] { + font-weight: bold; + color: #fff; + border: thin solid #8898aa; + background-color: #8898aa; +} +/* dark blue */ +.btn.primary, +.cbi-page-actions .cbi-button-save, +.cbi-page-actions .cbi-button-apply + .cbi-button-save, +.cbi-button-add, +.cbi-button-save, +.cbi-button-positive, +.cbi-button-link, +.cbi-button[value="Enable"], +.cbi-button[value="Scan"], +.cbi-button[value^="Back"], +.cbi-button-neutral[onclick="handleConfig(event)"] { + font-weight: normal; + color: #fff; + border: thin solid #5e72e4; + border: thin solid var(--primary); + background-color: #5e72e4; + background-color: var(--primary); +} +/* light blue */ +.cbi-page-actions .cbi-button-apply, +.cbi-section-actions .cbi-button-edit, +.cbi-button-edit, +.cbi-button-apply, +.cbi-button-reload, +.cbi-button-action, +.cbi-button[value="Submit"], +.cbi-button[value="Upload"], +.cbi-button[value$="Apply"], +.cbi-button[onclick="addKey(event)"] { + font-weight: normal; + color: #fff; + border: thin solid #5e72e4; + border: thin solid var(--primary); + background-color: #5e72e4; + background-color: var(--primary); +} +/* red */ +.btn.danger, +.cbi-section-remove > .cbi-button, +.cbi-button-remove, +.cbi-button-reset, +.cbi-button-negative, +.cbi-button[value="Stop"], +.cbi-button[value="Kill"], +.cbi-button[onclick="reboot(this)"], +.cbi-button-neutral[value="Restart"] { + font-weight: normal; + color: #fff; + border: thin solid #f5365c; + border: thin solid var(--red); + background-color: #f5365c; + background-color: var(--red); +} +/* yellow */ +.btn[value="Dismiss"], +.cbi-button[value="Terminate"], +.cbi-button[value="Reset"], +.cbi-button[value="Disabled"], +.cbi-button[onclick^="iface_reconnect"], +.cbi-button[onclick="handleReset(event)"], +.cbi-button-neutral[value="Disable"] { + font-weight: normal; + color: #fff; + border: thin solid #eea236; + background-color: #f0ad4e; +} +/* green */ +.cbi-button-success, +.cbi-button-download, +.cbi-button[name="backup"], +.cbi-button[value="Download"], +.cbi-button[value="Save mtdblock"] { + font-weight: normal; + color: #fff; + border: thin solid #4cae4c; + background-color: #5cb85c; +} +.cbi-page-actions .cbi-button-link:first-child { + float: left; +} +.a-to-btn { + text-decoration: none; +} +.cbi-value-field .cbi-button-add { + font-weight: bold; + margin: 9px 0 4px 3px; + padding: 1px 6px; +} +.tabs { + margin: 0 0rem; + padding-left: 0.5rem; + border-radius: 0.375rem; + background-color: #fff; +} +.tabs > li, +.cbi-tabmenu > li { + display: inline-block; + padding: 0.55rem 0; + margin: 0.5rem 0.1rem 0 0.1rem; + border-top-left-radius: 0.375rem; + border-top-right-radius: 0.375rem; + background-color: #d4d4d4; + cursor: pointer; +} +.tabs > li { + padding-bottom: 0.4rem; + border-bottom: 0.2rem solid transparent; + background-color: #fff; +} +.tabs > li[class~="active"], +.tabs > li:hover { + border-bottom-color: #5e72e4; + border-bottom-color: var(--primary); +} +.tabs > li:hover { + cursor: pointer; + border-bottom-color: #c9c9c9; +} +.tabs > li > a, +.cbi-tabmenu > li > a { + padding: 0.6rem 0.9rem; + text-decoration: none; + color: #404040; +} +.tabs > li[class~="active"] > a { + color: #5e72e4; + color: var(--primary); +} +.cbi-tabmenu { + border: 0 solid #d4d4d4; + border-bottom: 0; +} +.cbi-tabmenu > li:hover { + background-color: #f1f1f1; +} +.cbi-tabmenu > li[class~="cbi-tab"] { + background-color: #fb6340; + background-color: var(--orange); +} +.cbi-tabmenu > li[class~="cbi-tab"] a { + color: #fff; +} +.cbi-tabmenu { + padding-left: 1rem; + background-color: none; +} +.cbi-section .cbi-section-remove:nth-of-type(2n), +.container > .cbi-section .cbi-section-node:nth-of-type(2n) { + background-color: #f9f9f9; +} +[data-tab-title] { + overflow: hidden; + height: 0; + opacity: 0; + margin: 0; + padding: 0rem 0rem !important; +} +[data-tab-title] p { + margin-left: 1rem; + margin-bottom: 1rem; +} +[data-tab-active="true"] { + overflow: visible; + height: auto; + opacity: 1; + transition: opacity 0.25s ease-in; + margin: inherit !important; +} +.cbi-section[id] .cbi-section-remove:nth-of-type(4n+3), +.cbi-section[id] .cbi-section-node:nth-of-type(4n+4) { + background-color: #f9f9f9; +} +.cbi-section-node-tabbed { + margin-top: 0; + padding: 0; + border: thin solid #d4d4d4; + border-radius: 0.375rem; +} +.cbi-tabcontainer > .cbi-value:nth-of-type(2n) { + background-color: #f9f9f9; +} +.cbi-value-field, +.cbi-value-description { + line-height: 1.25; + display: table-cell; +} +.cbi-value-field abbr, +.cbi-value-description abbr { + color: #32325d; + color: var(--gray-dark); +} +.cbi-value-description { + font-size: small; + padding-top: 0.4rem; + opacity: 0.5; +} +.cbi-value-title { + display: table-cell; + float: left; + width: 23rem; + padding-top: 0.25rem; + padding-right: 2rem; + text-align: right; + word-wrap: break-word; +} +.cbi-value { + display: inline-block; + width: 100%; + padding: 0.35rem 1rem 0.2rem 1rem; + line-height: 2.4rem; +} +.cbi-value ul { + line-height: 1.25; +} +.cbi-value-field .cbi-dropdown, +.cbi-value-field .cbi-input-select, +.cbi-value input[type="text"], +.cbi-value input[type="password"] { + min-width: 18rem; +} +#cbi-firewall-zone .cbi-input-select, +#cbi-network-switch_vlan .cbi-input-select { + min-width: 11rem; +} +#cbi-network-switch_vlan .cbi-input-text { + max-width: 3rem; +} +.cbi-input-invalid { + color: #f5365c; + border-bottom-color: #f5365c; +} +.cbi-section-error { + font-weight: bold; + line-height: 1.42857143; + margin: 18px; + padding: 6px; + border: thin solid #f5365c; + border-radius: 3px; + background-color: #fce6e6; +} +.cbi-section-error ul { + margin: 0 0 0 20px; +} +.cbi-section-error ul li { + font-weight: bold; + color: #f5365c; +} +.td[data-title]::before { + font-weight: bold; + display: none; + padding: 0.25rem 0; + content: attr(data-title) ":\20"; + text-align: left; + white-space: nowrap; +} +.tr.placeholder .td[data-title]::before { + display: none; +} +.tr[data-title]::before, +.tr.cbi-section-table-titles.named::before { + font-weight: bold; + display: table-cell; + align-self: center; + flex: 1 1 5%; + padding: 0.25rem; + content: attr(data-title) "\20"; + text-align: center; + vertical-align: middle; + white-space: normal; + word-wrap: break-word; +} +.cbi-rowstyle-1 { + background-color: #f9f9f9; +} +.cbi-rowstyle-2 { + background-color: #eee; +} +.cbi-rowstyle-2 .cbi-button-up, +.cbi-rowstyle-2 .cbi-button-down, +body:not(.Interfaces) .cbi-rowstyle-2:first-child { + background-color: #fff !important; +} +.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { + width: auto !important; +} +.td.cbi-section-actions { + text-align: right !important; + vertical-align: middle; +} +.td.cbi-section-actions > * { + display: inline-flex; +} +.td.cbi-section-actions > * > *, +.td.cbi-section-actions > * > form > * { + margin: 0 5px; + display: flex; + align-items: center; +} +.td.cbi-section-actions > * > form { + display: inline-flex; + margin: 0; +} +/* lists */ +.cbi-dynlist { + line-height: 1.3; + flex-direction: column; + min-height: 30px; + cursor: text; +} +.cbi-dynlist > .item { + position: relative; + max-width: 25rem; + margin-right: 2em; + margin-bottom: 0.3rem; + padding: 1em 0.25em 0.25em 0; + pointer-events: none; + color: #8898aa; + border-bottom: 2px solid #5e72e4; + border-bottom: 2px solid var(--primary); + outline: 0; +} +.cbi-dynlist[name="sshkeys"] > .item { + max-width: none; +} +.cbi-dynlist > .item::after { + font-weight: bold; + position: absolute; + right: -2em; + bottom: 0; + display: inline-flex; + min-height: 17px; + padding: 0 6px; + content: "\00D7"; + pointer-events: auto; + color: #fff; + border: thin solid #f5365c; + border: thin solid var(--red); + background-color: #f5365c; + background-color: var(--red); +} +.cbi-dynlist > .item > span { + white-space: normal; + word-break: break-word; +} +.cbi-dynlist > .add-item { + display: inline-flex; + align-items: center; + width: 100%; + min-width: 16rem; +} +.cbi-dynlist > .add-item:not([ondrop]) > input { + overflow: hidden; + width: 100%; + min-width: 15rem; + white-space: nowrap; + text-overflow: ellipsis; +} +.cbi-dynlist > .add-item[ondrop] > input { + min-width: 13rem; +} +.cbi-dynlist, +.cbi-dropdown { + position: relative; + display: inline-flex; + padding: 0.2rem; +} +.cbi-dropdown[placeholder*="select"] { + max-width: 25rem; + height: auto; + margin-top: -3px; +} +.cbi-dropdown > ul { + display: flex; + overflow-x: hidden; + overflow-y: auto; + width: 100%; + margin: 0 !important; + padding: 0; + list-style: none; + outline: 0; +} +.cbi-dropdown > ul.preview { + display: none; +} +.cbi-button-apply > ul.preview { + display: none; +} +.cbi-button-apply > ul.preview li { + color: #fff; +} +.cbi-button-apply > ul:first-child li { + color: #fff; +} +.cbi-dropdown > .open { + flex-basis: 15px; +} +.cbi-dropdown > .open, +.cbi-dropdown > .more { + font-size: 1rem; + font-weight: 900; + line-height: 2; + display: flex; + flex-direction: column; + flex-grow: 0; + flex-shrink: 0; + justify-content: center; + padding: 0 0.25em; + cursor: default; + text-align: center; + outline: 0; +} +.cbi-dropdown > .more, +.cbi-dropdown > ul > li[placeholder] { + font-weight: bold; + display: none; + color: #777; + text-shadow: 1px 1px 0 #fff; +} +.cbi-dropdown > ul > li { + display: none; + overflow: hidden; + align-items: center; + align-self: center; + flex-grow: 1; + flex-shrink: 1; + min-height: 20px; + padding: 0.25em; + white-space: nowrap; + text-overflow: ellipsis; +} +.cbi-dropdown > ul > li .hide-open { + display: initial; +} +.cbi-dropdown > ul > li .hide-close { + display: none; +} +.cbi-dropdown > ul > li[display]:not([display="0"]) { + border-left: thin solid #ccc; +} +.cbi-dropdown[empty] > ul { + max-width: 1px; +} +.cbi-dropdown > ul > li > form { + display: none; + margin: 0; + padding: 0; + pointer-events: none; +} +.cbi-dropdown > ul > li img { + margin-right: 0.25em; + vertical-align: middle; +} +.cbi-dropdown > ul > li > form > input[type="checkbox"] { + height: auto; + margin: 0; +} +.cbi-dropdown > ul > li input[type="text"] { + height: 20px; +} +.cbi-dropdown[open] > ul.dropdown { + position: absolute; + z-index: 1100; + display: block; + width: auto; + min-width: 100%; + max-width: none; + max-height: 200px !important; + border: thin solid #918e8c; + background: #f6f6f6; + box-shadow: 0 0 4px #918e8c; + color: var(--main-menu-color); +} +.cbi-dropdown[open] > ul.dropdown li { + color: #000; +} +.cbi-dropdown > ul > li[display], +.cbi-dropdown[open] > ul.preview, +.cbi-dropdown[open] > ul.dropdown > li, +.cbi-dropdown[multiple] > ul > li > label, +.cbi-dropdown[multiple][open] > ul.dropdown > li, +.cbi-dropdown[multiple][more] > .more, +.cbi-dropdown[multiple][empty] > .more { + display: flex; + align-items: center; + flex-grow: 1; +} +.cbi-dropdown[empty] > ul > li, +.cbi-dropdown[optional][open] > ul.dropdown > li[placeholder], +.cbi-dropdown[multiple][open] > ul.dropdown > li > form { + display: block; +} +.cbi-dropdown[open] > ul.dropdown > li .hide-open { + display: none; +} +.cbi-dropdown[open] > ul.dropdown > li .hide-close { + display: initial; +} +.cbi-dropdown[open] > ul.dropdown > li { + border-bottom: thin solid #ccc; + padding: 0.5rem 0.8rem; +} +.cbi-dropdown[open] > ul.dropdown > li[selected] { + background: #b0d0f0; +} +.cbi-dropdown[open] > ul.dropdown > li.focus { + background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%); +} +.cbi-dropdown[open] > ul.dropdown > li:last-child { + margin-bottom: 0; + border-bottom: 0; +} +.cbi-dropdown[open] > ul.dropdown > li[unselectable] { + opacity: 0.7; +} +.cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child { + width: 100%; +} +.cbi-dropdown[disabled] { + pointer-events: none; + opacity: 0.6; +} +.cbi-dropdown .zonebadge { + width: 100%; +} +.cbi-dropdown[open] .zonebadge { + width: auto; +} +/* progressbar */ +.cbi-progressbar { + position: relative; + min-width: 170px; + height: 20px; + margin: 6px 0; + border: thin solid #999; + background: #eee; + border-radius: 0.2rem; + overflow: hidden; +} +.cbi-progressbar > div { + width: 0; + height: 100%; + transition: width 0.25s ease-in; + background: #5bc0de; + background: var(--bar-bg); +} +.cbi-progressbar::after { + font-family: monospace; + font-size: 1em; + font-weight: bold; + font-size-adjust: 0.38; + line-height: normal; + position: absolute; + top: 2px; + right: 0; + bottom: 2px; + left: 0; + overflow: hidden; + content: attr(title); + text-align: center; + white-space: pre; + text-overflow: ellipsis; +} +#modal_overlay { + position: fixed; + z-index: 900; + top: 0; + right: 10000px; + bottom: 0; + left: -10000px; + overflow-y: scroll; + transition: opacity 0.125s ease-in; + opacity: 0; + background: rgba(0, 0, 0, 0.7); + -webkit-overflow-scrolling: touch; +} +.modal { + display: flex; + align-items: center; + flex-wrap: wrap; + width: 90%; + min-width: 270px; + max-width: 600px; + min-height: 32px; + margin: 5em auto; + padding: 1em; + border-radius: 3px !important; + background: #fff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); +} +.modal > * { + line-height: normal; + flex-basis: 100%; + margin-bottom: 0.5em; + max-width: 100%; +} +.modal > pre, +.modal > textarea { + font-size: 1rem; + font-size-adjust: 0.35; + overflow: auto; + margin-bottom: 0.5em; + padding: 8.5px; + cursor: auto; + white-space: pre-wrap; + color: #eee; + outline: 0; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); +} +.modal > h4 { + margin: 0.5em 0; +} +.modal ul { + margin-left: 2.2em; +} +.modal li { + list-style-type: square; + color: #808080; +} +.modal p { + padding-left: 0.25rem; + word-break: break-word; +} +.modal .label { + font-size: 0.6rem; + font-weight: normal; + padding: 0.1rem 0.3rem; + padding-bottom: 0; + cursor: default; + border-radius: 0; +} +.modal .label.warning { + background-color: #f0ad4e !important; +} +.modal .btn { + padding: 0.3rem 0.6rem; +} +.modal.cbi-modal { + max-width: 90%; + max-height: none; +} +body.modal-overlay-active { + overflow: hidden; + height: 100vh; +} +body.modal-overlay-active #modal_overlay { + right: 0; + left: 0; + opacity: 1; +} +.spinning { + position: relative; + padding-left: 32px !important; +} +.spinning::before { + position: absolute; + top: 0; + bottom: 0; + left: 0.2em; + width: 32px; + content: ""; + background: url(../resources/icons/loading.gif) no-repeat center; + background-size: 16px; +} +/* luci */ +.hidden { + display: none; +} +.left, +.left::before { + text-align: left !important; +} +.right, +.right::before { + text-align: right !important; +} +.center, +.center::before { + text-align: center !important; +} +.top { + align-self: flex-start !important; + vertical-align: top !important; +} +.bottom { + align-self: flex-end !important; + vertical-align: bottom !important; +} +.inline { + display: inline; +} +.cbi-page-actions { + padding-top: 1rem; + text-align: right; +} +.cbi-page-actions > form[method="post"] { + display: inline-block; +} +.th[data-type="button"], +.td[data-type="button"], +.th[data-type="fvalue"], +.td[data-type="fvalue"] { + flex: 1 1 2em; + text-align: center; +} +.ifacebadge { + display: inline-flex; + padding: 0.5rem 0.8rem; + border-bottom: thin solid #ccc; + background: #eee; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} +td > .ifacebadge, +.td > .ifacebadge { + font-size: 0.8rem; + background-color: #f0f0f0; +} +.ifacebadge > em, +.ifacebadge > img { + display: inline-block; + align-self: flex-start; + margin: 0 0.2rem; +} +.ifacebadge > img + img { + margin: 0 0.2rem 0 0; +} +.network-status-table { + display: flex; + flex-wrap: wrap; +} +.network-status-table .ifacebox { + flex-grow: 1; + margin: 0.5em; +} +.network-status-table .ifacebox-body { + display: flex; + flex-direction: column; + height: 100%; +} +.network-status-table .ifacebox-body > span { + flex: 10 10 auto; + height: 100%; +} +.network-status-table .ifacebox-body > div { + display: flex; + flex-wrap: wrap; +} +.network-status-table .ifacebox-body .ifacebadge { + align-items: center; + flex: 1 1 auto; + min-width: 220px; + margin: 0.5em 0em 0 0em; + padding: 0.5em; + background-color: #fff; +} +/* textarea */ +.cbi-input-textarea { + font-family: monospace; + width: 100%; + min-height: 14rem; + padding: 0.8rem; + color: #000; +} +#syslog { + font-size: small; + line-height: 1.25; + overflow-y: hidden; + width: 100%; + min-height: 15rem; + padding: 1rem; + resize: none; + color: #eee; + border: 0; + border-radius: 0.375rem; + background-color: #242424; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); +} +#syslog:focus { + outline: 0; +} +/* config changes */ +.uci-change-list { + font-family: monospace; +} +.uci-change-list ins, +.uci-change-legend-label ins { + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #0f0; + background-color: #cfc; +} +.uci-change-list del, +.uci-change-legend-label del { + font-style: normal; + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #f00; + background-color: #fcc; +} +.uci-change-list var, +.uci-change-legend-label var { + font-style: normal; + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #ccc; + background-color: #eee; +} +.uci-change-list var ins, +.uci-change-list var del { + font-style: normal; + padding: 0; + white-space: pre; + border: 0; +} +.uci-change-legend { + padding: 5px; +} +.uci-change-legend-label { + float: left; + width: 150px; +} +.uci-change-legend-label > ins, +.uci-change-legend-label > del, +.uci-change-legend-label > var { + display: block; + float: left; + width: 10px; + height: 10px; + margin-right: 4px; +} +.uci-change-legend-label var ins, +.uci-change-legend-label var del { + line-height: 0.4; + border: 0; +} +.uci-change-list var, +.uci-change-list del, +.uci-change-list ins { + padding: 0.5rem; +} +/* other fix */ +#iwsvg, +#iwsvg2, +#bwsvg { + border: thin solid #d4d4d4 !important; +} +#iwsvg, +[data-page="admin-status-realtime-bandwidth"] #bwsvg { + border-top: 0 !important; +} +.ifacebox { + line-height: 1.25; + display: inline-flex; + flex-direction: column; + min-width: 100px; + border-bottom: thin solid #ccc; + background-color: #f9f9f9; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.2); +} +.ifacebox-head { + padding: 0.25em; + background: #eee; +} +.ifacebox-head.active { + background: #5e72e4; + background: var(--bar-bg); +} +.ifacebox-head.active * { + color: #fff; + color: var(--white); +} +.ifacebox-body { + padding: 0.5em 1rem; + line-height: 1.6em; +} +.cbi-image-button { + margin-left: 0.5rem; +} +.zonebadge { + display: inline-block; + padding: 0.2rem 0.5rem; +} +.zonebadge .ifacebadge { + margin: 0.1rem 0.2rem; + padding: 0.2rem 0.3rem; + border: thin solid #6c6c6c; +} +.zonebadge > input[type="text"] { + min-width: 10rem; + margin-top: 0.3rem; + padding: 0.16rem 1rem; +} +.zonebadge > em, +.zonebadge > strong { + display: inline-block; + margin: 0 0.2rem; +} +.cbi-value-field .cbi-input-checkbox, +.cbi-value-field .cbi-input-radio { + margin-top: 0.1rem; +} +.cbi-value-field > ul > li { + display: flex; +} +.cbi-value-field > ul > li > label { + margin-top: 0.5rem; +} +.cbi-value-field > ul > li .ifacebadge { + margin-top: -0.5rem; + margin-left: 0.4rem; + background-color: #eee; +} +.cbi-section-table-row > .cbi-value-field .cbi-dropdown { + min-width: 7rem; +} +.cbi-section-create { + display: inline-flex; + align-items: center; + margin: 0.25rem 0 0.25rem 1rem; +} +.cbi-section-create > * { + margin: 0.5rem; +} +.cbi-section-remove { + padding: 0.5rem; +} +div.cbi-value var, +td.cbi-value-field var, +.td.cbi-value-field var { + font-style: italic; + color: #0069d6; +} +.cbi-optionals { + padding: 1rem 1rem 0 1rem; + border-top: thin solid #ccc; +} +.cbi-dropdown-container { + position: relative; +} +.cbi-tooltip-container, +span[data-tooltip], +span[data-tooltip] .label { + cursor: help !important; +} +.cbi-tooltip { + position: absolute; + z-index: 1000; + left: -1000px; + padding: 2px 5px; + transition: opacity 0.25s ease-out; + white-space: pre; + pointer-events: none; + opacity: 0; + border-radius: 3px; + background: #fff; + box-shadow: 0 0 2px #444; +} +.cbi-tooltip-container:hover .cbi-tooltip { + left: auto; + transition: opacity 0.25s ease-in; + opacity: 1; +} +.zonebadge .cbi-tooltip { + margin: -1.5rem 0 0 -0.5rem; + padding: 0.25rem; + background: inherit; +} +.zonebadge-empty { + color: #404040; + background: repeating-linear-gradient(45deg, rgba(204, 204, 204, 0.5), rgba(204, 204, 204, 0.5) 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); +} +.zone-forwards { + display: flex; + min-width: 10rem; +} +.zone-forwards > * { + flex: 1 1 45%; +} +.zone-forwards > span { + flex-basis: 10%; + padding: 0 0.25rem; + text-align: center; +} +.zone-forwards .zone-src, +.zone-forwards .zone-dest { + display: flex; + flex-direction: column; +} +.label { + font-size: 0.8rem; + font-weight: bold; + padding: 0.3rem 0.8rem; + white-space: nowrap; + text-decoration: none; + text-transform: uppercase; + color: #fff !important; + border-radius: 3px; + background-color: #bfbfbf; + text-shadow: none; +} +label > input[type="checkbox"], +label > input[type="radio"] { + position: relative; + top: 0.4rem; + right: 0.2rem; + margin: 0; + vertical-align: bottom; +} +label[data-index][data-depends] { + padding-right: 2em; +} +.showSide { + display: none; +} +.darkMask { + position: fixed; + z-index: 99; + display: none; + width: 100%; + height: 100%; + content: ""; + top: 0; + background-color: rgba(0, 0, 0, 0.56); +} +/* diagnostics */ +#diag-rc-output > pre, +#command-rc-output > pre, +[data-page="admin-services-wol"] .notice code { + font-size: 1.2rem; + font-size-adjust: 0.35; + line-height: normal; + display: block; + overflow-y: hidden; + width: 100%; + padding: 8.5px; + white-space: pre; + color: #eee; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); +} +[data-page="admin-network-diagnostics"] .table { + box-shadow: none; +} +input[name="ping"], +input[name="traceroute"], +input[name="nslookup"] { + width: 80%; +} +/* fix Main Login */ +.node-main-login .main { + top: 0; + height: 100% !important; +} +.node-main-login .main .main-left { + display: none; +} +.node-main-login .main .main-right { + width: 100%; +} +.node-main-login .main .main-right header { + background: none !important; + box-shadow: none !important; + display: none !important; +} +.node-main-login .main .main-right .login-bg { + display: block; + position: fixed; + width: 100%; + height: 100%; + left: 0px; + top: 0px; + background-size: cover; + background-color: #000; + background-position: top center; + transition: all 0.5s; +} +.node-main-login .main .main-right .login-bg.blur { + transform: scale(1.05); + -webkit-filter: blur(5px); + /* Chrome, Safari, Opera */ + filter: blur(5px); +} +.node-main-login .main .main-right #maincontent { + height: 100%; + padding-top: 23vh; + margin-top: 0rem; + background-color: transparent !important; + text-align: center; +} +.node-main-login .main .main-right #maincontent .container { + display: inline-block; + padding: 1rem; + position: relative; + margin-top: 2rem !important; + background-color: var(--secondary) !important; + border-radius: 0.375rem; + box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15); + text-align: left; +} +.node-main-login .main .main-right #maincontent .container .alert-message.warning { + position: absolute; + color: #fff; + width: calc(100% - 2rem); + box-sizing: border-box; + margin-top: 8rem; + border-radius: 5px !important; + padding: 0.5rem 2rem; + text-align: center; + background-color: var(--purple) !important; +} +.node-main-login .main .main-right #maincontent .container .alert-message.warning p { + color: #fff; +} +.node-main-login .main .main-right #maincontent .container .alert-message.error { + position: absolute; + color: #fff; + width: calc(100% - 2rem); + background-color: #f0ad4e; + border-color: #eea236; + box-sizing: border-box; + margin-top: -7rem; + border-radius: 5px !important; + padding: 1rem 2rem 0.5rem 2rem; + text-align: center; +} +.node-main-login .main .main-right #maincontent .container .alert-message.error p { + color: #fff; +} +.node-main-login .main .main-right #maincontent .container .alert-message.error h4 { + font-size: 1rem; +} +.node-main-login .main .main-right #maincontent .container .alert-message.error .btn { + height: auto; +} +.node-main-login .main .main-right #maincontent .container .cbi-map h2 { + width: 120px; + height: 120px; + color: #fff; + text-align: center; + letter-spacing: 4px; + display: block; + margin: -80px auto 15px auto; + padding: 0; + text-indent: -500px; + overflow: hidden; + border-radius: 60px; + border: #fff 3px solid; + background-image: url(head-icon.jpg); + background-size: cover; + box-shadow: 0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(156, 39, 176, 0.4); +} +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-map-descr { + text-align: center; + padding: 1rem; + color: #8898aa; +} +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section { + padding: 0.5rem; + margin: 0 ; + background: none !important; + box-shadow: none !important; +} +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node { + padding: 0; +} +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value { + display: block; + padding: 0; +} +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value * { + display: inline-block !important; +} +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-title { + display: none !important; +} +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field { + position: relative; + width: 20rem; + margin-bottom: 1em; +} +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field input { + font-size: 1rem; + line-height: 1.5; + display: block; + width: 100%; + height: calc(2.75rem + 2px); + padding: 0.625rem 0.75rem; + transition: all 0.15s cubic-bezier(0.68, -0.55, 0.265, 1.55); + color: #8898aa; + border: 0px solid #dee2e6; + border-radius: 0.25rem; + background-color: #fff; + background-clip: padding-box; + box-shadow: 0 1px 3px rgba(50, 50, 93, 0.15), 0 1px 0 rgba(0, 0, 0, 0.02); + box-sizing: border-box; + padding-left: 3em !important; + margin: 0; +} +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field input:focus { + color: #8898aa; + outline: 0; + background-color: #fff; + box-shadow: 0 3px 9px rgba(50, 50, 9, 0), 3px 4px 8px rgba(94, 114, 228, 0.1); +} +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field:before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e971"; + color: #adb5bd; + font-size: 1.5rem; + position: absolute; + z-index: 100; + left: 10px; + top: 10px; +} +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value.cbi-value-last .cbi-value-field:before { + content: "\e910"; +} +.node-main-login .main .main-right #maincontent .container .cbi-page-actions { + text-align: center; + padding-top: 0.5rem; +} +.node-main-login .main .main-right #maincontent .container .cbi-page-actions .cbi-button { + font-size: 1rem; + height: auto; + position: relative; + transition: all 0.15s ease; + letter-spacing: 0.2em; + text-transform: none; + padding: 0.375rem 1.25rem; + will-change: transform; + line-height: 1.5em; + border: thin solid var(--purple); + background-color: var(--purple); +} +.node-main-login .main .main-right #maincontent .container .cbi-page-actions .cbi-button.cbi-button-reset { + display: none !important; +} +.node-main-login .main .main-right #maincontent footer { + bottom: 0; + position: absolute; + width: 100%; + color: #fff; +} +.node-main-login .main .main-right #maincontent footer a { + color: #fff; +} +@media screen and (min-height: 585px) { + .node-main-login footer { + display: none; + position: absolute; + bottom: 0; + width: 100%; + } +} +/* fix status */ +.node-status-overview > .main fieldset:nth-child(4) .td:nth-child(2), +.node-status-processes > .main .table .tr .td:nth-child(3) { + white-space: normal; +} +/* fix system reboot */ +[data-page="admin-system-reboot"] p { + padding-left: 0rem; + color: #fff; +} +[data-page="admin-system-reboot"] .cbi-button { + background: #fb6340 !important; +} +[data-page="admin-system-reboot"] p > span { + position: relative; + top: 0.1rem; + left: 1rem; +} +/* samba */ +#cbi-samba [data-tab="template"] .cbi-value-field { + display: block; +} +#cbi-samba [data-tab="template"] .cbi-value-title { + width: auto; + padding-bottom: 0.6rem; +} +/* admin-system-admin-password */ +[data-page="admin-system-admin"] .cbi-map h2, +[data-page="admin-system-admin-password"] .cbi-map h2, +[data-page="admin-system-admin"] .cbi-map .cbi-map-descr, +[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr { + margin-left: 1.5rem; + color: #32325d; + color: var(--gray-dark); +} +/* software */ +[data-page="admin-system-opkg"] h2 { + margin-left: 1.5rem; + color: #32325d; + color: var(--gray-dark); +} +.controls { + margin: 0.5em 1rem 1em 1rem !important; +} +.controls > * > .btn:not([aria-label$="page"]) { + flex-grow: initial !important; + margin-top: 0.25rem; +} +.controls > #pager > .btn[aria-label$="page"] { + font-size: 1.4rem; + font-weight: bold; +} +.controls > * > label { + margin-bottom: 0.2rem; +} +[data-page="admin-system-opkg"] div.btn { + line-height: 3; + display: inline; + padding: 0.3rem 0.6rem; +} +[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), +[data-page="admin-system-opkg"] #maincontent > .container { + margin-top: 2rem; + padding-top: 0.1rem; +} +[data-page="admin-system-opkg"] #maincontent > .container { + margin: 2rem; + margin-bottom: 1rem; +} +.td.version, +.td.size { + white-space: normal !important; + word-break: break-word; +} +.cbi-tabmenu + .cbi-section { + margin-top: 0; +} +/* admin-system-crontab*/ +[data-page="admin-system-crontab"] #view p { + color: #fff; + margin-bottom: 1rem; +} +/*admin-system-flash*/ +[data-page="admin-system-flash"] .cbi-value { + padding: 0; +} +[data-page="admin-system-flash"] .cbi-section .cbi-section { + margin-top: 0; +} +[data-page="admin-system-flash"] .cbi-map-tabbed { + border-radius: 0.375rem; +} +[data-page="admin-system-flash"] legend { + display: block !important; + font-size: 1.2rem; + width: 100%; + display: block; + margin-bottom: 0; + padding: 1rem 0 1rem 1.5rem; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + line-height: 1.5; + margin-bottom: 0rem; + letter-spacing: 0.1rem; + color: #32325d; + font-weight: bold; +} +[data-page="admin-system-flash"] .cbi-section-descr { + font-weight: 600; + padding: 1rem 0 1rem 1.5rem; + color: #525f7f; +} +/* wireless overview */ +#cbi-wireless > #wifi_assoclist_table > .tr { + box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd; +} +#cbi-wireless > #wifi_assoclist_table > .tr.placeholder > .td { + right: 33px; + bottom: 33px; + left: 33px; + border-top: thin solid #ddd !important; +} +#cbi-wireless > #wifi_assoclist_table > .tr.table-titles { + box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd; +} +#cbi-wireless > #wifi_assoclist_table > .tr.table-titles > .th { + border-bottom: thin solid #ddd; + box-shadow: 0 -1px 0 0 #ddd; +} +#wifi_assoclist_table > .tr > .td[data-title="RX Rate / TX Rate"] { + width: 23rem; +} +[data-page="admin-network-dhcp"] .cbi-value { + padding: 0; +} +[data-page="admin-network-dhcp"] [data-tab-active="true"] { + padding: 1rem 0 !important; +} +/* firewall */ +#iptables { + margin: 0; +} +.Firewall form { + margin: 2rem 2rem 0 0; + padding: 0; + box-shadow: none; +} +#cbi-firewall-redirect table *, +#cbi-network-switch_vlan table *, +#cbi-firewall-zone table * { + font-size: small; +} +#cbi-firewall-redirect table input[type="text"], +#cbi-network-switch_vlan table input[type="text"], +#cbi-firewall-zone table input[type="text"] { + width: 5rem; +} +#cbi-firewall-redirect table select, +#cbi-network-switch_vlan table select, +#cbi-firewall-zone table select { + min-width: 3.5rem; +} +#cbi-network-switch_vlan .th, +#cbi-network-switch_vlan .td { + flex-basis: 12%; +} +#cbi-firewall-zone .table, +#cbi-network-switch_vlan .table { + display: block; +} +#cbi-firewall-zone .td, +#cbi-network-switch_vlan .td { + width: 100%; +} +[data-page="admin-network-firewall-custom"] #view p { + color: #fff; + margin-bottom: 1rem; +} +[data-page="admin-network-firewall-custom"] #view p textarea { + padding: 1rem; + border-radius: 0.375rem; +} +/* applyreboot fix */ +#applyreboot-container { + margin: 2rem; +} +#applyreboot-section { + line-height: 300%; + margin: 2rem; +} +/* openvpn bug fix */ +.OpenVPN a { + line-height: initial !important; +} +/* custom commands */ +.commandbox { + width: 24% !important; + margin: 10px 0 0 10px !important; + padding: 0.5rem 1rem; + border-bottom: thin solid #ccc; + background: #eee; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} +.commandbox h3 { + line-height: normal !important; + overflow: hidden; + margin: 6px 0 !important; + white-space: nowrap; + text-overflow: ellipsis; +} +.commandbox div { + left: auto !important; +} +.commandbox code { + position: absolute; + overflow: hidden; + max-width: 60%; + margin-left: 4px; + padding: 2px 3px; + white-space: nowrap; + text-overflow: ellipsis; +} +.commandbox code:hover { + overflow-y: auto; + max-height: 50px; + white-space: normal; +} +.commandbox p:first-of-type { + margin-top: -6px; +} +.commandbox p:nth-of-type(2) { + margin-top: 2px; +} +[data-page^="admin-system-commands"] .panel-title, +[data-page^="command-cfg"] .mobile-hide, +[data-page^="command-cfg"] .showSide { + display: none; +} +#command-rc-output .alert-message { + line-height: 1.42857143; + position: absolute; + top: 40px; + right: 32px; + max-width: 40%; + margin: 0; + animation: anim-fade-in 1.5s forwards; + word-break: break-word; + opacity: 0; +} +@keyframes anim-fade-in { + 100% { + opacity: 1; + } +} +/* other fix */ +input[type="checkbox"] { + appearance: none !important; + -webkit-appearance: none !important; + border: 1px solid #dee2e6; + width: 16px !important; + height: 16px !important; + padding: 0; + cursor: pointer; + transition: all 0.2s; + margin: 1rem 0 0 0; +} +input[type="checkbox"]:checked { + border: 1px solid #5e72e4; + background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important; + background-color: #5e72e4; + background-size: 70%; + background-repeat: no-repeat; + background-position: center; +} +/* IE hacks */ +@media all and (-ms-high-contrast: none) { + .main > .main-left > .nav > .slide > .menu::before { + top: 30.25%; + } + .main > .main-left > .nav > li:last-child::before { + top: 20%; + } + .showSide::before { + top: -12px; + } +} +@media screen and (max-width: 1600px) { + header > .fill > .container > #logo { + margin: 0 2.5rem 0 0.5rem; + } + .main-left { + width: calc(0% + 13rem); + } + .main-right { + width: calc(100% - 13rem); + } + .btn:not(button), + .cbi-button { + font-size: 0.8rem; + padding: 0.2rem 0.6rem; + } + .label { + padding: 0.2rem 0.6rem; + } + .cbi-value-title { + width: 15rem; + padding-right: 0.6rem; + } + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"] { + min-width: 18rem; + } + #cbi-firewall-zone .cbi-input-select { + min-width: 9rem; + } + .cbi-input-textarea { + font-size: small; + } + .node-admin-status > .main fieldset li > a { + padding: 0.3rem 0.6rem; + } +} +@media screen and (max-width: 1366px) { + header > .fill > .container { + cursor: default; + } + .main-left { + width: calc(0% + 13rem); + } + .main-right { + width: calc(100% - 13rem); + } + .tabs > li > a, + .cbi-tabmenu > li > a { + padding: 0.2rem 0.5rem; + } + .panel-title { + font-size: 1.1rem; + padding-bottom: 1rem; + } + table { + font-size: 0.7rem !important; + width: 100% !important; + } + .table .cbi-input-text { + width: 100%; + } + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"] { + min-width: 16rem; + } + #cbi-firewall-zone .cbi-input-select { + min-width: 4rem; + } + .main > .main-left > .nav > li, + .main > .main-left > .nav > li a, + .main > .main-left > .nav > .slide > .menu, + .main > .main-left > .nav > li > [data-title="Logout"] { + font-size: 0.9rem; + } + .main > .main-left > .nav > .slide > .slide-menu > li > a { + font-size: 0.7rem; + } + #modal_overlay { + top: 0rem; + } + [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) { + display: block; + } + [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table), + [data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table), + [data-page="admin-network-hosts"] .table, + [data-page="admin-network-routes"] .table { + overflow-y: visible; + } + .commandbox { + width: 32% !important; + } + .btn:not(button), + .cbi-button { + font-size: 0.8rem; + padding: 0.2rem 0.6rem; + } +} +@media screen and (max-width: 1152px) { + header > .fill > .container > #logo { + display: none; + } + header > .fill > .container > .brand { + position: relative; + } + html, + .main { + overflow-y: visible; + } + .main > .loading > span { + top: 25%; + } + .main-left { + width: calc(0% + 13rem); + } + .main-right { + width: calc(100% - 13rem); + } + body:not(.logged-in) .showSide { + visibility: hidden; + width: 0; + margin: 0; + } + .node-main-login > .main .cbi-value-title { + text-align: left; + } + .cbi-value-title { + width: 12rem; + padding-right: 1rem; + } + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"] { + width: 16rem; + min-width: 16rem; + } + /*.cbi-value input[type="password"],*/ + .cbi-value input[name^="pw"], + .cbi-value input[data-update="change"]:nth-child(2) { + width: 13rem !important; + min-width: 13rem; + } + #diag-rc-output > pre, + #command-rc-output > pre, + [data-page="admin-services-wol"] .notice code { + font-size: 1rem; + } + .table { + display: block; + } + .Interfaces .table { + overflow-x: hidden; + } + #packages.table { + display: grid; + } + .tr { + display: flex; + flex-direction: row; + flex-wrap: wrap; + } + .Overview .table[width="100%"] > .tr { + flex-wrap: nowrap; + } + .tr.placeholder { + border-bottom: thin solid #ddd; + } + .tr.placeholder > .td, + #cbi-firewall .tr > .td, + #cbi-network .tr:nth-child(2) > .td, + .cbi-section #wifi_assoclist_table .tr > .td { + border-top: 0; + } + .th, + .td { + display: inline-block; + align-self: flex-start; + flex: 2 2 25%; + text-overflow: ellipsis; + word-wrap: break-word; + } + .td select, + .td input[type="text"] { + width: 100%; + word-wrap: normal; + } + .td [data-dynlist] > input, + .td input.cbi-input-password { + width: calc(100% - 1.5rem); + } + .td[data-type="button"], + .td[data-type="fvalue"] { + flex: 1 1 12.5%; + text-align: left; + } + .th.cbi-value-field, + .td.cbi-value-field, + .th.cbi-section-table-cell, + .td.cbi-section-table-cell { + flex-basis: auto; + padding-top: 1rem; + } + .cbi-section-table-row { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + } + .td.cbi-value-field, + .cbi-section-table-cell { + display: inline-block; + flex: 10 10 auto; + flex-basis: 50%; + text-align: center; + } + .td.cbi-section-actions { + vertical-align: bottom; + } + .tr.table-titles, + .tr.cbi-section-table-titles, + .tr.cbi-section-table-descr { + display: none; + } + .tr[data-title]::before, + .tr.cbi-section-table-titles.named::before { + font-size: 0.9rem; + display: block; + flex: 1 1 100%; + border-bottom: thin solid rgba(0, 0, 0, 0.26); + background: #e9ecef; + } + .td[data-title], + [data-page^="admin-status-realtime"] .td[id] { + text-align: left; + } + .td[data-title]::before { + display: block; + } + .cbi-button + .cbi-button { + margin-left: 0; + } + .td.cbi-section-actions > * > *, + .td.cbi-section-actions > * > form > * { + margin: 2.1px 3px; + } + .Firewall form { + position: static !important; + margin: 0 0 2rem 0; + padding: 2rem; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + } + .Firewall form input { + width: 100% !important; + margin: 0; + margin-top: 1rem; + } + .Firewall .center, + .Firewall .center::before { + text-align: left !important; + } + .commandbox { + width: 100% !important; + margin-left: 0 !important; + } + .btn:not(button), + .cbi-button { + font-size: 0.8rem; + padding: 0.2rem 0.6rem; + } +} +@media screen and (max-width: 768px) { + body { + font-size: 0.8rem; + } + .cbi-progressbar::after { + font-size: 0.95em; + line-height: 1.5; + } + .main-left { + position: fixed; + z-index: 100; + width: 0; + } + .main-right { + width: 100%; + } + .showSide { + padding: 0.1rem; + position: relative; + z-index: 99; + display: inline-block !important; + } + .showSide::before { + font-family: 'argon' !important; + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e20e"; + font-size: 1.7rem; + } + header > .fill > .container > .brand { + display: inline-block; + } + .main > .main-left > .nav > .slide > .menu, + .main > .main-left > .nav > li > [data-title="Logout"] { + font-size: 1.2rem; + } + .main > .main-left > .nav > .slide > .slide-menu > li > a { + font-size: 0.8rem; + } + .cbi-section > div { + overflow-x: auto; + } +} +@media screen and (max-width: 600px) { + .mobile-hide { + display: none; + } + #maincontent > .container { + margin: 0 1rem 1rem 1rem; + } + .cbi-value-title { + text-align: left; + } + [data-page="admin-system-flash"] legend { + padding: 1rem 0 1rem 1rem; + } + [data-page="admin-system-flash"] .cbi-section-descr { + padding: 1rem 0 1rem 1rem; + } + [data-page="admin-system-flash"] .cbi-value { + padding: 0 1rem; + } + [data-page="admin-network-dhcp"] [data-tab-active="true"] { + padding: 1rem 1rem !important; + } + body { + overflow-x: hidden; + } + .node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field { + width: 16rem; + } + .node-main-login footer { + display: none; + } +} +@media screen and (min-width: 600px) { + ::-webkit-scrollbar { + width: 10px; + height: 10px; + } + ::-webkit-scrollbar, + ::-webkit-scrollbar-corner { + background: transparent; + } + ::-webkit-scrollbar-thumb { + background: #9e9e9e; + } + ::-webkit-scrollbar-thumb:hover { + background: #757575; + } + ::-webkit-scrollbar-thumb:active { + background: #424242; + } +} +/*# sourceMappingURL=./cascade.css.map */ \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/cascade.css.map b/luci-theme-argon/htdocs/luci-static/argon/cascade.css.map new file mode 100644 index 000000000..e2a8a3271 --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/cascade.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["cascade.less"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;YA4BY;;;;AAKZ;EACI,aAAa,OAAb;EACA,SAAS,yBAAT;EACA,SAAS,gCAAgC,OAAO,0BACxC,0BAA0B,OAAO,iBACjC,2BAA2B,OAAO,aAClC,gCAAgC,OAAO,MAH/C;EAIA,mBAAA;EACA,kBAAA;EACA,mBAAA;;AAGJ;EACI,aAAa,cAAb;EACA,SAAS,iCAAiC,OAAO,0BACzC,2BAA2B,OAAO,aAClC,0BAA0B,OAAO,iBACjC,uCAAuC,OAAO,MAHtD;EAIA,mBAAA;EACA,kBAAA;;AAGJ;AACA;;EAEI,aAAa,OAAb;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;EACA,oBAAA;EACA,cAAA;;EAGA,mCAAA;EACA,kCAAA;;AAGJ,iBAAiB;EACb,SAAS,OAAT;;AAGJ,iBAAiB;EACb,SAAS,OAAT;;AAGJ,UAAU;EACN,SAAS,OAAT;;AAGJ,cAAc;EACV,SAAS,OAAT;;AAGJ,aAAa;EACT,SAAS,OAAT;;AAGJ,YAAY;EACR,SAAS,OAAT;;AAGJ,UAAU;EACN,SAAS,OAAT;;AAGJ,SAAS;EACL,SAAS,OAAT;;AAGJ,aAAa;EACT,SAAS,OAAT;;AAGJ,YAAY;EACR,SAAS,OAAT;;AAGJ,WAAW;EACP,SAAS,OAAT;;AAGJ,eAAe;EACX,SAAS,OAAT;;AAGJ,YAAY;EACR,SAAS,OAAT;;AAGJ,aAAa;EACT,SAAS,OAAT;;AAGJ,cAAc;EACV,SAAS,OAAT;;AAGJ,YAAY;EACR,SAAS,OAAT;;AAGJ,SAAS;EACL,SAAS,OAAT;;AAGJ,aAAa;EACT,SAAS,OAAT;;AAGJ,gBAAgB;EACZ,SAAS,OAAT;;AAGJ,iBAAiB;EACb,SAAS,OAAT;;AAGJ,cAAc;EACV,SAAS,OAAT;;AAGJ,UAAU;EACN,SAAS,OAAT;;AAGJ,cAAc;EACV,SAAS,OAAT;;AAIJ;EACI,kBAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;EACA,QAAA;EACA,uBAAA;EACA,mBAAmB,cAAnB;EACA,WAAW,cAAX;;AAGJ,gBAAiB;EACb,WAAA;EACA,UAAA;EACA,WAAA;EACA,kBAAA;EACA,mBAAmB,UAAnB;EACA,eAAe,UAAf;EACA,WAAW,UAAX;;AAEJ,gBAAiB,SAAQ;EACrB,SAAS,EAAT;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,yBAAA;EACA,6DAAA;EACA,qDAAA;EACA,mCAAA;EACA,+BAAA;EACA,2BAAA;;AAEJ,gBAAiB;EACb,mBAAmB,WAAW,cAA9B;EACA,WAAW,WAAW,cAAtB;;AAEJ,gBAAiB;EACb,mBAAmB,WAAW,eAA9B;EACA,WAAW,WAAW,eAAtB;;AAEJ,gBAAiB;EACb,mBAAmB,WAAW,eAA9B;EACA,WAAW,WAAW,eAAtB;;AAEJ,gBAAiB,UAAS;EACtB,6BAAA;EACA,qBAAA;;AAEJ,gBAAiB,UAAS;EACtB,6BAAA;EACA,qBAAA;;AAEJ,gBAAiB,UAAS;EACtB,6BAAA;EACA,qBAAA;;AAGJ;EACI;EAAI;IACA,mBAAmB,mBAAmB,gBAAtC;IACA,WAAW,mBAAmB,gBAA9B;IACA,UAAA;;EACF;EAAK;IACH,mBAAmB,mBAAmB,aAAtC;IACA,WAAW,mBAAmB,aAA9B;IACA,UAAA;;EACF;EAAK;IACH,mBAAmB,mBAAmB,eAAtC;IACA,WAAW,mBAAmB,eAA9B;IACA,UAAA;;;AAIR;EACI;EAAI;IACA,mBAAmB,mBAAmB,gBAAtC;IACA,WAAW,mBAAmB,gBAA9B;IACA,UAAA;;EACF;EAAK;IACH,mBAAmB,mBAAmB,aAAtC;IACA,WAAW,mBAAmB,aAA9B;IACA,UAAA;;EACF;EAAK;IACH,mBAAmB,mBAAmB,eAAtC;IACA,WAAW,mBAAmB,eAA9B;IACA,UAAA;;;AAKR;EACI,kBAAA;EACA,cAAA;;AAGJ;EACI,kBAAA;;AAGJ;EACI,2BAAA;;AAGJ;EACI,wBAAA;;AAGJ;EACI,2BAAA;;AAGJ;AACA;EACI,mBAAA;EACA,mBAAA;EACA,cAAA;EACA,kBAAA;EACA,sBAAA;;AAGJ;EACI,iBAAA;;AAGJ,GAAG;EACC,WAAA;;AAGJ,GAAG,YAAY;EACX,cAAA;EACA,kBAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,iBAAA;EACA,6BAAA;EACA,mBAAA;;AAGJ,GAAG;EACC,qBAAA;;AAGJ,MAAM;AACN,GAAG;AACH,GAAG;EACC,UAAA;;AAGJ,MAAM;AACN,GAAG;AACH,GAAG;EACC,WAAA;;AAGJ;EACI,yBAAA;;AAGJ;EACI,yBAAA;;AAGJ;EACI,yBAAA;;AAGJ;EACI,0BAAA;;AAGJ;EACI,0BAAA;;AAGJ;EACI,0BAAA;;AAGJ;EACI,0BAAA;;AAGJ;EACI,0BAAA;;AAGJ;EACI,0BAAA;;AAGJ;EACI,4BAAA;;AAGJ;EACI,sBAAA;EACA,SAAA;EACA,UAAA;EACA,cAAA;EACA,OAAO,gBAAP;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,oBAAA;EACA,mBAAA;EACA,gBAAA;EACA,cAAA;;AAGJ;EACI,kBAAA;EACA,8BAAA;EACA,0BAAA;;AAGJ;EACI,iBAAA;EACA,yBAAA;;AAGJ;AACA;EACI,aAAa,mBAAmB,uBAAuB,cAAc,kBAAkB,aAAa,kBAApG;EACA,aAAa,gBAAb;EACA,YAAA;EACA,SAAA;EACA,UAAA;;AAGJ;EACI,uBAAA;EACA,WAAA;EACA,uBAAA;EACA,sBAAA;EACA,sBAAA;;AAGJ;AACA;AACA;AACA;AACA;EACI,mBAAA;EACA,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,cAAA;EACA,yBAAA;EAEA,sBAAA;EACA,UAAA;EACA,sBAAA;EACA,gBAAA;EACA,iCAAA;;AAGJ;AACA;EACI,cAAA;EACA,eAAA;;AAGJ,MAAM,IAAI,uBAAuB;AACjC,KAAK,IAAI,aAAa;AACtB,aAAa;EACT,qBAAA;EACA,cAAc,cAAd;EACA,6EAAA;;AAGJ;AACA,MAAM;EACF,YAAA;;AAGJ;EACI,cAAA;;AAGJ;EACI,eAAA;EACA,sBAAA;EACA,gBAAA;EACA,cAAA;EACA,kBAAA;EACA,gBAAA;;AAGJ;EACI,YAAA;EACA,0BAAA;EACA,WAAA;;AAGJ;EACI,cAAA;EACA,YAAA;EACA,kBAAA;;AAGJ;AACA;EACI,WAAA;;AAIJ;EACI,iBAAA;EACA,gBAAA;EACA,aAAA;EACA,iBAAA;EACA,mBAAA;EACA,WAAA;EACA,yBAAA;;AAGJ,MAAM;EACF,qBAAA;EACA,WAAA;;AAGJ;EACI,cAAA;EACA,uBAAA;EACA,mBAAA;;AAGJ;EACI,kBAAA;EACA,MAAA;EACA,SAAA;EACA,gBAAA;EACA,YAAA;;AAGJ,KAAK;EACD,eAAA;EACA,aAAA;EACA,MAAA;EACA,cAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,yBAAA;;AAGJ,KAAK,WAAS;EACV,sBAAA;EACA,eAAA;EACA,sBAAA;EACA,kBAAA;EACA,UAAA;EACA,cAAA;EACA,kBAAA;EACA,WAAA;;AAGJ,KAAK,WAAS,OAAK;EACf,kBAAA;EACA,WAAA;EACA,aAAA;EACA,qBAAA;EACA,cAAA;EACA,eAAA;EACA,kBAAA;EACA,yCAAA;EACA,mDAAA;;AAGJ;EACI;IACI,mBAAmB,SAAnB;IACA,eAAe,SAAf;IACA,WAAW,SAAX;;EAGJ;IACI,mBAAmB,cAAnB;IACA,eAAe,cAAf;IACA,WAAW,cAAX;;;AAIR;EAEI,MAAA;EACA,WAAA;EAEA,UAAA;EACA,OAAO,gBAAP;EACA,YAAA;EACA,sBAAA;EACA,kBAAkB,oBAAlB;EACA,gDAAA;EACA,gBAAA;EACA,eAAA;EACA,YAAA;;AAbJ,UAeI;EACI,eAAA;EACA,kBAAA;;AAjBR,UAeI,gBAII;EACI,iBAAA;EACA,cAAA;EACA,aAAa,cAAb;EACA,qBAAA;EACA,kBAAA;EACA,eAAA;EACA,2BAAA;EACA,mBAAA;;AAKZ;EACI,YAAA;EACA,UAAA;EACA,OAAO,kBAAP;EACA,YAAA;EACA,yBAAA;EACA,oBAAA;;AAGJ,WAAW;EACP,kBAAA;EACA,WAAA;EACA,kBAAA;;AAGJ;EACI,YAAA;;AAGJ;EACI,WAAA;;AAGJ,OAAO,IAAI;EACP,mBAAA;;AAGJ;EACI,oBAAA;;AAGJ;EACI,WAAA;EACA,OAAO,mBAAP;EACA,oBAAA;;AAEA,MAAC;EACG,yBAAA;EACA,kBAAkB,cAAlB;;AAPR,MAUI;EACI,iBAAA;EACA,kDAAA;;AAZR,MAUI,MAII;EACI,YAAA;EACA,eAAA;;AAhBZ,MAUI,MAII,WAII;EACI,aAAA;EACA,WAAA;EACA,iBAAA;;AArBhB,MAUI,MAII,WAUI;EACI,iBAAA;EACA,WAAA;EACA,aAAa,cAAb;EACA,qBAAA;EACA,kBAAA;EACA,eAAA;EACA,2BAAA;EACA,aAAA;;AAhChB,MAUI,MAII,WAqBI;EACI,YAAA;EACA,gBAAA;EACA,aAAA;;AAtChB,MAUI,MAgCI;EACI,kBAAA;EACA,QAAA;EACA,UAAA;EACA,YAAA;;AA9CZ,MAUI,MAgCI,QAMI;EACI,kBAAA;EACA,WAAA;EACA,WAAA;EACA,mBAAA;EACA,eAAA;;AAMhB;EACI,aAAA;EACA,mBAAA;;AAFJ,gBAGI;EACI,WAAA;;AAIR;EACI,yBAAA;;AAGJ;EACI,yBAAA;;AAGJ;EACI,yBAAA;;AAGJ;EACI,yBAAA;EACA,WAAA;;AAGJ;EACI,WAAA;;AAGJ;AACA;EACI,iBAAA;EACA,kBAAA;EACA,aAAA;EACA,SAAA;EACA,uBAAA;EACA,sBAAA;EACA,0EAAA;EACA,uCAAA;;AAEA,MAAC;AAAD,cAAC;EACG,yBAAA;;AAZR,MAeI;AAdJ,cAcI;EACI,iCAAA;;AAhBR,MAmBI;AAlBJ,cAkBI;EACI,YAAA;;AAIR,cAAc;EACV,eAAA;EACA,iBAAA;;AAGJ,cAAc;EACV,gBAAA;;AAGJ,cAAe;EACX,sBAAA;;AAGJ,UAAW;AACX,UAAW;EACP,gBAAA;;;;;AAQJ,KACI;EACI,oBAAA;;AAFR,KACI,WAGI;EACI,kBAAA;;AALZ,KACI,WAGI,KAGI;EACI,oBAAA;EACA,eAAA;EACA,yBAAA;EACA,sBAAA;EACA,qBAAA;EACA,iBAAA;;AAbhB,KACI,WAGI,KAGI,GAQI;EACI,cAAA;EACA,cAAA;EACA,OAAO,iBAAP;;AAGJ,KApBZ,WAGI,KAGI,GAcK;EACG,UAAA;;AADJ,KApBZ,WAGI,KAGI,GAcK,MAGG;EACI,aAAA;;AAJR,KApBZ,WAGI,KAGI,GAcK,MAOG;EACI,cAAA;EACA,mCAAA;EACA,mCAAA;EACA,uBAAA;EACA,qBAAA;EACA,eAAA;EACA,eAAA;EACA,oBAAA;EACA,kBAAA;;AAEA,KAtCpB,WAGI,KAGI,GAcK,MAOG,MAWK;EACG,WAAA;EACA,mBAAA;EACA,YAAY,cAAZ;;AAEA,KA3CxB,WAGI,KAGI,GAcK,MAOG,MAWK,OAKI;EACG,WAAA;;AAGJ,KA/CxB,WAGI,KAGI,GAcK,MAOG,MAWK,OASI;EACG,WAAW,aAAX;EACA,WAAA;;AAIR,KArDpB,WAGI,KAGI,GAcK,MAOG,MA0BK;EACG,eAAA;EACA,WAAA;EACA,mBAAA;EACA,YAAY,cAAZ;;AAEA,KA3DxB,WAGI,KAGI,GAcK,MAOG,MA0BK,MAMI;EACG,WAAA;;AAIR,KAhEpB,WAGI,KAGI,GAcK,MAOG,MAqCK;EACG,aAAa,OAAb;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;EACA,oBAAA;EACA,cAAA;;EAEA,mCAAA;EACA,kCAAA;EACA,kBAAA;EACA,YAAA;EACA,gBAAA;EACA,oBAAA;;AAGJ,KAhFpB,WAGI,KAGI,GAcK,MAOG,MAqDK;EACG,kBAAA;EACA,aAAA;EACA,WAAA;EACA,aAAa,OAAb;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;EACA,oBAAA;EACA,cAAA;;EAIA,kCAAA;EACA,SAAS,OAAT;EACA,0BAAA;EACA,cAAA;EACA,oBAAA;EACA,mCAAA;EACA,oBAAA;;AA/EZ,KApBZ,WAGI,KAGI,GAcK,MAmFG,MAAK,mBAAmB;EACpB,SAAS,OAAT;EACA,cAAA;;AArFR,KApBZ,WAGI,KAGI,GAcK,MAwFG,MAAK,mBAAmB;EACpB,SAAS,OAAT;EACA,cAAA;;AA1FR,KApBZ,WAGI,KAGI,GAcK,MA6FG,MAAK,qBAAqB;EACtB,SAAS,OAAT;EACA,cAAA;;AA/FR,KApBZ,WAGI,KAGI,GAcK,MAkGG,MAAK,gBAAgB;EACjB,SAAS,OAAT;EACA,cAAA;;AApGR,KApBZ,WAGI,KAGI,GAcK,MAuGG,MAAK,gBAAgB;EACjB,SAAS,OAAT;EACA,cAAA;;AAzGR,KApBZ,WAGI,KAGI,GAcK,MA4GG,MAAK,oBAAoB;EACrB,SAAS,OAAT;EACA,cAAA;;AA9GR,KApBZ,WAGI,KAGI,GAcK,MAiHG,MAAK,8BAA8B;EAC/B,SAAS,OAAT;EACA,cAAA;;AAKJ,KA5IhB,WAGI,KAGI,GAcK,MAwHI;EACG,gBAAA;;AAzHR,KApBZ,WAGI,KAGI,GAcK,MA4HG;EACI,yBAAA;EACA,oBAAA;;AA9HR,KApBZ,WAGI,KAGI,GAcK,MA4HG,YAII;EACI,kBAAA;EACA,uBAAA;EACA,gBAAA;EACA,oBAAA;EACA,gBAAA;;AArIZ,KApBZ,WAGI,KAGI,GAcK,MA4HG,YAII,GAOI;EACI,mBAAA;EACA,qBAAA;;AAGJ,KAhKxB,WAGI,KAGI,GAcK,MA4HG,YAII,GAYK;EACG,SAAS,EAAT;EACA,kBAAA;EACA,OAAA;EACA,SAAA;EACA,QAAA;EACA,WAAA;EACA,yBAAA;EACA,oBAAA;;AAGJ,KA3KxB,WAGI,KAGI,GAcK,MA4HG,YAII,GAuBK;EACG,gBAAA;;AAEA,KA9K5B,WAGI,KAGI,GAcK,MA4HG,YAII,GAuBK,MAGI;EACG,WAAA;;AA3JpB,KApBZ,WAGI,KAGI,GAcK,MA4HG,YAqCI;EACI,gBAAA;EAEA,OAAO,iBAAP;;AApKZ,KApBZ,WAGI,KAGI,GAcK,MA4HG,YAqCI,QAKI;EACI,OAAO,iBAAP;;AAGJ,KA9LxB,WAGI,KAGI,GAcK,MA4HG,YAqCI,QASK;EACG,SAAS,EAAT;EACA,kBAAA;EACA,OAAA;EACA,SAAA;EACA,WAAA;EACA,WAAA;EACA,yBAAA;EACA,oBAAA;;AAGJ,KAzMxB,WAGI,KAGI,GAcK,MA4HG,YAqCI,QAoBK;EAEG,gBAAA;;AAEA,KA7M5B,WAGI,KAGI,GAcK,MA4HG,YAqCI,QAoBK,MAII;EACG,WAAA;;AAWpC;EACI,SAAA;EACA,qBAAA;;AAEJ;EACI,cAAA;EACA,mCAAA;EACA,mCAAA;EACA,uBAAA;EACA,qBAAA;EACA,eAAA;EACA,oBAAA;EACA,kBAAA;;AAGJ,OAAO;EACH,aAAa,OAAb;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;EACA,oBAAA;EACA,cAAA;;EAEA,mCAAA;EACA,kCAAA;EACA,kBAAA;EACA,YAAA;EACA,gBAAA;EACA,oBAAA;EACA,SAAS,OAAT;EACA,cAAA;;AAIJ,IAAI,gBAAgB,QAAM,aAAW,OAAK,SAAO,QAAM;EACnD,sCAAA;;AAGJ,IAAI,gBAAgB,QAAM,aAAW,OAAK,SAAO,QAAM,OAAO;EAC1D,sCAAA;;AAGJ,KAAK,aAAW,2BAA2B,OAAK,SAAO,QAAM;EACzD,aAAA;;AAMJ,YAAY;EACR,wBAAA;;AAGJ;EACI,mBAAA;;AAGJ;EACI,qBAAA;;AAGJ;EACI,eAAA;EACA,oBAAA;EACA,8BAAA;;AAGJ;EACI,WAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;;AAIJ;EACI,iBAAA;EACA,kBAAA;EACA,mCAAA;;AAGJ;EACI,iBAAA;EACA,kBAAA;EACA,mCAAA;;AAGJ;EACI,eAAA;EACA,kBAAA;EACA,oBAAA;;AAGJ;AACA;AACA;AACA,SAAU;AACV,YAAY;AACZ,aAAa;AACb,aAAa;AACb;AACA,iCAAiC,IAAI,kBAAmB,SAAQ,IAAI;AACpE,+BAAgC,aAAY;EACxC,oBAAA;EACA,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,kBAAA;EACA,gBAAA;EACA,aAAA;EACA,SAAA;EAEA,uBAAA;EACA,sBAAA;EACA,gDAAA;;AAGJ,UAAW;AACX,YAAa;EACT,UAAA;EACA,gBAAA;;AAGJ,UAAW;EACP,cAAA;;AAGJ;AACA;EACI,gBAAA;EACA,uBAAA;EACA,iBAAA;EACA,WAAA;;AAGJ,cAAc;EACV,gBAAA;;AAGJ,YAAY;EACR,wBAAA;;AAGJ,QAAQ;AACR,YAAY;EACR,SAAA;EACA,UAAA;EACA,SAAA;EACA,gBAAA;;AAGJ,YAAY,KAAG;AACf;EACI,iBAAA;EACA,cAAA;EACA,cAAA;EACA,WAAA;EACA,SAAA;EACA,gBAAA;EACA,uBAAA;EACA,cAAA;EACA,OAAO,gBAAP;;AAIJ,YAAY,KAAG;AACf,YAAY,KAAG;AACf,YAAY,IAAE;AACd,gBAAgB,KAAG;AACnB,gBAAgB,KAAG;AACnB,gBAAgB,IAAE;EACd,iBAAA;;AAGJ;EACI,iBAAA;EACA,yBAAA;;AAGJ;AACA;EACI,kBAAA;EACA,WAAA;;AAIJ,KAAK,QAAM,KAAG;AACd,KAAK,QAAM,KAAG;AACd,KAAK,QAAM,KAAG;AACd,KAAK,QAAM,KAAG;AACd,KAAK,QAAM,KAAG;AACd,KAAK,QAAM,KAAG;AACd,MAAM,SAAO,MAAI;AACjB,MAAM,SAAO,MAAI;AACjB,MAAM,SAAO,MAAI;AACjB,MAAM,SAAO,MAAI;AACjB,MAAM,SAAO,MAAI;AACjB,MAAM,SAAO,MAAI;AACjB,MAAM,MAAI,MAAI;AACd,MAAM,MAAI,MAAI;EACV,eAAA;;AAGJ,UAAU,eAAa,cAAc,SAAO,cAAc,MAAI;EAC1D,eAAA;;AAGJ;EACI,gBAAA;EACA,oBAAA;EACA,cAAA;;AAGJ,EAAE;AACF,EAAE;AACF,GAAG;AACH,GAAG;AACH,sBAAsB;AACtB,aAAa,wBAAsB,MAAI,UAAU;EAC7C,2BAAA;EACA,qBAAA;;AAGJ,aAAc;AACd,YAAa,IAAG,YAAY;AAC5B,MAAM,cAAc,MAAI,YAAY;AACpC,uCAAwC,IAAG;AAC3C,GAAG,aAAa;AAChB,GAAG,yBAAyB;EACxB,wBAAA;EACA,yBAAA;EACA,qBAAA;EACA,mBAAA;;AAGJ,MAAM,cAAc,MAAI,YAAY;EAChC,cAAA;;AAGJ;EACI,mBAAA;EACA,6BAAA;EACA,mBAAA;;AAGJ,sBAAsB;EAClB,gBAAA;;AAGJ,sBAAsB,mBAAkB;AACxC,sBAAsB,mBAAkB;AACxC,sBAAsB,mBAAkB;AACxC,sBAAsB,mBAAkB;EACpC,WAAA;;AAGJ,sBAAsB,mBAAkB,eAAc;AACtD,sBAAsB,mBAAkB,MAAK;EACzC,OAAO,mBAAP;;AAGJ,sBAAuB;EACnB,6BAAA;;AAGJ,GAAG,QAAM,QAAM,KAAG,YAAY;AAC9B,GAAG,SAAO,MAAI,YAAY;EACtB,yBAAA;;;AAIJ,KAAM;AACN,MAAO;AACP,gBAAiB;AACjB,gBAAiB;AACjB,EAAE,QAAM,QAAM,KAAG;AACjB,GAAG,SAAO,SAAO,MAAI;AACrB,gBAAgB,QAAM,QAAM,KAAG;AAC/B,gBAAgB,SAAO,SAAO,MAAI;EAC9B,SAAA;;;AAIJ;AACA;AACA,KAAK;EACD,iBAAA;EACA,qBAAA;EACA,sBAAA;EACA,iBAAA;EACA,eAAA;EACA,yBAAA;EACA,sBAAA;EACA,qBAAA;EACA,iBAAA;EACA,gCAAA;EACA,kBAAA;EACA,sBAAA;EACA,mBAAA;EACA,qBAAA;EACA,yBAAA;EACA,0BAAA;EACA,SAAA;EACA,qBAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,8BAAA;EACA,0BAAA;;AAGJ;AACA;EACI,iBAAA;EACA,qBAAA;EACA,YAAA;EACA,sBAAA;EACA,6BAAA;EACA,iDAAA;EACA,0BAAA;;AAGJ;EACI,WAAW,UAAX;;AAGJ,WAAW,IAAI;EACX,mCAAA;;AAGJ,WAAW;EACP,mBAAA;;AAGJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,WAAW;AACX,WAAW;AACX,WAAW;AACX,KAAK,MAAM;AACX,KAAK,MAAM;AACX,KAAK,OAAO;AACZ,iBAAkB,kBAAiB,mBAAiB;AACpD,iBAAkB,kBAAiB,mBAAiB;AACpD,iBAAkB,kBAAiB,mBAAiB;EAChD,qBAAA;EACA,UAAA;;AAGJ,IAAI;AACJ,IAAI;AACJ,WAAW;AACX,WAAW;AACX,KAAK,MAAM;AACX,KAAK,MAAM;EACP,qEAAA;;AAGJ,IAAI;AACJ,WAAW;AACX,KAAK,OAAO;EACR,0EAAA;;AAGJ,cAAc;AACd,cAAc;EACV,sEAAA;;AAGJ,cAAc;EACV,4EAAA;;AAGJ,IAAI;AACJ,WAAW;EACP,mBAAA;EACA,oBAAA;EACA,YAAA;EACA,gBAAA;;;AAIJ,cAAe;AACf,MAAO,IAAG;AACV;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,WAAW;AACX,WAAW;EACP,iBAAA;EACA,WAAA;EACA,0BAAA;EACA,yBAAA;;;AAIJ,IAAI;AACJ,iBAAkB;AAClB,iBAAkB,kBAAiB;AACnC;AACA;AACA;AACA;AACA,WAAW;AACX,WAAW;AACX,WAAW;AACX,mBAAmB;EACf,mBAAA;EACA,WAAA;EACA,0BAAA;EACA,mBAAmB,cAAnB;EACA,yBAAA;EACA,kBAAkB,cAAlB;;;AAKJ,iBAAkB;AAClB,oBAAqB;AACrB;AACA;AACA;AACA;AACA,WAAW;AACX,WAAW;AACX,WAAW;AACX,WAAW;EACP,mBAAA;EACA,WAAA;EACA,0BAAA;EACA,mBAAmB,cAAnB;EAEA,yBAAA;EACA,kBAAkB,cAAlB;;;AAIJ,IAAI;AACJ,mBAAmB;AACnB;AACA;AACA;AACA,WAAW;AACX,WAAW;AACX,WAAW;AACX,mBAAmB;EACf,mBAAA;EACA,WAAA;EACA,0BAAA;EACA,mBAAmB,UAAnB;EACA,yBAAA;EACA,kBAAkB,UAAlB;;;AAIJ,IAAI;AACJ,WAAW;AACX,WAAW;AACX,WAAW;AACX,WAAW;AACX,WAAW;AACX,mBAAmB;EACf,mBAAA;EACA,WAAA;EACA,0BAAA;EACA,yBAAA;;;AAIJ;AACA;AACA,WAAW;AACX,WAAW;AACX,WAAW;EACP,mBAAA;EACA,WAAA;EACA,0BAAA;EACA,yBAAA;;AAGJ,iBAAkB,iBAAgB;EAC9B,WAAA;;AAGJ;EACI,qBAAA;;AAGJ,gBAAiB;EACb,iBAAA;EACA,qBAAA;EACA,gBAAA;;AAGJ;EACI,cAAA;EACA,oBAAA;EACA,uBAAA;EACA,sBAAA;;AAGJ,KAAK;AACL,YAAY;EACR,qBAAA;EACA,kBAAA;EACA,8BAAA;EACA,gCAAA;EACA,iCAAA;EACA,yBAAA;EACA,eAAA;;AAGJ,KAAK;EACD,sBAAA;EACA,uCAAA;EACA,sBAAA;;AAGJ,KAAK,KAAG;AACR,KAAK,KAAG;EACJ,4BAAA;EACA,qBAAqB,cAArB;;AAGJ,KAAK,KAAG;EACJ,eAAA;EACA,4BAAA;;AAGJ,KAAK,KAAG;AACR,YAAY,KAAG;EACX,sBAAA;EACA,qBAAA;EACA,cAAA;;AAGJ,KAAK,KAAG,iBAAiB;EACrB,cAAA;EACA,OAAO,cAAP;;AAGJ;EACI,uBAAA;EACA,gBAAA;;AAGJ,YAAY,KAAG;EACX,yBAAA;;AAGJ,YAAY,KAAG;EACX,yBAAA;EACA,kBAAkB,aAAlB;;AAFJ,YAAY,KAAG,kBAIX;EACI,WAAA;;AAIR;EACI,kBAAA;EACA,sBAAA;;AAGJ,YAAa,oBAAmB,YAAY;AAC5C,UAAU,eAAc,kBAAiB,YAAY;EACjD,yBAAA;;AAGJ;EACI,gBAAA;EACA,SAAA;EACA,UAAA;EACA,SAAA;EACA,6BAAA;;AALJ,gBAOI;EACI,iBAAA;EACA,mBAAA;;AAIR;EACI,iBAAA;EACA,YAAA;EACA,UAAA;EACA,iCAAA;EACA,0BAAA;;AAGJ,YAAY,IAAK,oBAAmB,YAAY;AAChD,YAAY,IAAK,kBAAiB,YAAY;EAC1C,yBAAA;;AAGJ;EACI,aAAA;EACA,UAAA;EACA,0BAAA;EACA,uBAAA;;AAGJ,iBAAiB,aAAW,YAAY;EACpC,yBAAA;;AAGJ;AACA;EACI,iBAAA;EACA,mBAAA;;AAHJ,gBAKI;AAJJ,sBAII;EACI,cAAA;EACA,OAAO,gBAAP;;AAIR;EACI,gBAAA;EACA,mBAAA;EACA,YAAA;;AAGJ;EACI,mBAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,mBAAA;EACA,iBAAA;EACA,qBAAA;;AAGJ;EACI,qBAAA;EACA,WAAA;EACA,iCAAA;EACA,mBAAA;;AAGJ,UAAW;EACP,iBAAA;;AAGJ,gBAAiB;AACjB,gBAAiB;AACjB,UAAW,MAAK;AAChB,UAAW,MAAK;EACZ,gBAAA;;AAGJ,kBAAmB;AACnB,wBAAyB;EACrB,gBAAA;;AAGJ,wBAAyB;EACrB,eAAA;;AAGJ;EACI,cAAA;EACA,4BAAA;;AAGJ;EACI,iBAAA;EACA,uBAAA;EACA,YAAA;EACA,YAAA;EACA,0BAAA;EACA,kBAAA;EACA,yBAAA;;AAGJ,kBAAmB;EACf,kBAAA;;AAGJ,kBAAmB,GAAG;EAClB,iBAAA;EACA,cAAA;;AAGJ,GAAG,YAAY;EACX,iBAAA;EACA,aAAA;EACA,kBAAA;EACA,SAAS,iBAAiB,MAA1B;EACA,gBAAA;EACA,mBAAA;;AAGJ,GAAG,YAAa,IAAG,YAAY;EAC3B,aAAA;;AAGJ,GAAG,YAAY;AACf,GAAG,yBAAyB,MAAM;EAC9B,iBAAA;EACA,mBAAA;EACA,kBAAA;EACA,YAAA;EACA,gBAAA;EACA,SAAS,iBAAiB,KAA1B;EACA,kBAAA;EACA,sBAAA;EACA,mBAAA;EACA,qBAAA;;AAGJ;EACI,yBAAA;;AAGJ;EACI,sBAAA;;AAGJ,eAAgB;AAChB,eAAgB;AAChB,IAAI,IAAI,aAAc,gBAAe;EACjC,sBAAA;;AAGJ,kBAAmB,0BAA0B;EACzC,sBAAA;;AAGJ,GAAG;EACC,4BAAA;EACA,sBAAA;;AAGJ,GAAG,oBAAoB;EACnB,oBAAA;;AAGJ,GAAG,oBAAoB,IAAE;AACzB,GAAG,oBAAoB,IAAE,OAAK;EAC1B,aAAA;EACA,aAAA;EACA,mBAAA;;AAGJ,GAAG,oBAAoB,IAAE;EACrB,oBAAA;EACA,SAAA;;;AAIJ;EACI,gBAAA;EACA,sBAAA;EACA,gBAAA;EACA,YAAA;;AAGJ,YAAY;EACR,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,qBAAA;EACA,4BAAA;EACA,oBAAA;EACA,cAAA;EACA,gCAAA;EACA,yBAAyB,cAAzB;EACA,UAAA;;AAGJ,YAAY,gBAAgB;EACxB,eAAA;;AAGJ,YAAY,QAAM;EACd,iBAAA;EACA,kBAAA;EACA,WAAA;EACA,SAAA;EACA,oBAAA;EACA,gBAAA;EACA,cAAA;EACA,SAAS,OAAT;EACA,oBAAA;EACA,WAAA;EACA,0BAAA;EACA,mBAAmB,UAAnB;EACA,yBAAA;EACA,kBAAkB,UAAlB;;AAIJ,YAAY,QAAM;EACd,mBAAA;EACA,sBAAA;;AAGJ,YAAY;EACR,oBAAA;EACA,mBAAA;EACA,WAAA;EACA,gBAAA;;AAGJ,YAAY,YAAU,IAAI,UAAU;EAChC,gBAAA;EACA,WAAA;EACA,gBAAA;EACA,mBAAA;EACA,uBAAA;;AAGJ,YAAY,YAAU,QAAQ;EAC1B,gBAAA;;AAGJ;AACA;EACI,kBAAA;EACA,oBAAA;EACA,eAAA;;AAGJ,aAAa;EACT,gBAAA;EACA,YAAA;EACA,gBAAA;;AAGJ,aAAa;EACT,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,WAAA;EACA,oBAAA;EACA,UAAA;EACA,gBAAA;EACA,UAAA;;AAGJ,aAAa,KAAG;EACZ,aAAA;;AAGJ,iBAAiB,KAAG;EAChB,aAAA;;AADJ,iBAAiB,KAAG,QAGhB;EACI,WAAA;;AAKR,iBAAiB,KAAG,YAChB;EACI,WAAA;;AAKR,aAAa;EACT,gBAAA;;AAGJ,aAAa;AACb,aAAa;EACT,eAAA;EACA,gBAAA;EACA,cAAA;EACA,aAAA;EACA,sBAAA;EACA,YAAA;EACA,cAAA;EACA,uBAAA;EACA,iBAAA;EACA,eAAA;EACA,kBAAA;EACA,UAAA;;AAGJ,aAAa;AACb,aAAa,KAAG,KAAG;EACf,iBAAA;EACA,aAAA;EACA,WAAA;EACA,2BAAA;;AAGJ,aAAa,KAAG;EACZ,aAAA;EACA,gBAAA;EACA,mBAAA;EACA,kBAAA;EACA,YAAA;EACA,cAAA;EACA,gBAAA;EACA,eAAA;EACA,mBAAA;EACA,uBAAA;;AAIJ,aAAa,KAAG,KAAI;EAChB,gBAAA;;AAGJ,aAAa,KAAG,KAAI;EAChB,aAAA;;AAGJ,aAAa,KAAG,KAAG,SAAS,IAAI;EAC5B,4BAAA;;AAGJ,aAAa,OAAO;EAChB,cAAA;;AAGJ,aAAa,KAAG,KAAG;EACf,aAAA;EACA,SAAA;EACA,UAAA;EACA,oBAAA;;AAGJ,aAAa,KAAG,KAAI;EAChB,oBAAA;EACA,sBAAA;;AAGJ,aAAa,KAAG,KAAG,OAAK,QAAM;EAC1B,YAAA;EACA,SAAA;;AAGJ,aAAa,KAAG,KAAI,MAAK;EACrB,YAAA;;AAGJ,aAAa,MAAM,KAAG;EAClB,kBAAA;EACA,aAAA;EACA,cAAA;EACA,WAAA;EACA,eAAA;EACA,eAAA;EACA,4BAAA;EACA,0BAAA;EACA,mBAAA;EAEA,2BAAA;EACA,OAAO,sBAAP;;AAZJ,aAAa,MAAM,KAAG,SAclB;EACI,WAAA;;AAIR,aAAa,KAAG,KAAG;AACnB,aAAa,MAAM,KAAG;AACtB,aAAa,MAAM,KAAG,SAAS;AAC/B,aAAa,UAAU,KAAG,KAAG;AAC7B,aAAa,UAAU,MAAM,KAAG,SAAS;AACzC,aAAa,UAAU,MAAM;AAC7B,aAAa,UAAU,OAAO;EAC1B,aAAA;EACA,mBAAA;EACA,YAAA;;AAIJ,aAAa,OAAO,KAAG;AACvB,aAAa,UAAU,MAAM,KAAG,SAAS,KAAG;AAC5C,aAAa,UAAU,MAAM,KAAG,SAAS,KAAG;EACxC,cAAA;;AAGJ,aAAa,MAAM,KAAG,SAAS,KAAI;EAC/B,aAAA;;AAGJ,aAAa,MAAM,KAAG,SAAS,KAAI;EAC/B,gBAAA;;AAGJ,aAAa,MAAM,KAAG,SAAS;EAC3B,8BAAA;EACA,sBAAA;;AAGJ,aAAa,MAAM,KAAG,SAAS,KAAG;EAC9B,mBAAA;;AAGJ,aAAa,MAAM,KAAG,SAAS,KAAG;EAC9B,YAAY,gDAAZ;;AAGJ,aAAa,MAAM,KAAG,SAAS,KAAG;EAC9B,gBAAA;EACA,gBAAA;;AAGJ,aAAa,MAAM,KAAG,SAAS,KAAG;EAC9B,YAAA;;AAGJ,aAAa,MAAM,KAAG,SAAS,KAAG,QAAM,kBAAkB,YAAY;EAClE,WAAA;;AAGJ,aAAa;EACT,oBAAA;EACA,YAAA;;AAGJ,aAAc;EACV,WAAA;;AAGJ,aAAa,MAAO;EAChB,WAAA;;;AAIJ;EACI,kBAAA;EACA,gBAAA;EACA,YAAA;EACA,aAAA;EACA,uBAAA;EACA,gBAAA;EACA,qBAAA;EACA,gBAAA;;AAGJ,gBAAgB;EACZ,QAAA;EACA,YAAA;EACA,+BAAA;EACA,mBAAA;EACA,YAAY,aAAZ;;AAGJ,gBAAgB;EACZ,sBAAA;EACA,cAAA;EACA,iBAAA;EACA,sBAAA;EACA,mBAAA;EACA,kBAAA;EACA,QAAA;EACA,QAAA;EACA,WAAA;EACA,OAAA;EACA,gBAAA;EACA,SAAS,WAAT;EACA,kBAAA;EACA,gBAAA;EACA,uBAAA;;AAGJ;EACI,eAAA;EACA,YAAA;EACA,MAAA;EACA,cAAA;EACA,SAAA;EACA,cAAA;EACA,kBAAA;EACA,kCAAA;EACA,UAAA;EACA,8BAAA;EACA,iCAAA;;AAGJ;EACI,aAAA;EACA,mBAAA;EACA,eAAA;EACA,UAAA;EACA,gBAAA;EACA,gBAAA;EACA,gBAAA;EACA,gBAAA;EACA,YAAA;EACA,6BAAA;EACA,gBAAA;EACA,0EAAA;;AAGJ,MAAM;EACF,mBAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;;AAGJ,MAAM;AACN,MAAM;EACF,eAAA;EACA,sBAAA;EACA,cAAA;EACA,oBAAA;EACA,cAAA;EACA,YAAA;EACA,qBAAA;EACA,WAAA;EACA,UAAA;EACA,yBAAA;EACA,0EAAA;;AAGJ,MAAM;EACF,eAAA;;AAGJ,MAAO;EACH,kBAAA;;AAGJ,MAAO;EACH,uBAAA;EACA,cAAA;;AAGJ,MAAO;EACH,qBAAA;EACA,sBAAA;;AAGJ,MAAO;EACH,iBAAA;EACA,mBAAA;EACA,sBAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;;AAGJ,MAAO,OAAM;EACT,yBAAA;;AAGJ,MAAO;EACH,sBAAA;;AAGJ,MAAM;EACF,cAAA;EACA,gBAAA;;AAGJ,IAAI;EACA,gBAAA;EACA,aAAA;;AAGJ,IAAI,qBAAsB;EACtB,QAAA;EACA,OAAA;EACA,UAAA;;AAGJ;EACI,kBAAA;EACA,6BAAA;;AAGJ,SAAS;EACL,kBAAA;EACA,MAAA;EACA,SAAA;EACA,WAAA;EACA,WAAA;EACA,SAAS,EAAT;EACA,gEAAA;EACA,qBAAA;;;AAIJ;EACI,aAAA;;AAGJ;AACA,KAAK;EACD,2BAAA;;AAGJ;AACA,MAAM;EACF,4BAAA;;AAGJ;AACA,OAAO;EACH,6BAAA;;AAGJ;EACI,sBAAA;EACA,8BAAA;;AAGJ;EACI,oBAAA;EACA,iCAAA;;AAGJ;EACI,eAAA;;AAGJ;EACI,iBAAA;EACA,iBAAA;;AAGJ,iBAAiB,OAAK;EAClB,qBAAA;;AAGJ,GAAG;AACH,GAAG;AACH,GAAG;AACH,GAAG;EACC,aAAA;EACA,kBAAA;;AAGJ;EACI,oBAAA;EACA,sBAAA;EACA,8BAAA;EACA,gBAAA;EACA,iFAAA;;AAGJ,EAAE;AACF,GAAG;EACC,iBAAA;EACA,yBAAA;;AAGJ,WAAW;AACX,WAAW;EACP,qBAAA;EACA,sBAAA;EACA,gBAAA;;AAGJ,WAAW,MAAI;EACX,oBAAA;;AAGJ;EACI,aAAA;EACA,eAAA;;AAGJ,qBAAsB;EAClB,YAAA;EACA,aAAA;;AAGJ,qBAAsB;EAClB,aAAA;EACA,sBAAA;EACA,YAAA;;AAGJ,qBAAsB,eAAc;EAChC,gBAAA;EACA,YAAA;;AAGJ,qBAAsB,eAAc;EAChC,aAAA;EACA,eAAA;;AAGJ,qBAAsB,eAAe;EACjC,mBAAA;EACA,cAAA;EACA,gBAAA;EACA,uBAAA;EACA,cAAA;EACA,sBAAA;;;AAIJ;EACI,sBAAA;EACA,WAAA;EACA,iBAAA;EACA,eAAA;EACA,WAAA;;AAGJ;EACI,gBAAA;EACA,iBAAA;EACA,kBAAA;EACA,WAAA;EACA,iBAAA;EACA,aAAA;EACA,YAAA;EACA,WAAA;EACA,SAAA;EACA,uBAAA;EACA,yBAAA;EACA,0EAAA;;AAGJ,OAAO;EACH,UAAA;;;AAIJ;EACI,sBAAA;;AAGJ,gBAAiB;AACjB,wBAAyB;EACrB,cAAA;EACA,YAAA;EACA,qBAAA;EACA,uBAAA;EACA,sBAAA;;AAGJ,gBAAiB;AACjB,wBAAyB;EACrB,kBAAA;EACA,cAAA;EACA,YAAA;EACA,qBAAA;EACA,uBAAA;EACA,sBAAA;;AAGJ,gBAAiB;AACjB,wBAAyB;EACrB,kBAAA;EACA,cAAA;EACA,YAAA;EACA,qBAAA;EACA,uBAAA;EACA,sBAAA;;AAGJ,gBAAiB,IAAI;AACrB,gBAAiB,IAAI;EACjB,kBAAA;EACA,UAAA;EACA,gBAAA;EACA,SAAA;;AAGJ;EACI,YAAA;;AAGJ;EACI,WAAA;EACA,YAAA;;AAGJ,wBAAwB;AACxB,wBAAwB;AACxB,wBAAwB;EACpB,cAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;;AAGJ,wBAAyB,IAAI;AAC7B,wBAAyB,IAAI;EACzB,gBAAA;EACA,SAAA;;AAGJ,gBAAiB;AACjB,gBAAiB;AACjB,gBAAiB;EACb,eAAA;;;AAIJ;AACA;AACA;EACI,0BAAA;;AAGJ;AACA,6CAA8C;EAC1C,wBAAA;;AAGJ;EACI,iBAAA;EACA,oBAAA;EACA,sBAAA;EACA,gBAAA;EACA,8BAAA;EACA,yBAAA;EACA,gFAAA;;AAGJ;EACI,eAAA;EACA,gBAAA;;AAGJ,cAAc;EACV,mBAAA;EACA,YAAY,aAAZ;;AAFJ,cAAc,OAIV;EACI,WAAA;EACA,OAAO,YAAP;;AAKR;EACI,mBAAA;EACA,kBAAA;;AAGJ;EACI,mBAAA;;AAGJ;EACI,qBAAA;EACA,sBAAA;;AAGJ,UAAW;EACP,qBAAA;EACA,sBAAA;EACA,0BAAA;;AAGJ,UAAU,QAAM;EACZ,gBAAA;EACA,kBAAA;EACA,qBAAA;;AAGJ,UAAU;AACV,UAAU;EACN,qBAAA;EACA,gBAAA;;AAGJ,gBAAiB;AACjB,gBAAiB;EACb,kBAAA;;AAGJ,gBAAgB,KAAG;EACf,aAAA;;AAGJ,gBAAgB,KAAG,KAAG;EAClB,kBAAA;;AAGJ,gBAAgB,KAAG,KAAI;EACnB,mBAAA;EACA,mBAAA;EACA,sBAAA;;AAGJ,sBAAsB,mBAAkB;EACpC,eAAA;;AAGJ;EACI,oBAAA;EACA,mBAAA;EACA,8BAAA;;AAGJ,mBAAmB;EACf,cAAA;;AAGJ;EACI,eAAA;;AAGJ,GAAG,UAAW;AACd,EAAE,gBAAiB;AACnB,GAAG,gBAAiB;EAChB,kBAAA;EACA,cAAA;;AAGJ;EACI,yBAAA;EACA,2BAAA;;AAGJ;EACI,kBAAA;;AAGJ;AACA,IAAI;AACJ,IAAI,cAAe;EACf,uBAAA;;AAGJ;EACI,kBAAA;EACA,aAAA;EACA,aAAA;EACA,gBAAA;EACA,kCAAA;EACA,gBAAA;EACA,oBAAA;EACA,UAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;;AAGJ,sBAAsB,MAAO;EACzB,UAAA;EACA,iCAAA;EACA,UAAA;;AAGJ,UAAW;EACP,2BAAA;EACA,gBAAA;EACA,mBAAA;;AAGJ;EACI,cAAA;EACA,YAAY,qJAAZ;;AAGJ;EACI,aAAA;EACA,gBAAA;;AAGJ,cAAc;EACV,aAAA;;AAGJ,cAAc;EACV,eAAA;EACA,kBAAA;EACA,kBAAA;;AAGJ,cAAe;AACf,cAAe;EACX,aAAA;EACA,sBAAA;;AAGJ;EACI,iBAAA;EACA,iBAAA;EACA,sBAAA;EACA,mBAAA;EACA,qBAAA;EACA,yBAAA;EACA,WAAA;EACA,kBAAA;EACA,yBAAA;EACA,iBAAA;;AAGJ,KAAK,QAAM;AACX,KAAK,QAAM;EACP,kBAAA;EACA,WAAA;EACA,aAAA;EACA,SAAA;EACA,sBAAA;;AAGJ,KAAK,YAAY;EACb,kBAAA;;AAGJ;EACI,aAAA;;AAGJ;EACI,eAAA;EACA,WAAA;EACA,aAAA;EACA,WAAA;EACA,YAAA;EACA,SAAS,EAAT;EACA,MAAA;EACA,qCAAA;;;AAIJ,eAAe;AACf,kBAAkB;AAClB,gCAAiC,QAAQ;EACrC,iBAAA;EACA,sBAAA;EACA,mBAAA;EACA,cAAA;EACA,kBAAA;EACA,WAAA;EACA,cAAA;EACA,gBAAA;EACA,WAAA;EACA,yBAAA;EACA,0EAAA;;AAGJ,uCAAwC;EACpC,gBAAA;;AAGJ,KAAK;AACL,KAAK;AACL,KAAK;EACD,UAAA;;;AAIJ,gBACI;EACI,MAAA;EACA,uBAAA;;AAHR,gBACI,MAII;EACI,aAAA;;AANZ,gBACI,MAQI;EACI,WAAA;;AAVZ,gBACI,MAQI,YAGI;EACI,2BAAA;EACA,2BAAA;EACA,wBAAA;;AAfhB,gBACI,MAQI,YASI;EACI,cAAA;EACA,eAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;EACA,QAAA;EACA,sBAAA;EACA,sBAAA;EACA,+BAAA;EACA,oBAAA;;AAEA,gBA7BZ,MAQI,YASI,UAYK;EACG,WAAW,WAAX;EACA,gBAAgB,SAAhB;;EAEA,QAAQ,SAAR;;AAlCpB,gBACI,MAQI,YA6BI;EACI,YAAA;EACA,iBAAA;EACA,gBAAA;EACA,wCAAA;EACA,kBAAA;;AA3ChB,gBACI,MAQI,YA6BI,aAOI;EACI,qBAAA;EACA,aAAA;EACA,kBAAA;EACA,2BAAA;EACA,kBAAkB,gBAAlB;EACA,uBAAA;EACA,gDAAA;EACA,gBAAA;;AAII,gBAxDpB,MAQI,YA6BI,aAOI,WAWI,eACK;EACG,kBAAA;EACA,WAAA;EACA,OAAO,iBAAP;EACA,sBAAA;EACA,gBAAA;EACA,6BAAA;EACA,oBAAA;EACA,kBAAA;EACA,kBAAkB,aAAlB;;AATJ,gBAxDpB,MAQI,YA6BI,aAOI,WAWI,eACK,QAUG;EACI,WAAA;;AAIR,gBAvEpB,MAQI,YA6BI,aAOI,WAWI,eAgBK;EACG,kBAAA;EACA,WAAA;EACA,OAAO,iBAAP;EACA,yBAAA;EACA,qBAAA;EACA,sBAAA;EACA,iBAAA;EACA,6BAAA;EACA,8BAAA;EACA,kBAAA;;AAVJ,gBAvEpB,MAQI,YA6BI,aAOI,WAWI,eAgBK,MAWG;EACI,WAAA;;AAZR,gBAvEpB,MAQI,YA6BI,aAOI,WAWI,eAgBK,MAcG;EACI,eAAA;;AAfR,gBAvEpB,MAQI,YA6BI,aAOI,WAWI,eAgBK,MAiBG;EACI,YAAA;;AA1FhC,gBACI,MAQI,YA6BI,aAOI,WAkDI,SACI;EACI,YAAA;EACA,aAAA;EACA,WAAA;EACA,kBAAA;EACA,mBAAA;EACA,cAAA;EACA,4BAAA;EACA,UAAA;EACA,mBAAA;EACA,gBAAA;EACA,mBAAA;EACA,sBAAA;EACA,oCAAA;EACA,sBAAA;EACA,uFAAA;;AA/G5B,gBACI,MAQI,YA6BI,aAOI,WAkDI,SAmBI;EACI,kBAAA;EACA,aAAA;EACA,cAAA;;AArH5B,gBACI,MAQI,YA6BI,aAOI,WAkDI,SAyBI;EACI,eAAA;EACA,UAAA;EACA,2BAAA;EACA,2BAAA;;AA5H5B,gBACI,MAQI,YA6BI,aAOI,WAkDI,SAyBI,aAMI;EACI,UAAA;;AA/HhC,gBACI,MAQI,YA6BI,aAOI,WAkDI,SAyBI,aAMI,kBAGI;EACI,cAAA;EACA,UAAA;;AAnIpC,gBACI,MAQI,YA6BI,aAOI,WAkDI,SAyBI,aAMI,kBAGI,WAII;EACI,qBAAA;;AAtIxC,gBACI,MAQI,YA6BI,aAOI,WAkDI,SAyBI,aAMI,kBAGI,WAQI;EACI,wBAAA;;AA1IxC,gBACI,MAQI,YA6BI,aAOI,WAkDI,SAyBI,aAMI,kBAGI,WAYI;EACI,kBAAA;EACA,YAAA;EACA,kBAAA;;AAhJxC,gBACI,MAQI,YA6BI,aAOI,WAkDI,SAyBI,aAMI,kBAGI,WAYI,iBAKI;EACI,eAAA;EACA,gBAAA;EACA,cAAA;EACA,WAAA;EACA,QAAQ,mBAAR;EACA,yBAAA;EACA,sBAAqB,sCAArB;EACA,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,sBAAA;EACA,4BAAA;EACA,yEAAA;EACA,sBAAA;EACA,4BAAA;EACA,SAAA;;AAEA,gBAnKxC,MAQI,YA6BI,aAOI,WAkDI,SAyBI,aAMI,kBAGI,WAYI,iBAKI,MAkBK;EACG,cAAA;EAEA,UAAA;EACA,sBAAA;EACA,6EAAA;;AAIR,gBA5KpC,MAQI,YA6BI,aAOI,WAkDI,SAyBI,aAMI,kBAGI,WAYI,iBAgCK;EACG,aAAa,OAAb;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;EACA,oBAAA;EACA,cAAA;EACA,mCAAA;EACA,kCAAA;EACA,SAAS,OAAT;EACA,cAAA;EACA,iBAAA;EACA,kBAAA;EACA,YAAA;EACA,UAAA;EACA,SAAA;;AAIR,gBA/LhC,MAQI,YA6BI,aAOI,WAkDI,SAyBI,aAMI,kBAGI,WA+DK,eAAgB,iBAAgB;EAC7B,SAAS,OAAT;;AAjMxC,gBACI,MAQI,YA6BI,aAOI,WA2JI;EACI,kBAAA;EACA,mBAAA;;AA1MxB,gBACI,MAQI,YA6BI,aAOI,WA2JI,kBAII;EACI,eAAA;EACA,YAAA;EACA,kBAAA;EACA,0BAAA;EACA,qBAAA;EACA,oBAAA;EACA,yBAAA;EACA,sBAAA;EACA,kBAAA;EACA,mBAAmB,aAAnB;EACA,kBAAkB,aAAlB;;AAEA,gBAxNxB,MAQI,YA6BI,aAOI,WA2JI,kBAII,YAaK;EACG,wBAAA;;AA1NhC,gBACI,MAQI,YA6BI,aA2LI;EACI,SAAA;EACA,kBAAA;EACA,WAAA;EACA,WAAA;;AArOpB,gBACI,MAQI,YA6BI,aA2LI,OAMI;EACI,WAAA;;AAUxB,mBAAsC;EAClC,gBAAiB;IACb,aAAA;IACA,kBAAA;IACA,SAAA;IACA,WAAA;;;;AAKR,qBAAqB,QAAO,SAAQ,UAAU,GAAI,IAAG,UAAU;AAC/D,sBAAsB,QAAO,OAAO,IAAI,IAAG,UAAU;EACjD,mBAAA;;;AAIJ,iCAAkC;EAC9B,kBAAA;EACA,WAAA;;AAGJ,iCAAkC;EAC9B,mBAAA;;AAGJ,iCAAkC,EAAC;EAC/B,kBAAA;EACA,WAAA;EACA,UAAA;;;AAIJ,UAAW,sBAAsB;EAC7B,cAAA;;AAGJ,UAAW,sBAAsB;EAC7B,WAAA;EACA,sBAAA;;;AAIJ,gCAAiC,SAAS;AAC1C,yCAA0C,SAAS;AACnD,gCAAiC,SAAS;AAC1C,yCAA0C,SAAS;EAC/C,mBAAA;EACA,cAAA;EACA,OAAO,gBAAP;;;AAKJ,+BAAgC;EAC5B,mBAAA;EACA,cAAA;EACA,OAAO,gBAAP;;AAGJ;EACI,2BAAA;;AAGJ,SAAS,IAAE,OAAK,IAAI;EAChB,6BAAA;EACA,mBAAA;;AAGJ,SAAS,SAAO,OAAK;EACjB,iBAAA;EACA,iBAAA;;AAGJ,SAAS,IAAE;EACP,qBAAA;;AAGJ,+BAAgC,IAAG;EAC/B,cAAA;EACA,eAAA;EACA,sBAAA;;AAGJ,iCAAiC,IAAI,kBAAmB,SAAQ,IAAI;AACpE,+BAAgC,aAAY;EACxC,gBAAA;EACA,mBAAA;;AAGJ,+BAAgC,aAAY;EACxC,YAAA;EACA,mBAAA;;AAGJ,GAAG;AACH,GAAG;EACC,8BAAA;EACA,sBAAA;;AAGJ,YAAY;EACR,aAAA;;;AAIJ,kCAAmC,MAAM;EACrC,WAAA;EACA,mBAAA;;;AAIJ,gCAAiC;EAC7B,UAAA;;AAGJ,gCAAiC,aAAa;EAC1C,aAAA;;AAGJ,gCAAiC;EAC7B,uBAAA;;AAGJ,gCAAiC;EAC7B,yBAAA;EACA,iBAAA;EACA,WAAA;EACA,cAAA;EACA,gBAAA;EACA,2BAAA;EACA,4CAAA;EACA,gBAAA;EACA,mBAAA;EACA,sBAAA;EACA,cAAA;EACA,iBAAA;;AAGJ,gCAAiC;EAC7B,gBAAA;EACA,2BAAA;EACA,cAAA;;;AAIJ,aAAa,wBAAsB;EAC/B,yDAAA;;AAGJ,aAAa,wBAAsB,MAAI,YAAY;EAC/C,WAAA;EACA,YAAA;EACA,UAAA;EACA,2BAAA;;AAGJ,aAAa,wBAAsB,MAAI;EACnC,mDAAA;;AAGJ,aAAa,wBAAsB,MAAI,aAAa;EAChD,8BAAA;EACA,2BAAA;;AAGJ,qBAAqB,MAAI,MAAI;EACzB,YAAA;;AAGJ,gCAAiC;EAC7B,UAAA;;AAIJ,gCAAiC;EAC7B,0BAAA;;;AAIJ;EACI,SAAA;;AAGJ,SAAU;EACN,qBAAA;EACA,UAAA;EACA,gBAAA;;AAGJ,sBAAuB,MAAM;AAC7B,wBAAyB,MAAM;AAC/B,kBAAmB,MAAM;EACrB,gBAAA;;AAGJ,sBAAuB,MAAM,MAAK;AAClC,wBAAyB,MAAM,MAAK;AACpC,kBAAmB,MAAM,MAAK;EAC1B,WAAA;;AAGJ,sBAAuB,MAAM;AAC7B,wBAAyB,MAAM;AAC/B,kBAAmB,MAAM;EACrB,iBAAA;;AAGJ,wBAAyB;AACzB,wBAAyB;EACrB,eAAA;;AAGJ,kBAAmB;AACnB,wBAAyB;EACrB,cAAA;;AAGJ,kBAAmB;AACnB,wBAAyB;EACrB,WAAA;;AAGJ,2CAA4C,MAAM;EAC9C,WAAA;EACA,mBAAA;;AAFJ,2CAA4C,MAAM,EAI9C;EACI,aAAA;EACA,uBAAA;;;AAKR;EACI,YAAA;;AAGJ;EACI,iBAAA;EACA,YAAA;;;AAIJ,QAAS;EACL,+BAAA;;;AAIJ;EACI,qBAAA;EACA,gCAAA;EACA,oBAAA;EACA,8BAAA;EACA,gBAAA;EACA,iFAAA;;AAGJ,WAAY;EACR,8BAAA;EACA,gBAAA;EACA,wBAAA;EACA,mBAAA;EACA,uBAAA;;AAGJ,WAAY;EACR,qBAAA;;AAGJ,WAAY;EACR,kBAAA;EACA,gBAAA;EACA,cAAA;EACA,gBAAA;EACA,gBAAA;EACA,mBAAA;EACA,uBAAA;;AAGJ,WAAY,KAAI;EACZ,gBAAA;EACA,gBAAA;EACA,mBAAA;;AAGJ,WAAY,EAAC;EACT,gBAAA;;AAGJ,WAAY,EAAC,YAAY;EACrB,eAAA;;AAGJ,oCAAqC;AACrC,0BAA2B;AAC3B,0BAA2B;EACvB,aAAA;;AAGJ,kBAAmB;EACf,uBAAA;EACA,kBAAA;EACA,SAAA;EACA,WAAA;EACA,cAAA;EACA,SAAA;EACA,qCAAA;EACA,sBAAA;EACA,UAAA;;AAGJ;EACI;IACI,UAAA;;;;AAKR,KAAK;EACD,2BAAA;EACA,mCAAA;EACA,yBAAA;EAEA,sBAAA;EACA,uBAAA;EACA,UAAA;EACA,eAAA;EACA,oBAAA;EACA,kBAAA;;AAGJ,KAAK,iBAAiB;EAClB,yBAAA;EACA,sBAAsB,+LAAtB;EACA,yBAAA;EACA,oBAAA;EACA,4BAAA;EACA,2BAAA;;;AAIJ,gBAAyC;EACrC,KAAK,aAAW,OAAK,SAAO,QAAM;IAC9B,WAAA;;EAGJ,KAAK,aAAW,OAAK,KAAG,WAAW;IAC/B,QAAA;;EAGJ,SAAS;IACL,UAAA;;;AAIR,mBAAsC;EAClC,MAAM,QAAM,aAAW;IACnB,yBAAA;;EAGJ;IACI,OAAO,gBAAP;;EAGJ;IACI,OAAO,kBAAP;;EAGJ,IAAI,IAAI;EACR;IACI,iBAAA;IACA,sBAAA;;EAGJ;IACI,sBAAA;;EAIJ;IACI,YAAA;IACA,qBAAA;;EAGJ,gBAAiB;EACjB,gBAAiB;EACjB,UAAW,MAAK;EAChB,UAAW,MAAK;IACZ,gBAAA;;EAGJ,kBAAmB;IACf,eAAA;;EAGJ;IACI,gBAAA;;EAGJ,kBAAkB,QAAO,SAAS,GAAE;IAChC,sBAAA;;;AAIR,mBAAsC;EAGlC,MAAM,QAAM;IAER,eAAA;;EAKJ;IACI,OAAO,gBAAP;;EAGJ;IACI,OAAO,kBAAP;;EAIJ,KAAK,KAAG;EACR,YAAY,KAAG;IACX,sBAAA;;EAGJ;IACI,iBAAA;IACA,oBAAA;;EAGJ;IACI,iBAAA;IACA,sBAAA;;EAGJ,MAAO;IACH,WAAA;;EAGJ,gBAAiB;EACjB,gBAAiB;EACjB,UAAW,MAAK;EAChB,UAAW,MAAK;IACZ,gBAAA;;EAGJ,kBAAmB;IACf,eAAA;;EAGJ,KAAK,aAAW,OAAK;EACrB,KAAK,aAAW,OAAK,KAAI;EACzB,KAAK,aAAW,OAAK,SAAO;EAC5B,KAAK,aAAW,OAAK,KAAG;IACpB,iBAAA;;EAGJ,KAAK,aAAW,OAAK,SAAO,cAAY,KAAG;IACvC,iBAAA;;EAGJ;IACI,SAAA;;EAGJ,6CAA8C,OAAM,IAAI;IACpD,cAAA;;EAGJ,6CAA8C,OAAM,IAAI;EACxD,0CAA2C,OAAM,IAAI;EACrD,iCAAkC;EAClC,kCAAmC;IAC/B,mBAAA;;EAGJ;IACI,qBAAA;;EAGJ,IAAI,IAAI;EAAU;IACd,iBAAA;IACA,sBAAA;;;AAIR,mBAAsC;EAClC,MAAM,QAAM,aAAW;IACnB,aAAA;;EAGJ,MAAM,QAAM,aAAW;IACnB,kBAAA;;EAGJ;EACA;IACI,mBAAA;;EAGJ,KAAK,WAAS;IACV,QAAA;;EAGJ;IACI,OAAO,gBAAP;;EAGJ;IACI,OAAO,kBAAP;;EAKJ,IAAI,IAAI,YAAa;IACjB,kBAAA;IACA,QAAA;IACA,SAAA;;EAGJ,gBAAgB,QAAO;IACnB,gBAAA;;EAGJ;IACI,YAAA;IACA,mBAAA;;EAGJ,gBAAiB;EACjB,gBAAiB;EACjB,UAAW,MAAK;IACZ,YAAA;IACA,gBAAA;;;EAIJ,UAAW,MAAK;EAChB,UAAW,MAAK,sBAAsB,UAAU;IAC5C,uBAAA;IACA,gBAAA;;EAGJ,eAAe;EACf,kBAAkB;EAClB,gCAAiC,QAAQ;IACrC,eAAA;;EAGJ;IACI,cAAA;;EAGJ,WAAY;IACR,kBAAA;;EAGJ,SAAS;IACL,aAAA;;EAGJ;IACI,aAAA;IACA,mBAAA;IACA,eAAA;;EAGJ,SAAU,OAAM,cAAc;IAC1B,iBAAA;;EAGJ,GAAG;IACC,8BAAA;;EAGJ,GAAG,YAAY;EACf,aAAc,IAAG;EACjB,YAAa,IAAG,UAAU,GAAG;EAC7B,YAAa,sBAAsB,IAAG;IAClC,aAAA;;EAGJ;EACA;IACI,qBAAA;IACA,sBAAA;IACA,aAAA;IACA,uBAAA;IACA,qBAAA;;EAGJ,GAAI;EACJ,GAAI,MAAK;IACL,WAAA;IACA,iBAAA;;EAGJ,GAAI,eAAc;EAClB,GAAI,MAAK;IACL,OAAO,mBAAP;;EAGJ,GAAG;EACH,GAAG;IACC,eAAA;IACA,gBAAA;;EAGJ,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;IACC,gBAAA;IACA,iBAAA;;EAGJ;IACI,aAAA;IACA,mBAAA;IACA,eAAA;IACA,8BAAA;IACA,0EAAA;;EAGJ,GAAG;EACH;IACI,qBAAA;IACA,gBAAA;IACA,eAAA;IACA,kBAAA;;EAGJ,GAAG;IACC,sBAAA;;EAGJ,GAAG;EACH,GAAG;EACH,GAAG;IACC,aAAA;;EAGJ,GAAG,YAAY;EACf,GAAG,yBAAyB,MAAM;IAC9B,iBAAA;IACA,cAAA;IACA,cAAA;IACA,6CAAA;IACA,mBAAA;;EAGJ,GAAG;EACH,oCAAqC,IAAG;IACpC,gBAAA;;EAGJ,GAAG,YAAY;IACX,cAAA;;EAGJ,WAAW;IACP,cAAA;;EAGJ,GAAG,oBAAoB,IAAE;EACzB,GAAG,oBAAoB,IAAE,OAAK;IAC1B,iBAAA;;EAGJ,SAAU;IACN,2BAAA;IACA,kBAAA;IACA,aAAA;IACA,0EAAA;;EAGJ,SAAU,KAAK;IACX,sBAAA;IACA,SAAA;IACA,gBAAA;;EAGJ,SAAU;EACV,SAAU,QAAO;IACb,2BAAA;;EAGJ;IACI,sBAAA;IACA,yBAAA;;EAGJ,IAAI,IAAI;EAAU;IACd,iBAAA;IACA,sBAAA;;;AAOR,mBAAqC;EACjC;IACI,iBAAA;;EAGJ,gBAAgB;IACZ,iBAAA;IACA,gBAAA;;EAKJ;IACI,eAAA;IACA,YAAA;IACA,QAAA;;EAGJ;IACI,WAAA;;EAGJ;IACI,eAAA;IACA,kBAAA;IACA,WAAA;IACA,qBAAA;;EAEA,SAAC;IACG,aAAa,OAAb;IACA,6BAAA;IACA,8BAAA;IACA,+BAAA;IACA,+BAAA;IACA,cAAA;IACA,mCAAA;IACA,kCAAA;IACA,SAAS,OAAT;IACA,iBAAA;;EAKR,MAAM,QAAM,aAAW;IACnB,qBAAA;;EAGJ,KAAK,aAAW,OAAK,SAAO;EAC5B,KAAK,aAAW,OAAK,KAAG;IACpB,iBAAA;;EAGJ,KAAK,aAAW,OAAK,SAAO,cAAY,KAAG;IACvC,iBAAA;;EAEJ,YAAa;IACT,gBAAA;;;AAIR,mBAAqC;EACjC;IACI,aAAA;;EAEJ,YAAa;IACT,wBAAA;;EAEJ;IACI,gBAAA;;EAGJ,gCAAiC;IAC7B,yBAAA;;EAGJ,gCAAiC;IAC7B,yBAAA;;EAIJ,gCAAiC;IAC7B,eAAA;;EAGJ,gCAAiC;IAC7B,6BAAA;;EAEJ;IACI,kBAAA;;EAEJ,gBAAiB,MAAM,YAAY,aAAa,WAAW,SAAS,aAAa,kBAAkB,WAAW;IAC1G,YAAA;;EAGJ,gBAAiB;IACb,aAAA;;;AAGR,mBAAqC;EACjC;IACI,WAAA;IACA,YAAA;;EAGJ;EACA;IACI,uBAAA;;EAGJ;IACI,mBAAA;;EAGJ,yBAAyB;IACrB,mBAAA;;EAGJ,yBAAyB;IACrB,mBAAA"} \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/cascade.less b/luci-theme-argon/htdocs/luci-static/argon/cascade.less new file mode 100644 index 000000000..3e77071c1 --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/cascade.less @@ -0,0 +1,3692 @@ +// out: ./cascade.css, compress: false , sourceMap: true +/** + * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template + * + * luci-theme-argon + * Copyright 2019 Jerrykuku + * + * Have a bug? Please create an issue here on GitHub! + * https://github.com/jerrykuku/luci-theme-argon/issues + * + * luci-theme-material: + * Copyright 2015 Lutty Yang + * https://github.com/LuttyYang/luci-theme-material/ + * + * Agron Theme + * https://demos.creative-tim.com/argon-dashboard/index.html + * + * Login background + * https://unsplash.com/ + * Font generate by Icomoon + * + * Licensed to the public under the Apache License 2.0 + */ + +/* + * Include base and custom css + */ + +@import url("custom.css?v=1"); + +/* + * Icon Css and Fonts + */ +@font-face { + font-family: 'argon'; + src: url('fonts/argon.eot?vncylf'); + src: url('fonts/argon.eot?vncylf#iefix') format('embedded-opentype'), + url('fonts/argon.ttf?vncylf') format('truetype'), + url('fonts/argon.woff?vncylf') format('woff'), + url('fonts/argon.svg?vncylf#argon') format('svg'); + font-weight: normal; + font-style: normal; + font-display: block; +} + +@font-face { + font-family: 'TypoGraphica'; + src: url('fonts/TypoGraphica.eot?#iefix') format('embedded-opentype'), + url('fonts/TypoGraphica.woff') format('woff'), + url('fonts/TypoGraphica.ttf') format('truetype'), + url('fonts/TypoGraphica.svg#TypoGraphica') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="icon-"], +[class*=" icon-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-hello-world:before { + content: "\e90e"; +} + +.icon-expand_more:before { + content: "\e20b"; +} + +.icon-menu:before { + content: "\e20e"; +} + +.icon-favorite:before { + content: "\e291"; +} + +.icon-spinner:before { + content: "\e603"; +} + +.icon-delete:before { + content: "\e900"; +} + +.icon-edit:before { + content: "\e901"; +} + +.icon-use:before { + content: "\e902"; +} + +.icon-loading:before { + content: "\e903"; +} + +.icon-switch:before { + content: "\e904"; +} + +.icon-error:before { + content: "\e905"; +} + +.icon-dashboard:before { + content: "\e906"; +} + +.icon-logout:before { + content: "\e907"; +} + +.icon-Network:before { + content: "\e908"; +} + +.icon-services:before { + content: "\e909"; +} + +.icon-system:before { + content: "\e90a"; +} + +.icon-vpn:before { + content: "\e90b"; +} + +.icon-storage:before { + content: "\e90c"; +} + +.icon-statistics:before { + content: "\e90d"; +} + +.icon-angle-right:before { + content: "\e90f"; +} + +.icon-password:before { + content: "\e910"; +} + +.icon-user:before { + content: "\e971"; +} + +.icon-question:before { + content: "\f059"; +} + + +.sk-folding-cube { + position: absolute; + width: 40px; + height: 40px; + left: 50%; + top: 50%; + margin: -20px 0 0 -20px; + -webkit-transform: rotateZ(45deg); + transform: rotateZ(45deg); +} + +.sk-folding-cube .sk-cube { + float: left; + width: 50%; + height: 50%; + position: relative; + -webkit-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1); +} +.sk-folding-cube .sk-cube:before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: #5e72e4; + -webkit-animation: sk-foldCubeAngle 2.4s infinite linear both; + animation: sk-foldCubeAngle 2.4s infinite linear both; + -webkit-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + transform-origin: 100% 100%; +} +.sk-folding-cube .sk-cube2 { + -webkit-transform: scale(1.1) rotateZ(90deg); + transform: scale(1.1) rotateZ(90deg); +} +.sk-folding-cube .sk-cube3 { + -webkit-transform: scale(1.1) rotateZ(180deg); + transform: scale(1.1) rotateZ(180deg); +} +.sk-folding-cube .sk-cube4 { + -webkit-transform: scale(1.1) rotateZ(270deg); + transform: scale(1.1) rotateZ(270deg); +} +.sk-folding-cube .sk-cube2:before { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} +.sk-folding-cube .sk-cube3:before { + -webkit-animation-delay: 0.6s; + animation-delay: 0.6s; +} +.sk-folding-cube .sk-cube4:before { + -webkit-animation-delay: 0.9s; + animation-delay: 0.9s; +} + +@-webkit-keyframes sk-foldCubeAngle { + 0%, 10% { + -webkit-transform: perspective(140px) rotateX(-180deg); + transform: perspective(140px) rotateX(-180deg); + opacity: 0; + } 25%, 75% { + -webkit-transform: perspective(140px) rotateX(0deg); + transform: perspective(140px) rotateX(0deg); + opacity: 1; + } 90%, 100% { + -webkit-transform: perspective(140px) rotateY(180deg); + transform: perspective(140px) rotateY(180deg); + opacity: 0; + } +} + +@keyframes sk-foldCubeAngle { + 0%, 10% { + -webkit-transform: perspective(140px) rotateX(-180deg); + transform: perspective(140px) rotateX(-180deg); + opacity: 0; + } 25%, 75% { + -webkit-transform: perspective(140px) rotateX(0deg); + transform: perspective(140px) rotateX(0deg); + opacity: 1; + } 90%, 100% { + -webkit-transform: perspective(140px) rotateY(180deg); + transform: perspective(140px) rotateY(180deg); + opacity: 0; + } +} + + +.table { + position: relative; + display: table; +} + +.tr { + display: table-row; +} + +.thead { + display: table-header-group; +} + +.tbody { + display: table-row-group; +} + +.tfoot { + display: table-footer-group; +} + +.td, +.th { + line-height: normal; + display: table-cell; + padding: .5em; + text-align: center; + vertical-align: middle; +} + +.th { + font-weight: bold; +} + +.tr.placeholder { + height: 4em; +} + +.tr.placeholder>.td { + line-height: 3; + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 0.4rem 0 !important; + text-align: center !important; + background: inherit; +} + +.td[width="33%"] { + padding: 1.1em 1.5rem; +} + +.table[width="33%"], +.th[width="33%"], +.td[width="33%"] { + width: 33%; +} + +.table[width="100%"], +.th[width="100%"], +.td[width="100%"] { + width: 100%; +} + +.col-1 { + flex: 1 1 30px !important; +} + +.col-2 { + flex: 2 2 60px !important; +} + +.col-3 { + flex: 3 3 90px !important; +} + +.col-4 { + flex: 4 4 120px !important; +} + +.col-5 { + flex: 5 5 150px !important; +} + +.col-6 { + flex: 6 6 180px !important; +} + +.col-7 { + flex: 7 7 210px !important; +} + +.col-8 { + flex: 8 8 240px !important; +} + +.col-9 { + flex: 9 9 270px !important; +} + +.col-10 { + flex: 10 10 300px !important; +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; + color: #32325d; + color: var(--gray-dark); +} + +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: inherit; + font-weight: normal; + line-height: 1.1 !important; + color: inherit; +} + +html { + overflow-y: hidden; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + font-size: .8rem; + background-color: #f8f9fe; +} + +html, +body { + font-family: "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; + font-family: var(--font-body); + height: 100%; + margin: 0; + padding: 0; +} + +select { + padding: .36rem .8rem; + color: #555; + border: thin solid #ccc; + background-color: #fff; + background-image: none; +} + +.btn, +button, +select, +input, +.cbi-dropdown { + line-height: 1.5rem; + height: 2.5rem; + padding: .625rem .75rem; + margin: 0.25rem 0.1rem; + color: #8898aa; + border: 1px solid #dee2e6; + + border-radius: .25rem; + outline: 0; + background-image: none; + box-shadow: none; + transition: box-shadow .15s ease; +} + +select, +.cbi-dropdown { + width: inherit; + cursor: default; +} + +select:not([multiple="multiple"]):focus, +input:not(.cbi-button):focus, +.cbi-dropdown:focus { + border-color: #5e72e4; + border-color: var(--primary); + box-shadow: 0 3px 9px rgba(50, 50, 9, 0), 3px 4px 8px rgba(94, 114, 228, .1); +} + +.cbi-dropdown, +select[multiple="multiple"] { + height: auto; +} + +pre { + overflow: auto; +} + +code { + font-size: 1rem; + font-size-adjust: .35; + padding: 1px 3px; + color: #101010; + border-radius: 2px; + background: #ddd; +} + +abbr { + cursor: help; + text-decoration: underline; + color: #fff; +} + +hr { + margin: 1rem 0; + opacity: .1; + border-color: #eee; +} + +header, +.main { + width: 100%; +} + + +footer { + font-size: .8rem; + overflow: hidden; + padding: 1rem; + text-align: right; + white-space: nowrap; + color: #aaa; + text-shadow: 0 0 2px #bbb; +} + +footer>a { + text-decoration: none; + color: #aaa; +} + +small { + font-size: 90%; + line-height: 1.42857143; + white-space: normal; +} + +.main { + position: relative; + top: 0; + bottom: 0; + overflow-y: auto; + height: 100%; +} + +.main>.loading { + position: fixed; + z-index: 1000; + top: 0; + display: block; + width: 100%; + height: 100%; + pointer-events: none; + background-color: rgb(240, 240, 240); +} + +.main>.loading>span { + font-family: monospace; + font-size: 2rem; + font-size-adjust: .35; + position: relative; + top: 12.5%; + display: block; + text-align: center; + color: #888; +} + +.main>.loading>span>.loading-img { + position: relative; + top: .1rem; + left: .05rem; + display: inline-block; + width: 1.25rem; + height: 1.25rem; + margin-right: 1rem; + animation: anim-rotate 2s infinite linear; + background: url(./icons/spinner.svg) no-repeat center; +} + +@keyframes anim-rotate { + 0% { + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +.main-left { + position: fixed; + top: 0; + float: left; + overflow-x: auto; + width: 15%; + width: calc(0% + 15rem); + height: 100%; + background-color: #fff; + background-color: var(--menu-bg-color); + box-shadow: 0 0 2rem 0 rgba(136, 152, 170, .15); + overflow-x: auto; + position: fixed; + z-index: 100; + + .sidenav-header { + padding: 1.5rem; + text-align: center; + + .brand { + font-size: 1.8rem; + color: #5e72e4; + font-family: "TypoGraphica"; + text-decoration: none; + text-align: center; + cursor: default; + vertical-align: text-bottom; + white-space: nowrap; + } + } +} + +.main-right { + float: right; + width: 85%; + width: calc(100% - 15rem); + height: 100%; + background-color: #f8f9fe; + transition: all 0.2s; +} + +.main-right>#maincontent { + position: relative; + z-index: 50; + margin-top: -13rem; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.nowrap:not(.td) { + white-space: nowrap; +} + +[disabled="disabled"] { + pointer-events: none; +} + +header { + color: #fff; + color: var(--header-color); + padding: 0 0 14rem 0; + + &.bg-primary { + background-color: #5e72e4 !important; + background-color: var(--primary) !important; + } + + .fill { + padding: 0.8rem 0; + border-bottom: 1px solid rgba(255, 255, 255, .08) !important; + + .container { + height: 2rem; + padding: 0 1rem; + + .showSide { + display: none; + color: #fff; + font-size: 1.4rem; + } + + .brand { + font-size: 1.5rem; + color: #fff; + font-family: "TypoGraphica"; + text-decoration: none; + padding-left: 1rem; + cursor: default; + vertical-align: text-bottom; + display: none; + } + + .pull-right { + float: right; + margin-top: 0rem; + display: flex; + } + } + + .status { + position: absolute; + top: 25%; + right: 1em; + float: right; + + * { + position: relative; + top: .2rem; + float: left; + margin-left: .3rem; + cursor: pointer; + } + } + } +} + +#xhr_poll_status { + display: flex; + margin-left: 0.5rem; + * { + color: #fff; + } +} + +.danger { + background-color: #ff7d60 !important; +} + +.warning { + background-color: #f0e68c !important; +} + +.success { + background-color: #5cb85c !important; +} + +.notice { + background-color: #11cdef !important; + color: #fff; +} + +.error { + color: #f00; +} + +.alert, +.alert-message { + font-weight: bold; + margin-bottom: 1em; + padding: 1rem; + border: 0; + border-radius: 0.375rem !important; + background-color: #fff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + text-shadow: 1px 1px rgba(0, 0, 0, .1); + + &.error{ + background-color: #ffd600; + } + + h4{ + padding: 0rem 1.5rem 0.75rem 0rem; + } + + .btn{ + height: auto; + } +} + +.alert-message>h4 { + font-size: 110%; + font-weight: bold; +} + +.alert-message>* { + margin: .5rem 0; +} + +.alert-message .btn { + padding: .3rem .6rem; +} + +.container .alert, +.container .alert-message { + margin-top: 1rem; +} + + +/* + * Main Menu + */ + +.main { + .main-left { + transition: all 0.2s; + + .nav { + margin-top: 0.5rem; + + li { + padding: 0.5rem 1rem; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + a { + display: block; + color: #5f6368; + color: var(--menu-color); + } + + &.slide { + padding: 0; + + ul { + display: none; + } + + .menu { + display: block; + margin: 0.1rem .5rem 0.1rem .5rem; + padding: .675rem 0 .675rem 2.5rem; + border-radius: .375rem; + text-decoration: none; + cursor: default; + font-size: 1rem; + transition: all 0.2s; + position: relative; + + &.active { + color: #fff; + background: #5e72e4; + background: var(--primary); + + &::before { + color: #fff !important; + } + + &::after { + transform: rotate(90deg); + color: #fff !important; + } + } + + &:hover { + cursor: pointer; + color: #fff; + background: #5e72e4; + background: var(--primary); + + &::before { + color: #fff !important; + } + } + + &::before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + left: 0.8rem; + padding-top: 3px; + transition: all 0.3s; + } + + &::after { + position: absolute; + right: 0.5rem; + top: 0.8rem; + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: '\e90f'; + transition: all .15s ease; + color: #ced4da; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + transition: all 0.3s; + } + } + + .menu[data-title=Status]:before { + content: "\e906"; + color: #5e72e4; + } + + .menu[data-title=System]:before { + content: "\e90a"; + color: #fb6340; + } + + .menu[data-title=Services]:before { + content: "\e909"; + color: #11cdef; + } + + .menu[data-title=NAS]:before { + content: "\e90c"; + color: #f3a4b5; + } + + .menu[data-title=VPN]:before { + content: "\e90b"; + color: #172b4d; + } + + .menu[data-title=Network]:before { + content: "\e908"; + color: #8965e0; + } + + .menu[data-title=Bandwidth_Monitor]:before { + content: "\e90d"; + color: #2dce89; + } + + + + &:hover { + background: none; + } + + .slide-menu { + margin: 0 0.5rem 0 2.5rem; + padding: 0rem 0.5rem; + + li { + position: relative; + border-radius: 0.375rem; + margin: 0.2rem 0; + padding: 0.5rem 0rem; + background: none; + + a { + white-space: nowrap; + text-decoration: none; + } + + &::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 0; + height: 2px; + background-color: #5e72e4; + transition: all 0.2s; + } + + &:hover { + background: none; + + &::after { + width: 100%; + } + } + + } + + .active { + background: none; + + color: var(--menu-color); + + a { + color: var(--menu-color); + } + + &::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 2px; + background-color: #5e72e4; + transition: all 0.2s; + } + + &:hover { + + background: none; + + &::after { + width: 100%; + } + } + } + } + + } + } + } + } +} +.lg{ + margin: 0; + padding: 0 !important; +} +.logout { + display: block; + margin: 0.8rem .5rem 0.1rem 0.5rem; + padding: .675rem 0 .675rem 2.5rem; + border-radius: .375rem; + text-decoration: none; + font-size: 1rem; + transition: all 0.2s; + position: relative; +} + +.logout:before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + left: 0.8rem; + padding-top: 3px; + transition: all 0.3s; + content: "\e907"; + color: #32325d !important; +} + + +body[class*="node-"]>.main>.main-left>.nav>.slide>.menu::before { + transition: transform .1s ease-in-out; +} + +body[class*="node-"]>.main>.main-left>.nav>.slide>.menu.active::before { + transition: transform .2s ease-in-out; +} + +.main>.main-left[style*="overflow: hidden"]>.nav>.slide>.menu::before { + display: none; +} + + + + +#maincontent>.container { + margin: 0 2rem 1rem 2rem; +} + +ul { + line-height: normal; +} + +li { + list-style-type: none; +} + +h1 { + font-size: 2rem; + padding-bottom: 10px; + border-bottom: thin solid #eee; +} + +h2 { + color: #fff; + font-size: 1.8rem; + margin: 1rem 0 0 0; + padding-bottom: 10px; + +} + +h3 { + font-size: 1.4rem; + margin: 0rem 0 0 0; + padding: 2rem 1.5rem 1.25rem 1.5rem; +} + +h4 { + font-size: 1.2rem; + margin: 2rem 0 0 0; + padding: 0rem 1.5rem 0.75rem 1.5rem; +} + +h5 { + font-size: 1rem; + margin: 2rem 0 0 0; + padding-bottom: 10px; +} + +.cbi-section, +.cbi-section-error, +#iptables, +.Firewall form, +#cbi-network>.cbi-section-node, +#cbi-wireless>.cbi-section-node, +#cbi-wireless>#wifi_assoclist_table, +[data-tab-title], +[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), +[data-page="admin-system-opkg"] #maincontent>.container { + font-family: inherit; + font-weight: normal; + font-style: normal; + line-height: normal; + min-width: inherit; + margin: 1.5rem 0; + padding: 0rem; + border: 0; + + border-radius: 0.375rem; + background-color: #fff; + box-shadow: 0 0 1rem 0 rgba(136, 152, 170, .15) +} + +.cbi-modal .cbi-section, +.cbi-section .cbi-section { + padding: 0; + box-shadow: none; +} + +.cbi-modal .cbi-tabmenu { + margin-left: 0; +} + +.cbi-map-descr, +.cbi-section-descr { + font-size: small; + line-height: 1.42857143; + padding: .5rem 0; + color: #fff; +} + +.cbi-map-descr+fieldset { + margin-top: 1rem; +} + +.cbi-section>legend { + display: none !important; +} + +fieldset>fieldset, +.cbi-section>.cbi-section { + margin: 0; + padding: 0; + border: 0; + box-shadow: none; +} + +.cbi-section>h3:first-child, +.panel-title { + font-size: 1.4rem; + line-height: 1; + display: block; + width: 100%; + margin: 0; + margin-bottom: 0; + padding: 1.25rem 1.5rem; + color: #32325d; + color: var(--gray-dark); + +} + +.cbi-section>h3:first-child, +.cbi-section>h4:first-child, +.cbi-section>p:first-child, +[data-tab-title]>h3:first-child, +[data-tab-title]>h4:first-child, +[data-tab-title]>p:first-child { + padding-top: 1rem; +} + +table { + border-spacing: 0; + border-collapse: collapse; +} + +table, +.table { + overflow-y: hidden; + width: 100%; + +} + +table>tbody>tr>td, +table>tbody>tr>th, +table>tfoot>tr>td, +table>tfoot>tr>th, +table>thead>tr>td, +table>thead>tr>th, +.table>.tbody>.tr>.td, +.table>.tbody>.tr>.th, +.table>.tfoot>.tr>.td, +.table>.tfoot>.tr>.th, +.table>.thead>.tr>.td, +.table>.thead>.tr>.th, +.table>.tr>.td.cbi-value-field, +.table>.tr>.th.cbi-section-table-cell { + padding: .5rem; +} + +.container>.cbi-section:first-of-type>.table[width="100%"]>.tr>.td { + padding: .6rem; +} + +.cbi-section-table-cell { + line-height: 1.1; + align-self: flex-end; + flex: 1 1 auto; +} + +tr>td, +tr>th, +.tr>.td, +.tr>.th, +.cbi-section-table-row::before, +#cbi-wireless>#wifi_assoclist_table>.tr:nth-child(2) { + border-top: thin solid #ddd; + padding: 1.1em 1.5rem; +} + +#cbi-wireless .td, +#cbi-network .tr:first-child>.td, +.table[width="100%"]>.tr:first-child>.td, +[data-page="admin-network-diagnostics"] .tr>.td, +.tr.table-titles>.th, +.tr.cbi-section-table-titles>.th { + border-top: 0 !important; + background-color: #f6f9fc; + padding: 1.1em 1.5rem; + line-height: 1.3rem; +} + +.table[width="100%"]>.tr:first-child>.td { + margin: auto 0; +} + +.cbi-section-table-row { + margin-bottom: 1rem; + text-align: center !important; + background: #f4f4f4; +} + +.cbi-section-table-row:last-child { + margin-bottom: 0; +} + +.cbi-section-table-row>.cbi-value-field .cbi-dropdown, +.cbi-section-table-row>.cbi-value-field .cbi-input-select, +.cbi-section-table-row>.cbi-value-field .cbi-input-text, +.cbi-section-table-row>.cbi-value-field .cbi-input-password { + width: 100%; +} + +.cbi-section-table-row>.cbi-value-field [data-dynlist]>input, +.cbi-section-table-row>.cbi-value-field input.cbi-input-password { + width: calc(100% - 1.5rem); +} + +.cbi-section-table-row .td { + text-align: center !important; +} + +div>table>tbody>tr:nth-of-type(2n), +div>.table>.tr:nth-of-type(2n) { + background-color: #f9f9f9; +} + +/* fix multiple table */ +table table, +.table .table, +.cbi-value-field table, +.cbi-value-field .table, +td>table>tbody>tr>td, +.td>.table>.tbody>.tr>.td, +.cbi-value-field>table>tbody>tr>td, +.cbi-value-field>.table>.tbody>.tr>.td { + border: 0; +} + +/* button style */ +.btn, +.cbi-button, +.item::after { + font-size: .8rem; + display: inline-block; + width: auto !important; + padding: 0 .8rem; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + transition: all .2s ease-in-out; + text-align: center; + vertical-align: middle; + white-space: nowrap; + text-decoration: none; + text-transform: uppercase; + color: rgba(0, 0, 0, .87); + border: 0; + border-radius: .2rem; + background-color: #f0f0f0; + background-image: none; + -webkit-appearance: none; + -ms-touch-action: manipulation; + touch-action: manipulation; +} + +.cbi-button-up, +.cbi-button-down { + font-size: 1.2rem; + display: inline-block; + min-width: 0; + padding: .2rem .3rem; + color: transparent !important; + background: url(./icons/arrow.svg) no-repeat center; + background-size: 12px 20px; +} + +.cbi-button-up { + transform: scaleY(-1); +} + +.cbi-button:not(select) { + -webkit-appearance: none !important; +} + +.cbi-button+.cbi-button { + margin-left: .6rem; +} + +.btn:hover, +.btn:focus, +.btn:active, +.cbi-button:hover, +.cbi-button:focus, +.cbi-button:active, +.item:hover::after, +.item:focus::after, +.item:active::after, +.cbi-page-actions .cbi-button-apply+.cbi-button-save:hover, +.cbi-page-actions .cbi-button-apply+.cbi-button-save:focus, +.cbi-page-actions .cbi-button-apply+.cbi-button-save:active { + text-decoration: none; + outline: 0; +} + +.btn:hover, +.btn:focus, +.cbi-button:hover, +.cbi-button:focus, +.item:hover::after, +.item:focus::after { + box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 2px 2px rgba(0, 0, 0, .2); +} + +.btn:active, +.cbi-button:active, +.item:active::after { + box-shadow: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23); +} + +.cbi-button-up:hover, +.cbi-button-up:focus { + box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 -2px 2px rgba(0, 0, 0, .2); +} + +.cbi-button-up:active { + box-shadow: 0 -10px 20px rgba(0, 0, 0, .19), 0 -6px 6px rgba(0, 0, 0, .23); +} + +.btn:disabled, +.cbi-button:disabled { + cursor: not-allowed; + pointer-events: none; + opacity: .5; + box-shadow: none; +} + +/* gray */ +.alert-message [class="btn"], +.modal div[class="btn"], +.cbi-button-find, +.cbi-button-link, +.cbi-button-up, +.cbi-button-down, +.cbi-button-neutral, +.cbi-button[name="zero"], +.cbi-button[name="restart"], +.cbi-button[onclick="hide_empty(this)"] { + font-weight: bold; + color: #fff; + border: thin solid #8898aa; + background-color: #8898aa; +} + +/* dark blue */ +.btn.primary, +.cbi-page-actions .cbi-button-save, +.cbi-page-actions .cbi-button-apply+.cbi-button-save, +.cbi-button-add, +.cbi-button-save, +.cbi-button-positive, +.cbi-button-link, +.cbi-button[value="Enable"], +.cbi-button[value="Scan"], +.cbi-button[value^="Back"], +.cbi-button-neutral[onclick="handleConfig(event)"] { + font-weight: normal; + color: #fff; + border: thin solid #5e72e4; + border: thin solid var(--primary); + background-color: #5e72e4; + background-color: var(--primary); + ; +} + +/* light blue */ +.cbi-page-actions .cbi-button-apply, +.cbi-section-actions .cbi-button-edit, +.cbi-button-edit, +.cbi-button-apply, +.cbi-button-reload, +.cbi-button-action, +.cbi-button[value="Submit"], +.cbi-button[value="Upload"], +.cbi-button[value$="Apply"], +.cbi-button[onclick="addKey(event)"] { + font-weight: normal; + color: #fff; + border: thin solid #5e72e4; + border: thin solid var(--primary); + + background-color: #5e72e4; + background-color: var(--primary); +} + +/* red */ +.btn.danger, +.cbi-section-remove>.cbi-button, +.cbi-button-remove, +.cbi-button-reset, +.cbi-button-negative, +.cbi-button[value="Stop"], +.cbi-button[value="Kill"], +.cbi-button[onclick="reboot(this)"], +.cbi-button-neutral[value="Restart"] { + font-weight: normal; + color: #fff; + border: thin solid #f5365c; + border: thin solid var(--red); + background-color: #f5365c; + background-color: var(--red); +} + +/* yellow */ +.btn[value="Dismiss"], +.cbi-button[value="Terminate"], +.cbi-button[value="Reset"], +.cbi-button[value="Disabled"], +.cbi-button[onclick^="iface_reconnect"], +.cbi-button[onclick="handleReset(event)"], +.cbi-button-neutral[value="Disable"] { + font-weight: normal; + color: #fff; + border: thin solid #eea236; + background-color: #f0ad4e; +} + +/* green */ +.cbi-button-success, +.cbi-button-download, +.cbi-button[name="backup"], +.cbi-button[value="Download"], +.cbi-button[value="Save mtdblock"] { + font-weight: normal; + color: #fff; + border: thin solid #4cae4c; + background-color: #5cb85c; +} + +.cbi-page-actions .cbi-button-link:first-child { + float: left; +} + +.a-to-btn { + text-decoration: none; +} + +.cbi-value-field .cbi-button-add { + font-weight: bold; + margin: 9px 0 4px 3px; + padding: 1px 6px; +} + +.tabs { + margin: 0 0rem; + padding-left: .5rem; + border-radius: 0.375rem; + background-color: #fff; +} + +.tabs>li, +.cbi-tabmenu>li { + display: inline-block; + padding: .55rem 0; + margin: 0.5rem 0.1rem 0 0.1rem; + border-top-left-radius: 0.375rem; + border-top-right-radius: 0.375rem; + background-color: #d4d4d4; + cursor: pointer; +} + +.tabs>li { + padding-bottom: .4rem; + border-bottom: .2rem solid transparent; + background-color: #fff; +} + +.tabs>li[class~="active"], +.tabs>li:hover { + border-bottom-color: #5e72e4; + border-bottom-color: var(--primary); +} + +.tabs>li:hover { + cursor: pointer; + border-bottom-color: #c9c9c9; +} + +.tabs>li>a, +.cbi-tabmenu>li>a { + padding: .6rem .9rem; + text-decoration: none; + color: #404040; +} + +.tabs>li[class~="active"]>a { + color: #5e72e4; + color: var(--primary); +} + +.cbi-tabmenu { + border: 0 solid #d4d4d4; + border-bottom: 0; +} + +.cbi-tabmenu>li:hover { + background-color: #f1f1f1; +} + +.cbi-tabmenu>li[class~="cbi-tab"] { + background-color: #fb6340; + background-color: var(--orange); + + a { + color: #fff; + } +} + +.cbi-tabmenu { + padding-left: 1rem; + background-color: none; +} + +.cbi-section .cbi-section-remove:nth-of-type(2n), +.container>.cbi-section .cbi-section-node:nth-of-type(2n) { + background-color: #f9f9f9; +} + +[data-tab-title] { + overflow: hidden; + height: 0; + opacity: 0; + margin: 0; + padding: 0rem 0rem !important; + + p { + margin-left: 1rem; + margin-bottom: 1rem; + } +} + +[data-tab-active="true"] { + overflow: visible; + height: auto; + opacity: 1; + transition: opacity .25s ease-in; + margin: inherit !important; +} + +.cbi-section[id] .cbi-section-remove:nth-of-type(4n+3), +.cbi-section[id] .cbi-section-node:nth-of-type(4n+4) { + background-color: #f9f9f9; +} + +.cbi-section-node-tabbed { + margin-top: 0; + padding: 0; + border: thin solid #d4d4d4; + border-radius: 0.375rem; +} + +.cbi-tabcontainer>.cbi-value:nth-of-type(2n) { + background-color: #f9f9f9; +} + +.cbi-value-field, +.cbi-value-description { + line-height: 1.25; + display: table-cell; + + abbr { + color: #32325d; + color: var(--gray-dark); + } +} + +.cbi-value-description { + font-size: small; + padding-top: .4rem; + opacity: .5; +} + +.cbi-value-title { + display: table-cell; + float: left; + width: 23rem; + padding-top: .25rem; + padding-right: 2rem; + text-align: right; + word-wrap: break-word; +} + +.cbi-value { + display: inline-block; + width: 100%; + padding: .35rem 1rem .2rem 1rem; + line-height: 2.4rem; +} + +.cbi-value ul { + line-height: 1.25; +} + +.cbi-value-field .cbi-dropdown, +.cbi-value-field .cbi-input-select, +.cbi-value input[type="text"], +.cbi-value input[type="password"] { + min-width: 18rem; +} + +#cbi-firewall-zone .cbi-input-select, +#cbi-network-switch_vlan .cbi-input-select { + min-width: 11rem; +} + +#cbi-network-switch_vlan .cbi-input-text { + max-width: 3rem; +} + +.cbi-input-invalid { + color: #f5365c; + border-bottom-color: #f5365c; +} + +.cbi-section-error { + font-weight: bold; + line-height: 1.42857143; + margin: 18px; + padding: 6px; + border: thin solid #f5365c; + border-radius: 3px; + background-color: #fce6e6; +} + +.cbi-section-error ul { + margin: 0 0 0 20px; +} + +.cbi-section-error ul li { + font-weight: bold; + color: #f5365c; +} + +.td[data-title]::before { + font-weight: bold; + display: none; + padding: .25rem 0; + content: attr(data-title) ":\20"; + text-align: left; + white-space: nowrap; +} + +.tr.placeholder .td[data-title]::before { + display: none; +} + +.tr[data-title]::before, +.tr.cbi-section-table-titles.named::before { + font-weight: bold; + display: table-cell; + align-self: center; + flex: 1 1 5%; + padding: .25rem; + content: attr(data-title) "\20"; + text-align: center; + vertical-align: middle; + white-space: normal; + word-wrap: break-word; +} + +.cbi-rowstyle-1 { + background-color: #f9f9f9; +} + +.cbi-rowstyle-2 { + background-color: #eee; +} + +.cbi-rowstyle-2 .cbi-button-up, +.cbi-rowstyle-2 .cbi-button-down, +body:not(.Interfaces) .cbi-rowstyle-2:first-child { + background-color: #fff !important; +} + +.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { + width: auto !important; +} + +.td.cbi-section-actions { + text-align: right !important; + vertical-align: middle; +} + +.td.cbi-section-actions>* { + display: inline-flex; +} + +.td.cbi-section-actions>*>*, +.td.cbi-section-actions>*>form>* { + margin: 0 5px; + display: flex; + align-items: center; +} + +.td.cbi-section-actions>*>form { + display: inline-flex; + margin: 0; +} + +/* lists */ +.cbi-dynlist { + line-height: 1.3; + flex-direction: column; + min-height: 30px; + cursor: text; +} + +.cbi-dynlist>.item { + position: relative; + max-width: 25rem; + margin-right: 2em; + margin-bottom: 0.3rem; + padding: 1em .25em .25em 0; + pointer-events: none; + color: #8898aa; + border-bottom: 2px solid #5e72e4; + border-bottom: 2px solid var(--primary); + outline: 0; +} + +.cbi-dynlist[name="sshkeys"]>.item { + max-width: none; +} + +.cbi-dynlist>.item::after { + font-weight: bold; + position: absolute; + right: -2em; + bottom: 0; + display: inline-flex; + min-height: 17px; + padding: 0 6px; + content: "\00D7"; + pointer-events: auto; + color: #fff; + border: thin solid #f5365c; + border: thin solid var(--red); + background-color: #f5365c; + background-color: var(--red); + ; +} + +.cbi-dynlist>.item>span { + white-space: normal; + word-break: break-word; +} + +.cbi-dynlist>.add-item { + display: inline-flex; + align-items: center; + width: 100%; + min-width: 16rem; +} + +.cbi-dynlist>.add-item:not([ondrop])>input { + overflow: hidden; + width: 100%; + min-width: 15rem; + white-space: nowrap; + text-overflow: ellipsis; +} + +.cbi-dynlist>.add-item[ondrop]>input { + min-width: 13rem; +} + +.cbi-dynlist, +.cbi-dropdown { + position: relative; + display: inline-flex; + padding: 0.2rem; +} + +.cbi-dropdown[placeholder*="select"] { + max-width: 25rem; + height: auto; + margin-top: -3px; +} + +.cbi-dropdown>ul { + display: flex; + overflow-x: hidden; + overflow-y: auto; + width: 100%; + margin: 0 !important; + padding: 0; + list-style: none; + outline: 0; +} + +.cbi-dropdown>ul.preview { + display: none; + +} +.cbi-button-apply>ul.preview { + display: none; + + li { + color: #fff; + } + +} + +.cbi-button-apply>ul:first-child { + li { + color: #fff; + } + +} + +.cbi-dropdown>.open { + flex-basis: 15px; +} + +.cbi-dropdown>.open, +.cbi-dropdown>.more { + font-size: 1rem; + font-weight: 900; + line-height: 2; + display: flex; + flex-direction: column; + flex-grow: 0; + flex-shrink: 0; + justify-content: center; + padding: 0 .25em; + cursor: default; + text-align: center; + outline: 0; +} + +.cbi-dropdown>.more, +.cbi-dropdown>ul>li[placeholder] { + font-weight: bold; + display: none; + color: #777; + text-shadow: 1px 1px 0 #fff; +} + +.cbi-dropdown>ul>li { + display: none; + overflow: hidden; + align-items: center; + align-self: center; + flex-grow: 1; + flex-shrink: 1; + min-height: 20px; + padding: .25em; + white-space: nowrap; + text-overflow: ellipsis; + +} + +.cbi-dropdown>ul>li .hide-open { + display: initial; +} + +.cbi-dropdown>ul>li .hide-close { + display: none; +} + +.cbi-dropdown>ul>li[display]:not([display="0"]) { + border-left: thin solid #ccc; +} + +.cbi-dropdown[empty]>ul { + max-width: 1px; +} + +.cbi-dropdown>ul>li>form { + display: none; + margin: 0; + padding: 0; + pointer-events: none; +} + +.cbi-dropdown>ul>li img { + margin-right: .25em; + vertical-align: middle; +} + +.cbi-dropdown>ul>li>form>input[type="checkbox"] { + height: auto; + margin: 0; +} + +.cbi-dropdown>ul>li input[type="text"] { + height: 20px; +} + +.cbi-dropdown[open]>ul.dropdown { + position: absolute; + z-index: 1100; + display: block; + width: auto; + min-width: 100%; + max-width: none; + max-height: 200px !important; + border: thin solid #918e8c; + background: #f6f6f6; + + box-shadow: 0 0 4px #918e8c; + color: var(--main-menu-color); + + li { + color: #000; + } +} + +.cbi-dropdown>ul>li[display], +.cbi-dropdown[open]>ul.preview, +.cbi-dropdown[open]>ul.dropdown>li, +.cbi-dropdown[multiple]>ul>li>label, +.cbi-dropdown[multiple][open]>ul.dropdown>li, +.cbi-dropdown[multiple][more]>.more, +.cbi-dropdown[multiple][empty]>.more { + display: flex; + align-items: center; + flex-grow: 1; + +} + +.cbi-dropdown[empty]>ul>li, +.cbi-dropdown[optional][open]>ul.dropdown>li[placeholder], +.cbi-dropdown[multiple][open]>ul.dropdown>li>form { + display: block; +} + +.cbi-dropdown[open]>ul.dropdown>li .hide-open { + display: none; +} + +.cbi-dropdown[open]>ul.dropdown>li .hide-close { + display: initial; +} + +.cbi-dropdown[open]>ul.dropdown>li { + border-bottom: thin solid #ccc; + padding: 0.5rem 0.8rem; +} + +.cbi-dropdown[open]>ul.dropdown>li[selected] { + background: #b0d0f0; +} + +.cbi-dropdown[open]>ul.dropdown>li.focus { + background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%); +} + +.cbi-dropdown[open]>ul.dropdown>li:last-child { + margin-bottom: 0; + border-bottom: 0; +} + +.cbi-dropdown[open]>ul.dropdown>li[unselectable] { + opacity: .7; +} + +.cbi-dropdown[open]>ul.dropdown>li>input.create-item-input:first-child:last-child { + width: 100%; +} + +.cbi-dropdown[disabled] { + pointer-events: none; + opacity: .6; +} + +.cbi-dropdown .zonebadge { + width: 100%; +} + +.cbi-dropdown[open] .zonebadge { + width: auto; +} + +/* progressbar */ +.cbi-progressbar { + position: relative; + min-width: 170px; + height: 20px; + margin: 6px 0; + border: thin solid #999; + background: #eee; + border-radius: 0.2rem; + overflow: hidden; +} + +.cbi-progressbar>div { + width: 0; + height: 100%; + transition: width .25s ease-in; + background: #5bc0de; + background: var(--bar-bg); +} + +.cbi-progressbar::after { + font-family: monospace; + font-size: 1em; + font-weight: bold; + font-size-adjust: .38; + line-height: normal; + position: absolute; + top: 2px; + right: 0; + bottom: 2px; + left: 0; + overflow: hidden; + content: attr(title); + text-align: center; + white-space: pre; + text-overflow: ellipsis; +} + +#modal_overlay { + position: fixed; + z-index: 900; + top: 0; + right: 10000px; + bottom: 0; + left: -10000px; + overflow-y: scroll; + transition: opacity .125s ease-in; + opacity: 0; + background: rgba(0, 0, 0, .7); + -webkit-overflow-scrolling: touch; +} + +.modal { + display: flex; + align-items: center; + flex-wrap: wrap; + width: 90%; + min-width: 270px; + max-width: 600px; + min-height: 32px; + margin: 5em auto; + padding: 1em; + border-radius: 3px !important; + background: #fff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); +} + +.modal>* { + line-height: normal; + flex-basis: 100%; + margin-bottom: .5em; + max-width: 100%; +} + +.modal>pre, +.modal>textarea { + font-size: 1rem; + font-size-adjust: .35; + overflow: auto; + margin-bottom: .5em; + padding: 8.5px; + cursor: auto; + white-space: pre-wrap; + color: #eee; + outline: 0; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); +} + +.modal>h4 { + margin: .5em 0; +} + +.modal ul { + margin-left: 2.2em; +} + +.modal li { + list-style-type: square; + color: #808080; +} + +.modal p { + padding-left: .25rem; + word-break: break-word; +} + +.modal .label { + font-size: .6rem; + font-weight: normal; + padding: .1rem .3rem; + padding-bottom: 0; + cursor: default; + border-radius: 0; +} + +.modal .label.warning { + background-color: #f0ad4e !important; +} + +.modal .btn { + padding: .3rem .6rem; +} + +.modal.cbi-modal { + max-width: 90%; + max-height: none; +} + +body.modal-overlay-active { + overflow: hidden; + height: 100vh; +} + +body.modal-overlay-active #modal_overlay { + right: 0; + left: 0; + opacity: 1; +} + +.spinning { + position: relative; + padding-left: 32px !important; +} + +.spinning::before { + position: absolute; + top: 0; + bottom: 0; + left: .2em; + width: 32px; + content: ""; + background: url(../resources/icons/loading.gif) no-repeat center; + background-size: 16px; +} + +/* luci */ +.hidden { + display: none; +} + +.left, +.left::before { + text-align: left !important; +} + +.right, +.right::before { + text-align: right !important; +} + +.center, +.center::before { + text-align: center !important; +} + +.top { + align-self: flex-start !important; + vertical-align: top !important; +} + +.bottom { + align-self: flex-end !important; + vertical-align: bottom !important; +} + +.inline { + display: inline; +} + +.cbi-page-actions { + padding-top: 1rem; + text-align: right; +} + +.cbi-page-actions>form[method="post"] { + display: inline-block; +} + +.th[data-type="button"], +.td[data-type="button"], +.th[data-type="fvalue"], +.td[data-type="fvalue"] { + flex: 1 1 2em; + text-align: center; +} + +.ifacebadge { + display: inline-flex; + padding: .5rem .8rem; + border-bottom: thin solid #ccc; + background: #eee; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05); +} + +td>.ifacebadge, +.td>.ifacebadge { + font-size: .8rem; + background-color: #f0f0f0; +} + +.ifacebadge>em, +.ifacebadge>img { + display: inline-block; + align-self: flex-start; + margin: 0 .2rem; +} + +.ifacebadge>img+img { + margin: 0 .2rem 0 0; +} + +.network-status-table { + display: flex; + flex-wrap: wrap; +} + +.network-status-table .ifacebox { + flex-grow: 1; + margin: .5em; +} + +.network-status-table .ifacebox-body { + display: flex; + flex-direction: column; + height: 100%; +} + +.network-status-table .ifacebox-body>span { + flex: 10 10 auto; + height: 100%; +} + +.network-status-table .ifacebox-body>div { + display: flex; + flex-wrap: wrap; +} + +.network-status-table .ifacebox-body .ifacebadge { + align-items: center; + flex: 1 1 auto; + min-width: 220px; + margin: .5em 0em 0 0em; + padding: .5em; + background-color: #fff; +} + +/* textarea */ +.cbi-input-textarea { + font-family: monospace; + width: 100%; + min-height: 14rem; + padding: .8rem; + color: #000; +} + +#syslog { + font-size: small; + line-height: 1.25; + overflow-y: hidden; + width: 100%; + min-height: 15rem; + padding: 1rem; + resize: none; + color: #eee; + border: 0; + border-radius: 0.375rem; + background-color: #242424; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); +} + +#syslog:focus { + outline: 0; +} + +/* config changes */ +.uci-change-list { + font-family: monospace; +} + +.uci-change-list ins, +.uci-change-legend-label ins { + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #0f0; + background-color: #cfc; +} + +.uci-change-list del, +.uci-change-legend-label del { + font-style: normal; + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #f00; + background-color: #fcc; +} + +.uci-change-list var, +.uci-change-legend-label var { + font-style: normal; + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #ccc; + background-color: #eee; +} + +.uci-change-list var ins, +.uci-change-list var del { + font-style: normal; + padding: 0; + white-space: pre; + border: 0; +} + +.uci-change-legend { + padding: 5px; +} + +.uci-change-legend-label { + float: left; + width: 150px; +} + +.uci-change-legend-label>ins, +.uci-change-legend-label>del, +.uci-change-legend-label>var { + display: block; + float: left; + width: 10px; + height: 10px; + margin-right: 4px; +} + +.uci-change-legend-label var ins, +.uci-change-legend-label var del { + line-height: .4; + border: 0; +} + +.uci-change-list var, +.uci-change-list del, +.uci-change-list ins { + padding: .5rem; +} + +/* other fix */ +#iwsvg, +#iwsvg2, +#bwsvg { + border: thin solid #d4d4d4 !important; +} + +#iwsvg, +[data-page="admin-status-realtime-bandwidth"] #bwsvg { + border-top: 0 !important; +} + +.ifacebox { + line-height: 1.25; + display: inline-flex; + flex-direction: column; + min-width: 100px; + border-bottom: thin solid #ccc; + background-color: #f9f9f9; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 1px 2px rgba(0, 0, 0, .2); +} + +.ifacebox-head { + padding: .25em; + background: #eee; +} + +.ifacebox-head.active { + background: #5e72e4; + background: var(--bar-bg); + + * { + color: #fff; + color: var(--white); + } + +} + +.ifacebox-body { + padding: .5em 1rem; + line-height: 1.6em; +} + +.cbi-image-button { + margin-left: .5rem; +} + +.zonebadge { + display: inline-block; + padding: .2rem .5rem; +} + +.zonebadge .ifacebadge { + margin: .1rem .2rem; + padding: .2rem .3rem; + border: thin solid #6c6c6c; +} + +.zonebadge>input[type="text"] { + min-width: 10rem; + margin-top: .3rem; + padding: .16rem 1rem; +} + +.zonebadge>em, +.zonebadge>strong { + display: inline-block; + margin: 0 .2rem; +} + +.cbi-value-field .cbi-input-checkbox, +.cbi-value-field .cbi-input-radio { + margin-top: .1rem; +} + +.cbi-value-field>ul>li { + display: flex; +} + +.cbi-value-field>ul>li>label { + margin-top: .5rem; +} + +.cbi-value-field>ul>li .ifacebadge { + margin-top: -.5rem; + margin-left: .4rem; + background-color: #eee; +} + +.cbi-section-table-row>.cbi-value-field .cbi-dropdown { + min-width: 7rem; +} + +.cbi-section-create { + display: inline-flex; + align-items: center; + margin: 0.25rem 0 0.25rem 1rem; +} + +.cbi-section-create>* { + margin: .5rem; +} + +.cbi-section-remove { + padding: .5rem; +} + +div.cbi-value var, +td.cbi-value-field var, +.td.cbi-value-field var { + font-style: italic; + color: #0069d6; +} + +.cbi-optionals { + padding: 1rem 1rem 0 1rem; + border-top: thin solid #ccc; +} + +.cbi-dropdown-container { + position: relative; +} + +.cbi-tooltip-container, +span[data-tooltip], +span[data-tooltip] .label { + cursor: help !important; +} + +.cbi-tooltip { + position: absolute; + z-index: 1000; + left: -1000px; + padding: 2px 5px; + transition: opacity .25s ease-out; + white-space: pre; + pointer-events: none; + opacity: 0; + border-radius: 3px; + background: #fff; + box-shadow: 0 0 2px #444; +} + +.cbi-tooltip-container:hover .cbi-tooltip { + left: auto; + transition: opacity .25s ease-in; + opacity: 1; +} + +.zonebadge .cbi-tooltip { + margin: -1.5rem 0 0 -.5rem; + padding: .25rem; + background: inherit; +} + +.zonebadge-empty { + color: #404040; + background: repeating-linear-gradient(45deg, rgba(204, 204, 204, .5), rgba(204, 204, 204, .5) 5px, rgba(255, 255, 255, .5) 5px, rgba(255, 255, 255, .5) 10px); +} + +.zone-forwards { + display: flex; + min-width: 10rem; +} + +.zone-forwards>* { + flex: 1 1 45%; +} + +.zone-forwards>span { + flex-basis: 10%; + padding: 0 .25rem; + text-align: center; +} + +.zone-forwards .zone-src, +.zone-forwards .zone-dest { + display: flex; + flex-direction: column; +} + +.label { + font-size: .8rem; + font-weight: bold; + padding: .3rem .8rem; + white-space: nowrap; + text-decoration: none; + text-transform: uppercase; + color: #fff !important; + border-radius: 3px; + background-color: #bfbfbf; + text-shadow: none; +} + +label>input[type="checkbox"], +label>input[type="radio"] { + position: relative; + top: .4rem; + right: .2rem; + margin: 0; + vertical-align: bottom; +} + +label[data-index][data-depends] { + padding-right: 2em; +} + +.showSide { + display: none; +} + +.darkMask { + position: fixed; + z-index: 99; + display: none; + width: 100%; + height: 100%; + content: ""; + top: 0; + background-color: rgba(0, 0, 0, .56); +} + +/* diagnostics */ +#diag-rc-output>pre, +#command-rc-output>pre, +[data-page="admin-services-wol"] .notice code { + font-size: 1.2rem; + font-size-adjust: .35; + line-height: normal; + display: block; + overflow-y: hidden; + width: 100%; + padding: 8.5px; + white-space: pre; + color: #eee; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); +} + +[data-page="admin-network-diagnostics"] .table { + box-shadow: none; +} + +input[name="ping"], +input[name="traceroute"], +input[name="nslookup"] { + width: 80%; +} + +/* fix Main Login */ +.node-main-login { + .main { + top: 0; + height: 100% !important; + + .main-left { + display: none; + } + + .main-right { + width: 100%; + + header { + background: none !important; + box-shadow: none !important; + display: none !important; + } + + .login-bg { + display: block; + position: fixed; + width: 100%; + height: 100%; + left: 0px; + top: 0px; + background-size: cover; + background-color: #000; + background-position: top center; + transition: all 0.5s; + + &.blur { + transform: scale(1.05); + -webkit-filter: blur(5px); + /* Chrome, Safari, Opera */ + filter: blur(5px); + } + } + + #maincontent { + height: 100%; + padding-top: 23vh; + margin-top: 0rem; + background-color: transparent !important; + text-align: center; + + .container { + display: inline-block; + padding: 1rem; + position: relative; + margin-top: 2rem !important; + background-color: var(--secondary) !important; + border-radius: .375rem; + box-shadow: 0 0 2rem 0 rgba(136, 152, 170, .15); + text-align: left; + + + .alert-message { + &.warning { + position: absolute; + color: #fff; + width: calc(100% - 2rem); + box-sizing: border-box; + margin-top: 8rem; + border-radius: 5px !important; + padding: 0.5rem 2rem; + text-align: center; + background-color: var(--purple) !important; + p{ + color: #fff; + } + } + + &.error { + position: absolute; + color: #fff; + width: calc(100% - 2rem); + background-color: #f0ad4e; + border-color: #eea236; + box-sizing: border-box; + margin-top: -7rem; + border-radius: 5px !important; + padding: 1rem 2rem 0.5rem 2rem; + text-align: center; + p{ + color: #fff; + } + h4{ + font-size: 1rem; + } + .btn{ + height: auto; + } + } + } + + .cbi-map { + h2 { + width: 120px; + height: 120px; + color: #fff; + text-align: center; + letter-spacing: 4px; + display: block; + margin: -80px auto 15px auto; + padding: 0; + text-indent: -500px; + overflow: hidden; + border-radius: 60px; + border: #fff 3px solid; + background-image: url(head-icon.jpg); + background-size: cover; + box-shadow: 0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(156, 39, 176, 0.4); + } + + .cbi-map-descr { + text-align: center; + padding: 1rem; + color: #8898aa; + } + + .cbi-section { + padding: 0.5rem; + margin: 0 ; + background: none !important; + box-shadow: none !important; + + .cbi-section-node { + padding: 0; + + .cbi-value { + display: block; + padding: 0; + + * { + display: inline-block !important; + } + + .cbi-value-title { + display: none !important; + } + + .cbi-value-field { + position: relative; + width: 20rem; + margin-bottom: 1em; + + input { + font-size: 1rem; + line-height: 1.5; + display: block; + width: 100%; + height: calc(2.75rem + 2px); + padding: .625rem .75rem; + transition: all .15s cubic-bezier(.68, -.55, .265, 1.55); + color: #8898aa; + border: 0px solid #dee2e6; + border-radius: .25rem; + background-color: #fff; + background-clip: padding-box; + box-shadow: 0 1px 3px rgba(50, 50, 93, .15), 0 1px 0 rgba(0, 0, 0, .02); + box-sizing: border-box; + padding-left: 3em !important; + margin: 0; + + &:focus { + color: #8898aa; + + outline: 0; + background-color: #fff; + box-shadow: 0 3px 9px rgba(50, 50, 9, 0), 3px 4px 8px rgba(94, 114, 228, .1) + } + } + + &:before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e971"; + color: #adb5bd; + font-size: 1.5rem; + position: absolute; + z-index: 100; + left: 10px; + top: 10px; + } + } + + &.cbi-value-last .cbi-value-field:before { + content: "\e910"; + } + } + } + } + } + + .cbi-page-actions { + text-align: center; + padding-top: 0.5rem; + + .cbi-button { + font-size: 1rem; + height: auto; + position: relative; + transition: all .15s ease; + letter-spacing: .2em; + text-transform: none; + padding: .375rem 1.25rem; + will-change: transform; + line-height: 1.5em; + border: thin solid var(--purple); + background-color: var(--purple); + + &.cbi-button-reset { + display: none !important; + } + } + } + + } + + footer { + bottom: 0; + position: absolute; + width: 100%; + color: #fff; + + a { + color: #fff; + } + } + } + } + } +} + + + +@media screen and (min-height: 585px) { + .node-main-login footer { + display: none; + position: absolute; + bottom: 0; + width: 100%; + } +} + +/* fix status */ +.node-status-overview>.main fieldset:nth-child(4) .td:nth-child(2), +.node-status-processes>.main .table .tr .td:nth-child(3) { + white-space: normal; +} + +/* fix system reboot */ +[data-page="admin-system-reboot"] p { + padding-left: 0rem; + color: #fff; +} + +[data-page="admin-system-reboot"] .cbi-button { + background: #fb6340 !important; +} + +[data-page="admin-system-reboot"] p>span { + position: relative; + top: .1rem; + left: 1rem; +} + +/* samba */ +#cbi-samba [data-tab="template"] .cbi-value-field { + display: block; +} + +#cbi-samba [data-tab="template"] .cbi-value-title { + width: auto; + padding-bottom: .6rem; +} + +/* admin-system-admin-password */ +[data-page="admin-system-admin"] .cbi-map h2, +[data-page="admin-system-admin-password"] .cbi-map h2, +[data-page="admin-system-admin"] .cbi-map .cbi-map-descr, +[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr { + margin-left: 1.5rem; + color: #32325d; + color: var(--gray-dark); +} + + +/* software */ +[data-page="admin-system-opkg"] h2 { + margin-left: 1.5rem; + color: #32325d; + color: var(--gray-dark); +} + +.controls { + margin: .5em 1rem 1em 1rem !important; +} + +.controls>*>.btn:not([aria-label$="page"]) { + flex-grow: initial !important; + margin-top: .25rem; +} + +.controls>#pager>.btn[aria-label$="page"] { + font-size: 1.4rem; + font-weight: bold; +} + +.controls>*>label { + margin-bottom: .2rem; +} + +[data-page="admin-system-opkg"] div.btn { + line-height: 3; + display: inline; + padding: .3rem .6rem; +} + +[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), +[data-page="admin-system-opkg"] #maincontent>.container { + margin-top: 2rem; + padding-top: .1rem; +} + +[data-page="admin-system-opkg"] #maincontent>.container { + margin: 2rem; + margin-bottom: 1rem; +} + +.td.version, +.td.size { + white-space: normal !important; + word-break: break-word; +} + +.cbi-tabmenu+.cbi-section { + margin-top: 0; +} + +/* admin-system-crontab*/ +[data-page="admin-system-crontab"] #view p { + color: #fff; + margin-bottom: 1rem; +} + +/*admin-system-flash*/ +[data-page="admin-system-flash"] .cbi-value { + padding: 0; +} + +[data-page="admin-system-flash"] .cbi-section .cbi-section { + margin-top: 0; +} + +[data-page="admin-system-flash"] .cbi-map-tabbed { + border-radius: 0.375rem; +} + +[data-page="admin-system-flash"] legend { + display: block !important; + font-size: 1.2rem; + width: 100%; + display: block; + margin-bottom: 0; + padding: 1rem 0 1rem 1.5rem; + border-bottom: 1px solid rgba(0, 0, 0, .05); + line-height: 1.5; + margin-bottom: 0rem; + letter-spacing: 0.1rem; + color: #32325d; + font-weight: bold; +} + +[data-page="admin-system-flash"] .cbi-section-descr { + font-weight: 600; + padding: 1rem 0 1rem 1.5rem; + color: #525f7f; +} + +/* wireless overview */ +#cbi-wireless>#wifi_assoclist_table>.tr { + box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd; +} + +#cbi-wireless>#wifi_assoclist_table>.tr.placeholder>.td { + right: 33px; + bottom: 33px; + left: 33px; + border-top: thin solid #ddd !important; +} + +#cbi-wireless>#wifi_assoclist_table>.tr.table-titles { + box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd; +} + +#cbi-wireless>#wifi_assoclist_table>.tr.table-titles>.th { + border-bottom: thin solid #ddd; + box-shadow: 0 -1px 0 0 #ddd; +} + +#wifi_assoclist_table>.tr>.td[data-title="RX Rate / TX Rate"] { + width: 23rem; +} + +[data-page="admin-network-dhcp"] .cbi-value { + padding: 0; + +} + +[data-page="admin-network-dhcp"] [data-tab-active="true"] { + padding: 1rem 0 !important; +} + +/* firewall */ +#iptables { + margin: 0; +} + +.Firewall form { + margin: 2rem 2rem 0 0; + padding: 0; + box-shadow: none; +} + +#cbi-firewall-redirect table *, +#cbi-network-switch_vlan table *, +#cbi-firewall-zone table * { + font-size: small; +} + +#cbi-firewall-redirect table input[type="text"], +#cbi-network-switch_vlan table input[type="text"], +#cbi-firewall-zone table input[type="text"] { + width: 5rem; +} + +#cbi-firewall-redirect table select, +#cbi-network-switch_vlan table select, +#cbi-firewall-zone table select { + min-width: 3.5rem; +} + +#cbi-network-switch_vlan .th, +#cbi-network-switch_vlan .td { + flex-basis: 12%; +} + +#cbi-firewall-zone .table, +#cbi-network-switch_vlan .table { + display: block; +} + +#cbi-firewall-zone .td, +#cbi-network-switch_vlan .td { + width: 100%; +} + +[data-page="admin-network-firewall-custom"] #view p { + color: #fff; + margin-bottom: 1rem; + + textarea { + padding: 1rem; + border-radius: 0.375rem; + } +} + +/* applyreboot fix */ +#applyreboot-container { + margin: 2rem; +} + +#applyreboot-section { + line-height: 300%; + margin: 2rem; +} + +/* openvpn bug fix */ +.OpenVPN a { + line-height: initial !important; +} + +/* custom commands */ +.commandbox { + width: 24% !important; + margin: 10px 0 0 10px !important; + padding: .5rem 1rem; + border-bottom: thin solid #ccc; + background: #eee; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05); +} + +.commandbox h3 { + line-height: normal !important; + overflow: hidden; + margin: 6px 0 !important; + white-space: nowrap; + text-overflow: ellipsis; +} + +.commandbox div { + left: auto !important; +} + +.commandbox code { + position: absolute; + overflow: hidden; + max-width: 60%; + margin-left: 4px; + padding: 2px 3px; + white-space: nowrap; + text-overflow: ellipsis; +} + +.commandbox code:hover { + overflow-y: auto; + max-height: 50px; + white-space: normal; +} + +.commandbox p:first-of-type { + margin-top: -6px; +} + +.commandbox p:nth-of-type(2) { + margin-top: 2px; +} + +[data-page^="admin-system-commands"] .panel-title, +[data-page^="command-cfg"] .mobile-hide, +[data-page^="command-cfg"] .showSide { + display: none; +} + +#command-rc-output .alert-message { + line-height: 1.42857143; + position: absolute; + top: 40px; + right: 32px; + max-width: 40%; + margin: 0; + animation: anim-fade-in 1.5s forwards; + word-break: break-word; + opacity: 0; +} + +@keyframes anim-fade-in { + 100% { + opacity: 1; + } +} + +/* other fix */ +input[type="checkbox"] { + appearance: none !important; + -webkit-appearance: none !important; + border: 1px solid #dee2e6; + + width: 16px !important; + height: 16px !important; + padding: 0; + cursor: pointer; + transition: all 0.2s; + margin: 1rem 0 0 0; +} + +input[type="checkbox"]:checked { + border: 1px solid #5e72e4; + background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important; + background-color: #5e72e4; + background-size: 70%; + background-repeat: no-repeat; + background-position: center; +} + +/* IE hacks */ +@media all and (-ms-high-contrast: none) { + .main>.main-left>.nav>.slide>.menu::before { + top: 30.25%; + } + + .main>.main-left>.nav>li:last-child::before { + top: 20%; + } + + .showSide::before { + top: -12px; + } +} + +@media screen and (max-width: 1600px) { + header>.fill>.container>#logo { + margin: 0 2.5rem 0 .5rem; + } + + .main-left { + width: calc(0% + 13rem); + } + + .main-right { + width: calc(100% - 13rem); + } + + .btn:not(button), + .cbi-button { + font-size: .8rem; + padding: .2rem .6rem; + } + + .label { + padding: .2rem .6rem; + } + + + .cbi-value-title { + width: 15rem; + padding-right: .6rem; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"] { + min-width: 18rem; + } + + #cbi-firewall-zone .cbi-input-select { + min-width: 9rem; + } + + .cbi-input-textarea { + font-size: small; + } + + .node-admin-status>.main fieldset li>a { + padding: .3rem .6rem; + } +} + +@media screen and (max-width: 1366px) { + + + header>.fill>.container { + + cursor: default; + } + + + + .main-left { + width: calc(0% + 13rem); + } + + .main-right { + width: calc(100% - 13rem); + } + + + .tabs>li>a, + .cbi-tabmenu>li>a { + padding: .2rem .5rem; + } + + .panel-title { + font-size: 1.1rem; + padding-bottom: 1rem; + } + + table { + font-size: .7rem !important; + width: 100% !important; + } + + .table .cbi-input-text { + width: 100%; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"] { + min-width: 16rem; + } + + #cbi-firewall-zone .cbi-input-select { + min-width: 4rem; + } + + .main>.main-left>.nav>li, + .main>.main-left>.nav>li a, + .main>.main-left>.nav>.slide>.menu, + .main>.main-left>.nav>li>[data-title="Logout"] { + font-size: .9rem; + } + + .main>.main-left>.nav>.slide>.slide-menu>li>a { + font-size: .7rem; + } + + #modal_overlay { + top: 0rem; + } + + [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) { + display: block; + } + + [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table), + [data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table), + [data-page="admin-network-hosts"] .table, + [data-page="admin-network-routes"] .table { + overflow-y: visible; + } + + .commandbox { + width: 32% !important; + } + + .btn:not(button), .cbi-button { + font-size: 0.8rem; + padding: 0.2rem 0.6rem; + } +} + +@media screen and (max-width: 1152px) { + header>.fill>.container>#logo { + display: none; + } + + header>.fill>.container>.brand { + position: relative; + } + + html, + .main { + overflow-y: visible; + } + + .main>.loading>span { + top: 25%; + } + + .main-left { + width: calc(0% + 13rem); + } + + .main-right { + width: calc(100% - 13rem); + } + + + + body:not(.logged-in) .showSide { + visibility: hidden; + width: 0; + margin: 0; + } + + .node-main-login>.main .cbi-value-title { + text-align: left; + } + + .cbi-value-title { + width: 12rem; + padding-right: 1rem; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"] { + width: 16rem; + min-width: 16rem; + } + + /*.cbi-value input[type="password"],*/ + .cbi-value input[name^="pw"], + .cbi-value input[data-update="change"]:nth-child(2) { + width: 13rem !important; + min-width: 13rem; + } + + #diag-rc-output>pre, + #command-rc-output>pre, + [data-page="admin-services-wol"] .notice code { + font-size: 1rem; + } + + .table { + display: block; + } + + .Interfaces .table { + overflow-x: hidden; + } + + #packages.table { + display: grid; + } + + .tr { + display: flex; + flex-direction: row; + flex-wrap: wrap; + } + + .Overview .table[width="100%"]>.tr { + flex-wrap: nowrap; + } + + .tr.placeholder { + border-bottom: thin solid #ddd; + } + + .tr.placeholder>.td, + #cbi-firewall .tr>.td, + #cbi-network .tr:nth-child(2)>.td, + .cbi-section #wifi_assoclist_table .tr>.td { + border-top: 0; + } + + .th, + .td { + display: inline-block; + align-self: flex-start; + flex: 2 2 25%; + text-overflow: ellipsis; + word-wrap: break-word; + } + + .td select, + .td input[type="text"] { + width: 100%; + word-wrap: normal; + } + + .td [data-dynlist]>input, + .td input.cbi-input-password { + width: calc(100% - 1.5rem); + } + + .td[data-type="button"], + .td[data-type="fvalue"] { + flex: 1 1 12.5%; + text-align: left; + } + + .th.cbi-value-field, + .td.cbi-value-field, + .th.cbi-section-table-cell, + .td.cbi-section-table-cell { + flex-basis: auto; + padding-top: 1rem; + } + + .cbi-section-table-row { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + } + + .td.cbi-value-field, + .cbi-section-table-cell { + display: inline-block; + flex: 10 10 auto; + flex-basis: 50%; + text-align: center; + } + + .td.cbi-section-actions { + vertical-align: bottom; + } + + .tr.table-titles, + .tr.cbi-section-table-titles, + .tr.cbi-section-table-descr { + display: none; + } + + .tr[data-title]::before, + .tr.cbi-section-table-titles.named::before { + font-size: .9rem; + display: block; + flex: 1 1 100%; + border-bottom: thin solid rgba(0, 0, 0, .26); + background: #e9ecef; + } + + .td[data-title], + [data-page^="admin-status-realtime"] .td[id] { + text-align: left; + } + + .td[data-title]::before { + display: block; + } + + .cbi-button+.cbi-button { + margin-left: 0; + } + + .td.cbi-section-actions>*>*, + .td.cbi-section-actions>*>form>* { + margin: 2.1px 3px; + } + + .Firewall form { + position: static !important; + margin: 0 0 2rem 0; + padding: 2rem; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + } + + .Firewall form input { + width: 100% !important; + margin: 0; + margin-top: 1rem; + } + + .Firewall .center, + .Firewall .center::before { + text-align: left !important; + } + + .commandbox { + width: 100% !important; + margin-left: 0 !important; + } + + .btn:not(button), .cbi-button { + font-size: 0.8rem; + padding: 0.2rem 0.6rem; + } +} + + + + +@media screen and (max-width: 768px) { + body { + font-size: .8rem; + } + + .cbi-progressbar::after { + font-size: .95em; + line-height: 1.5; + } + + + + .main-left { + position: fixed; + z-index: 100; + width: 0; + } + + .main-right { + width: 100%; + } + + .showSide { + padding: 0.1rem; + position: relative; + z-index: 99; + display: inline-block !important; + + &::before { + font-family: 'argon' !important; + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e20e"; + font-size: 1.7rem; + } + } + + + header>.fill>.container>.brand { + display: inline-block; + } + + .main>.main-left>.nav>.slide>.menu, + .main>.main-left>.nav>li>[data-title="Logout"] { + font-size: 1.2rem; + } + + .main>.main-left>.nav>.slide>.slide-menu>li>a { + font-size: 0.8rem; + } + .cbi-section > div{ + overflow-x: auto; + } + +} +@media screen and (max-width: 600px) { + .mobile-hide{ + display: none; + } + #maincontent > .container { + margin: 0 1rem 1rem 1rem; + } + .cbi-value-title { + text-align: left; + } + + [data-page="admin-system-flash"] legend { + padding: 1rem 0 1rem 1rem; + + } + [data-page="admin-system-flash"] .cbi-section-descr { + padding: 1rem 0 1rem 1rem; + + } + + [data-page="admin-system-flash"] .cbi-value { + padding: 0 1rem; + } + + [data-page="admin-network-dhcp"] [data-tab-active="true"] { + padding: 1rem 1rem !important; + } + body{ + overflow-x: hidden; + } + .node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field { + width: 16rem; + } + + .node-main-login footer { + display: none; + } +} +@media screen and (min-width: 600px) { + ::-webkit-scrollbar { + width: 10px; + height: 10px; + } + + ::-webkit-scrollbar, + ::-webkit-scrollbar-corner { + background: transparent; + } + + ::-webkit-scrollbar-thumb { + background: #9e9e9e; + } + + ::-webkit-scrollbar-thumb:hover { + background: #757575; + } + + ::-webkit-scrollbar-thumb:active { + background: #424242; + } + + +} \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/custom.css b/luci-theme-argon/htdocs/luci-static/argon/custom.css new file mode 100644 index 000000000..20f03073b --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/custom.css @@ -0,0 +1,46 @@ +:root { + --main-color: #09c; + --header-bg: #09c; + --header-color: #fff; + --bar-bg: #5e72e4; + --menu-bg-color: #fff; + --menu-color: #5f6368; + --menu-color-hover: #202124; + --main-menu-color: #202124; + --submenu-bg-hover: #d4d4d4; + --submenu-bg-hover-active: #09c; + + --blue: #5e72e4; + --indigo: #5603ad; + --purple: #8965e0; + --pink: #f3a4b5; + --red: #f5365c; + --orange: #fb6340; + --yellow: #ffd600; + --green: #2dce89; + --teal: #11cdef; + --cyan: #2bffc6; + --white: #fff; + --gray: #8898aa; + --gray-dark: #32325d; + --light: #96999c; + --lighter: #e9ecef; + --primary: #5e72e4; + --secondary: #f7fafc; + --success: #2dce89; + --info: #11cdef; + --warning: #fb6340; + --danger: #f5365c; + --dark: #212529; + --default: #172b4d; + --white: #fff; + --neutral: #fff; + --darker: black; + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + + --font-body: "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; +} \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/favicon.png b/luci-theme-argon/htdocs/luci-static/argon/favicon.png new file mode 100644 index 000000000..7c3f3acb1 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/favicon.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.eot b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.eot new file mode 100644 index 000000000..efce636a8 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.eot differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.svg b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.svg new file mode 100644 index 000000000..c555b7594 --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.svg @@ -0,0 +1,1191 @@ + + + + +Created by FontForge 20090622 at Tue Jul 23 03:29:07 2019 + By deploy user +TypoGraphica ©Sharkshock Productions 2015. All Rights Reserved + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.ttf b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.ttf new file mode 100644 index 000000000..e11f89a0f Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.ttf differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.woff b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.woff new file mode 100644 index 000000000..fef38ca00 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.woff differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.eot b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.eot new file mode 100644 index 000000000..b7ed80cb8 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.eot differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.svg b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.svg new file mode 100644 index 000000000..202be2750 --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.svg @@ -0,0 +1,33 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.ttf b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.ttf new file mode 100644 index 000000000..7ef378399 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.ttf differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.woff b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.woff new file mode 100644 index 000000000..1832f5b9b Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.woff differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/head-icon.jpg b/luci-theme-argon/htdocs/luci-static/argon/head-icon.jpg new file mode 100644 index 000000000..dbb2abd43 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/head-icon.jpg differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icons/spinner.svg b/luci-theme-argon/htdocs/luci-static/argon/icons/spinner.svg new file mode 100644 index 000000000..6ddd3b3ed --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/icons/spinner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/bg1.jpg b/luci-theme-argon/htdocs/luci-static/argon/img/bg1.jpg new file mode 100644 index 000000000..87641a8e4 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/img/bg1.jpg differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/bg2.jpg b/luci-theme-argon/htdocs/luci-static/argon/img/bg2.jpg new file mode 100644 index 000000000..d9699ea49 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/img/bg2.jpg differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/bg3.jpg b/luci-theme-argon/htdocs/luci-static/argon/img/bg3.jpg new file mode 100644 index 000000000..16f7bd7de Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/img/bg3.jpg differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/bg4.jpg b/luci-theme-argon/htdocs/luci-static/argon/img/bg4.jpg new file mode 100644 index 000000000..26a52a535 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/img/bg4.jpg differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/js/jquery.min.js b/luci-theme-argon/htdocs/luci-static/argon/js/jquery.min.js new file mode 100644 index 000000000..4d9b3a258 --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="
    ",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(" + + + + + diff --git a/luci-theme-argon/luasrc/view/themes/argon/header.htm b/luci-theme-argon/luasrc/view/themes/argon/header.htm new file mode 100644 index 000000000..9ae4b3d3d --- /dev/null +++ b/luci-theme-argon/luasrc/view/themes/argon/header.htm @@ -0,0 +1,285 @@ +<%# + Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material Argon Template + + luci-theme-argon + Copyright 2019 Jerrykuku + + Have a bug? Please create an issue here on GitHub! + https://github.com/jerrykuku/luci-theme-argon/issues + + luci-theme-material: + Copyright 2015 Lutty Yang + + Agron Theme + https://demos.creative-tim.com/argon-dashboard/index.html + + Licensed to the public under the Apache License 2.0 +-%> + +<% + local sys = require "luci.sys" + local util = require "luci.util" + local http = require "luci.http" + local disp = require "luci.dispatcher" + + local boardinfo = util.ubus("system", "board") + + local node = disp.context.dispatched + + local fs = require "nixio.fs" + local nutil = require "nixio.util" + + + + -- send as HTML5 + http.prepare_content("text/html") + + math.randomseed(os.time()) + function glob(...) + local iter, code, msg = fs.glob(...) + if iter then + return nutil.consume(iter) + else + return nil, code, msg + end + end + + local bgcount = 0 + for f in ipairs(glob("/www/luci-static/argon/img/*")) do + bgcount = bgcount + 1 + end + + +-%> + + + + + + + <%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> + - LuCI + + + + + + + - LuCI"> + - LuCI"> + + + + + + <% if node and node.css then %> + + <% end -%> + <% if css then %> + + <% end -%> + + + + + + +"> + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + OMR OpenMPTCProuter +
    + +
    +
    +
    +
    +
    + +
    +
    + <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%> +
    +

    <%:No password set!%>

    +

    <%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%> +

    + <% if disp.lookup("admin/system/admin") then %> + + <% end %> +
    + <%- end -%> + + + + \ No newline at end of file diff --git a/luci-theme-argon/root/etc/uci-defaults/30_luci-theme-argon b/luci-theme-argon/root/etc/uci-defaults/30_luci-theme-argon new file mode 100644 index 000000000..401fbaaef --- /dev/null +++ b/luci-theme-argon/root/etc/uci-defaults/30_luci-theme-argon @@ -0,0 +1,7 @@ +#!/bin/sh +uci batch <<-EOF + set luci.themes.Argon=/luci-static/argon + set luci.main.mediaurlbase=/luci-static/argon + commit luci +EOF +exit 0 diff --git a/luci-theme-openmptcprouter/htdocs/luci-static/openmptcprouter/cascade.css b/luci-theme-openmptcprouter/htdocs/luci-static/openmptcprouter/cascade.css index 546edbdf3..7ec2c0d87 100644 --- a/luci-theme-openmptcprouter/htdocs/luci-static/openmptcprouter/cascade.css +++ b/luci-theme-openmptcprouter/htdocs/luci-static/openmptcprouter/cascade.css @@ -141,7 +141,7 @@ body { .container { width: 100%; - max-width: 940px; + max-width: 1200px; margin-left: auto; margin-right: auto; zoom: 1; @@ -1196,7 +1196,7 @@ footer { background: #fff; box-shadow: 0 0 3px #444; padding: 1em 1em .5em 1em; - max-height: 2400px; + /*max-height: 2400px;*/ min-width: 270px; } @@ -1828,7 +1828,7 @@ a.label:hover { form.inline { display: inline; margin-bottom: 0; } -header .pull-right { padding-top: 8px; } +/*header .pull-right { padding-top: 8px; }*/ #modemenu li:last-child span.divider { display: none } @@ -2209,7 +2209,7 @@ div.cbi-value var, background: #fff; box-shadow: 0 0 3px #444; padding: 1em 1em .5em 1em; - max-height: 2400px; + /*max-height: 2400px;*/ min-width: 270px; } diff --git a/mptcp/files/etc/uci-defaults/mptcp-defaults b/mptcp/files/etc/uci-defaults/mptcp-defaults index f5c8ce4db..324eb9560 100755 --- a/mptcp/files/etc/uci-defaults/mptcp-defaults +++ b/mptcp/files/etc/uci-defaults/mptcp-defaults @@ -3,11 +3,11 @@ if [ "$(uci -q show network.globals | grep mptcp_path_manager)" = "" ]; then uci -q batch <<-EOF >/dev/null set network.globals.multipath='enable' set network.globals.mptcp_path_manager='fullmesh' - set network.globals.mptcp_scheduler='default' + set network.globals.mptcp_scheduler='blest' set network.globals.congestion='bbr' set network.globals.mptcp_checksum=0 set network.globals.mptcp_debug=0 - set network.globals.mptcp_syn_retries=1 + set network.globals.mptcp_syn_retries=2 commit network EOF fi @@ -17,9 +17,9 @@ if [ "$(uci -q get network.globals.congestion)" != "bbr" ]; then commit network EOF fi -if [ "$(uci -q get network.globals.mptcp_syn_retries)" != "1" ]; then +if [ "$(uci -q get network.globals.mptcp_syn_retries)" = "1" ]; then uci -q batch <<-EOF >/dev/null - set network.globals.mptcp_syn_retries=1 + set network.globals.mptcp_syn_retries=2 commit network EOF fi diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index 08d13a604..2e19c0fc8 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -10,9 +10,7 @@ set_route() { interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') [ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') [ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname) - #multipath_current_config=$(multipath $interface_if | grep 'deactivated') interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up") - #if [ "$multipath_config" != "off" ] && [ "$SETROUTE" != true ] && [ "$INTERFACE" != "$PREVINTERFACE" ] && [ "$multipath_current_config" = "" ]; then if [ "$multipath_config" != "off" ] && [ "$SETROUTE" != true ] && [ "$INTERFACE" != "$PREVINTERFACE" ] && [ "$interface_current_config" = "up" ]; then interface_gw="$(uci -q get network.$INTERFACE.gateway)" if [ -z "$interface_gw" ]; then @@ -28,7 +26,6 @@ set_route() { _log "$PREVINTERFACE down. Replace default route by $interface_gw dev $interface_if" ip route replace default scope global nexthop via $interface_gw dev $interface_if && SETROUTE=true ip route replace default via $interface_gw dev $interface_if table 991337 - #SETROUTE=true fi fi } @@ -76,12 +73,39 @@ set_routes_intf() { if [ -z "$interface_gw" ]; then interface_gw=$(ubus call network.interface.${INTERFACE}_4 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n") fi - if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ "$(ip route show $serverip | grep $interface_if)" = "" ]; then + #if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ "$(ip route show $serverip | grep $interface_if)" = "" ]; then + if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ]; then routesintf="$routesintf nexthop via $interface_gw dev $interface_if weight 1" fi fi } +set_route_balancing() { + local multipath_config interface_gw interface_if + INTERFACE=$1 + multipath_config=$(uci -q get network.$INTERFACE.multipath) + [ -z "$multipath_config" ] && multipath_config=$(uci -q get openmptcprouter.$INTERFACE.multipath || echo "off") + interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') + [ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname) + interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up") + if [ "$multipath_config" != "off" ] && [ "$interface_current_config" = "up" ]; then + interface_gw="$(uci -q get network.$INTERFACE.gateway)" + if [ -z "$interface_gw" ]; then + interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n") + fi + if [ -z "$interface_gw" ]; then + interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="0.0.0.0"].nexthop' | tr -d "\n") + fi + if [ -z "$interface_gw" ]; then + interface_gw=$(ubus call network.interface.${INTERFACE}_4 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n") + fi + if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ]; then + routesbalancing="$routesbalancing nexthop via $interface_gw dev $interface_if weight 1" + fi + fi +} + set_server_all_routes() { local server=$1 local serverip @@ -91,12 +115,12 @@ set_server_all_routes() { [ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]') multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath) [ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off") - if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show $serverip | grep nexthop | grep $OMR_TRACKER_DEVICE_GATEWAY | grep $OMR_TRACKER_INTERFACE)" = "" ] && [ "$multipath_config_route" != "off" ]; then + if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show $serverip | grep nexthop | grep $OMR_TRACKER_DEVICE_GATEWAY | grep $OMR_TRACKER_DEVICE)" = "" ] && [ "$multipath_config_route" != "off" ]; then routesintf="" config_load network config_foreach set_routes_intf interface [ -n "$routesintf" ] && { - _log "Set server $server ($serverip) default route $routesintf" + _log "Set server $server default route $serverip $routesintf" ip route replace $serverip scope global $routesintf } fi @@ -193,6 +217,25 @@ default_gw=$(ip route show default | grep -v "metric" | awk '/default/ {print $3 # An interface in error will never be used in MPTCP if [ "$OMR_TRACKER_STATUS" = "ERROR" ]; then + if [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ]; then + timeout 1 mmcli -L | while read MODEM; do + MODEM_ID=$(echo $MODEM | awk -F' ' '{print $1}' | awk -F/ '{print $6}') + MODEM_INFO="$(timeout 1 mmcli -m $MODEM_ID --output-keyvalue)" + if [ -n "$MODEM_INFO" ] && [ "$(echo "$MODEM_INFO" | grep 'modem.generic.device ' | awk -F": " '{print $2}')" = "$(uci -q get network.$OMR_TRACKER_INTERFACE.device)" ]; then + STATE=$(echo "$MODEM_INFO" | grep 'modem.generic.state' | awk -F": " '{print $2}') + if [ "$STATE" = "connected" ] || [ "$STATE" = "disabled" ] || [ "$STATE" = "searching" ] || [ "$STATE" = "registered" ] || [ "$STATE" = "idle" ]; then + _log "No answer from $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE), restart interface" + _log "Set $OMR_TRACKER_INTERFACE down" + ifdown $OMR_TRACKER_INTERFACE + sleep 5 + _log "Set $OMR_TRACKER_INTERFACE up" + ifup $OMR_TRACKER_INTERFACE + sleep 10 + fi + fi + done + fi + if [ "$OMR_TRACKER_PREV_STATUS" = "$OMR_TRACKER_STATUS" ]; then exit 0 fi @@ -211,9 +254,9 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ]; then fi config_load openmptcprouter config_foreach del_server_route server - if [ "$(uci -q get openmptcprouter.settings.master)" = "redundant" ]; then - config_foreach set_server_all_routes server - fi + #if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then + # config_foreach set_server_all_routes server + #fi } if [ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]; then @@ -247,9 +290,12 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ]; then /etc/init.d/shadowsocks-libev rules_up fi fi + if [ "$(uci -q get dsvpn.vpn.enable)" = "1" ]; then + /etc/init.d/dsvpn restart + fi config_load openmptcprouter config_foreach disable_pihole server - if [ "$(uci -q get openmptcprouter.settings.master)" != "redundant" ]; then + if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then config_foreach set_server_default_route server fi fi @@ -272,6 +318,7 @@ if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "om if ([ "$default_gw" != "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]) && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ]; then _log "Tunnel up : Replace default route by $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE" ip route replace default scope global nexthop via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE + /etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 fi if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "hi2" ]; then _log "Tunnel up disable use of ShadowSocks for UDP" @@ -285,6 +332,9 @@ if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "om # Set VPN MTU if [ -n "$OMR_TRACKER_LATENCY" ] && ([ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ]); then local serverip=$(uci -q get shadowsocks-libev.sss0.server) + if [ "$serverip" = "192.168.1.3" ] || [ "$serverip" = "127.0.0.1" ]; then + serverip="" + fi uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE="interface" uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY" if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.mtu)" ]; then @@ -339,14 +389,14 @@ fi multipath_config=$(uci -q get "network.$OMR_TRACKER_INTERFACE.multipath") [ -z "$multipath_config" ] && multipath_config=$(uci -q get "openmptcprouter.$OMR_TRACKER_INTERFACE.multipath" || echo "off") if [ "$multipath_config" = "master" ]; then - if ([ "$default_gw" != "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]) && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ]; then + if ([ "$default_gw" != "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]) && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then omrvpn_intf=$(uci -q get "network.omrvpn.ifname" || echo "tun") if [ -n "$omrvpn_intf" ] && [ "$(ip route show default | awk '/default/ {print $5}' | grep $omrvpn_intf)" = "" ]; then _log "Master up : Replace default route by $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE" ip route replace default scope global nexthop via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE else config_load openmptcprouter - if [ "$(uci -q get openmptcprouter.settings.master)" = "redundant" ]; then + if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then config_foreach set_server_all_routes server elif [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then config_foreach set_server_default_route server @@ -354,11 +404,28 @@ if [ "$multipath_config" = "master" ]; then fi ip route replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE table 991337 fi + if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(ip route show default | grep weight)" = "" ]; then + omrvpn_intf=$(uci -q get "network.omrvpn.ifname" || echo "tun") + if [ -n "$omrvpn_intf" ] && [ "$(ip route show default | awk '/default/ {print $5}' | grep $omrvpn_intf)" = "" ]; then + ip route replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE table 991337 + routesbalancing="" + config_load network + config_foreach set_route_balancing interface + [ -n "$routesbalancing" ] && { + _log "Set ip route replace default scope global $routesbalancing" + ip route replace default scope global $routesbalancing + } + fi + fi + if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") + $((10 + RANDOM % 31)) - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ] || [ "$(uci -q show openmptcprouter | grep get_config=\'1\')" != "" ] || [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" != "" ]; then + /etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 + fi multipath_config="on" fi + if [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then config_load openmptcprouter - if [ "$(uci -q get openmptcprouter.settings.master)" = "redundant" ]; then + if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then config_foreach set_server_all_routes server elif [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then config_foreach set_server_route server @@ -370,7 +437,7 @@ fi [ -z "$download" ] && download="$(uci -q get sqm.$OMR_TRACKER_INTERFACE.download)" upload="$(uci -q get network.$OMR_TRACKER_INTERFACE.uploadspeed)" [ -z "$upload" ] && upload="$(uci -q get sqm.$OMR_TRACKER_INTERFACE.upload)" - if [ "$(pgrep glorytun-udp)" != "" ] && ([ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP)" = "" ] || [ "$(glorytun-udp path $OMR_TRACKER_DEVICE_IP | awk '{print $15'})" = "0" ] || [ "$(glorytun-udp path $OMR_TRACKER_DEVICE_IP | awk '{print $18'})" = "0" ]); then + if [ "$(pgrep glorytun-udp)" != "" ] && ([ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP)" = "" ] || [ "$(glorytun-udp path $OMR_TRACKER_DEVICE_IP | awk '{print $13}')" = "0" ] || [ "$(glorytun-udp path $OMR_TRACKER_DEVICE_IP | awk '{print $16}')" = "0" ]); then if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then if [ "$(uci -q get glorytun.vpn.rateauto)" = "1" ]; then glorytun-udp path $OMR_TRACKER_DEVICE_IP dev tun0 up rate auto tx ${upload}000 rx ${download}000 > /dev/null 2>&1 @@ -396,7 +463,7 @@ fi #ubus call network reload # Save wan settings for status page -if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") + $((10 + RANDOM % 31)) - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ] || [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state)" = "down" ]; then +if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") + $((30 + RANDOM % 31)) - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ] || [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state)" = "down" ]; then _log "Get status and settings for $OMR_TRACKER_INTERFACE..." if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ]; then local ipaddr="$(omr-ip-intf $OMR_TRACKER_DEVICE)" @@ -462,7 +529,6 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1 } - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") else [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && { local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip) @@ -486,10 +552,23 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") fi fi - if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ] && [ -n "$(curl -s -m 1 -X GET http://$OMR_TRACKER_DEVICE_GATEWAY/api/webserver/SesTokInfo)" ]; then - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.manufacturer='huawei' + protocol="$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" + if [ "$proto" = "qmi" ]; then + intfdata="$(omr-qmi $OMR_TRACKER_DEVICE all | tr -d '\n')" + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.operator=$(echo $intfdata | awk -F";" '{print $2}') + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.number=$(echo $intfdata | awk -F";" '{print $3}') + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state=$(echo $intfdata | awk -F";" '{print $4}') + elif [ "$proto" = "modemmanager" ]; then + intfdata="$(omr-modemmanager $OMR_TRACKER_DEVICE all)" + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.operator=$(echo $intfdata | awk -F";" '{print $2}') + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.number=$(echo $intfdata | awk -F";" '{print $3}') + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state=$(echo $intfdata | awk -F";" '{print $4}') else - uci -q delete openmptcprouter.$OMR_TRACKER_INTERFACE.manufacturer + if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ] && [ -n "$(curl -s -m 1 -X GET http://$OMR_TRACKER_DEVICE_GATEWAY/api/webserver/SesTokInfo)" ]; then + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.manufacturer='huawei' + else + uci -q delete openmptcprouter.$OMR_TRACKER_INTERFACE.manufacturer + fi fi if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ]; then uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(( $(date +"%s") - 3400 )) @@ -498,7 +577,7 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( else _log "Get status and settings for $OMR_TRACKER_INTERFACE... Done" uci -q commit openmptcprouter - /etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 + #/etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 fi dns_flush fi @@ -538,7 +617,7 @@ fi } # If a service is down, force restart it -if [ "$(pgrep ss-redir)" = "" ] && [ "$(pgrep ss-local)" = "" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ]; then +if [ "$(pgrep ss-redir)" = "" ] && [ "$(pgrep ss-local)" = "" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "192.18.1.3" ] && [ "$(uci -q get shadowsocks-libev.sss0.key)" != "" ]; then _log "Can't find Shadowsocks, restart it..." /etc/init.d/shadowsocks-libev restart sleep 5 @@ -570,7 +649,7 @@ set_get_config() { [ -n "$server" ] && uci -q set openmptcprouter.${server}.get_config=1 } -if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.key)" = "" ]; then +if [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.key)" = "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "192.18.1.3" ]; then config_load openmptcprouter config_foreach set_get_config server uci -q commit openmptcprouter @@ -581,7 +660,7 @@ if [ "$(uci -q get glorytun.vpn.enable)" = "1" ] && [ "$(uci -q get glorytun.vpn uci -q commit openmptcprouter fi -if [ "$(uci -q show openmptcprouter | grep get_config=\'1\')" != "" ] || [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" != "" ]; then - /etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 - sleep 5 -fi \ No newline at end of file +#if [ "$(uci -q show openmptcprouter | grep get_config=\'1\')" != "" ] || [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" != "" ]; then +# /etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 +# sleep 5 +#fi \ No newline at end of file diff --git a/mptcpd/Makefile b/mptcpd/Makefile new file mode 100644 index 000000000..d3c8cb0b8 --- /dev/null +++ b/mptcpd/Makefile @@ -0,0 +1,55 @@ +# +# Copyright (C) 2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter project +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=mptcpd +PKG_VERSION:=0.3 +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://github.com/intel/mptcpd/releases/download/v0.3 +PKG_HASH:=c2e1711e01b11f16a0c91dc0f3815b6460e603f52a31225d3a4d4012e858c967 +PKG_RELEASE:=1 +PKG_MAINTAINER:=Ycarus (Yannick Chabanois) + +PKG_FORTIFY_SOURCE:=2 +PKG_INSTALL:=1 +PKG_BUILD_PARALLEL:=1 +PKG_BUILD_DEPENDS:=!USE_GLIBC:argp-standalone + +include $(INCLUDE_DIR)/package.mk + +define Package/$(PKG_NAME) +SECTION:=net +CATEGORY:=Network +DEPENDS:=+libell +TITLE:=mptcpd +URL:=https://github.com/intel/mptcpd +endef + +define Package/$(PKG_NAME)/conffiles +/etc/mptcpd/mptcpd.conf +endef + +TARGET_CFLAGS += -D_GNU_SOURCE -Wno-unused-result -Wno-format-nonliteral + +define Build/Compile + +$(MAKE_VARS) $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) $(MAKE_FLAGS) +endef + +define Package/$(PKG_NAME)/install + $(INSTALL_DIR) $(1)/usr/bin + $(CP) $(PKG_INSTALL_DIR)/usr/bin/mptcpd $(1)/usr/bin/mptcpd + $(INSTALL_DIR) $(1)/usr/include/mptcpd + $(CP) $(PKG_INSTALL_DIR)/usr/include/mptcpd/*.h $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib/mptcpd + $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/mptcpd/* $(1)/usr/lib/mptcpd/ + $(INSTALL_DIR) $(1)/etc/mptcpd + $(INSTALL_DATA) $(PKG_BUILD_DIR)/etc/mptcpd.conf $(1)/etc/mptcpd/mptcpd.conf +endef + +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/mptcpd/patches/log.patch b/mptcpd/patches/log.patch new file mode 100644 index 000000000..c0bc52e3c --- /dev/null +++ b/mptcpd/patches/log.patch @@ -0,0 +1,24 @@ +--- a/src/configuration.c 2020-04-14 21:31:22.057292953 +0200 ++++ b/src/configuration.c 2020-04-14 21:32:13.712364449 +0200 +@@ -35,10 +35,10 @@ + */ + //@{ + /// Underlying string concatenation macro. +-#define MPTCPD_CONCAT_IMPL(x, ...) x ## __VA_ARGS__ ++//#define MPTCPD_CONCAT_IMPL(x, ...) x ## __VA_ARGS__ + + /// Concatenate strings using the preprocessor. +-#define MPTCPD_CONCAT(x, ...) MPTCPD_CONCAT_IMPL(x, __VA_ARGS__) ++//#define MPTCPD_CONCAT(x, ...) MPTCPD_CONCAT_IMPL(x, __VA_ARGS__) + //@} + + // Compile-time default logging choice +@@ -47,7 +47,7 @@ + # error Problem configuring default log message destination. + #endif + /// Name of the default logging function determined at compile-time. +-#define MPTCPD_SET_LOG_FUNCTION MPTCPD_CONCAT(l_log_set_, MPTCPD_LOGGER) ++#define MPTCPD_SET_LOG_FUNCTION l_log_set_stderr + + /** + * @brief Get the function that sets the log message destination. diff --git a/ndpi-netfilter2/Makefile b/ndpi-netfilter2/Makefile index fa3128661..5b8ae47d3 100644 --- a/ndpi-netfilter2/Makefile +++ b/ndpi-netfilter2/Makefile @@ -10,11 +10,9 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=ndpi-netfilter2 -PKG_VERSION:=56d8788 -#PKG_VERSION:=b353209 PKG_RELEASE:=2 -PKG_REV:=56d8788 -#PKG_REV:=b353209 +PKG_REV:=7aa4c293f23d6ab1fac5574c8e9c486cb1ced93d +PKG_VERSION:=3.2-$(PKG_REV) PKG_SOURCE_PROTO:=git PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 @@ -41,8 +39,8 @@ define Package/iptables-mod-ndpi/description nDPI is a ntop-maintained superset of the popular OpenDPI library endef -CONFIGURE_CMD = ./autogen.sh -CONFIGURE_ARGS += --with-pic +#CONFIGURE_CMD = ./autogen.sh +#CONFIGURE_ARGS += --with-pic MAKE_PATH := ndpi-netfilter MAKE_FLAGS += \ @@ -52,6 +50,18 @@ MAKE_FLAGS += \ CROSS_COMPILE="$(TARGET_CROSS)" \ NDPI_PATH=$(PKG_BUILD_DIR)/ndpi-netfilter +define Build/Configure + cd $(PKG_BUILD_DIR) && \ + CC="" ./autogen.sh \ + --host="$(GNU_TARGET_NAME)" +# --with-pic \ +# CFLAGS="$(TARGET_CFLAGS)" \ +# HOST_CFLAGS="$(BUILD_CFLAGS)" \ +# BUILD_CPPFLAGS="$(TARGET_CPPLAGS)" \ +# BUILD_CFLAGS="$(TARGET_CFLAGS)" \ +# BUILD_LDFLAGS="$(TARGET_LDFLAGS)" +endef + define Build/Compile (cd $(PKG_BUILD_DIR)/src/lib &&\ gcc -g -O2 -fPIC -DPIC -DNDPI_LIB_COMPILATION -I../../src/include/ -I../../src/lib/third_party/include/ ndpi_network_list_compile.c -o ndpi_network_list_compile &&\ diff --git a/omr-6in4/files/etc/init.d/omr-6in4 b/omr-6in4/files/etc/init.d/omr-6in4 index e9da56e07..91d593f06 100755 --- a/omr-6in4/files/etc/init.d/omr-6in4 +++ b/omr-6in4/files/etc/init.d/omr-6in4 @@ -37,7 +37,7 @@ set_ipv6_state() { else logger -t "omr-6in4" "Enable IPv6" uci -q batch <<-EOF >/dev/null - set dhcp.lan.dhcpv6="server1" + set dhcp.lan.dhcpv6="server" set dhcp.lan.ra="server" set dhcp.lan.ra_default="1" set dhcp.lan.ra_preference="high" @@ -56,7 +56,7 @@ set_ipv6_state() { start_service() { - [ "$(uci -q get openmptcprouter.settings.disable_ipv6)" != "$(sysctl net.ipv6.conf.all.disable_ipv6)" ] && set_ipv6_state + [ "$(uci -q get openmptcprouter.settings.disable_ipv6)" != "$(sysctl -n net.ipv6.conf.all.disable_ipv6)" ] && set_ipv6_state [ "$(uci -q get openmptcprouter.settings.disable_ipv6)" = "1" ] && { ifdown omr6in4 return diff --git a/omr-quota/Makefile b/omr-quota/Makefile index 355f9e6f6..5019a7e14 100644 --- a/omr-quota/Makefile +++ b/omr-quota/Makefile @@ -18,7 +18,7 @@ define Package/$(PKG_NAME) CATEGORY:=Network TITLE:=OpenMPTCProuter quota PKGARCH:=all - DEPENDS:=+vnstat + DEPENDS:=+vnstat2 endef define Package/$(PKG_NAME)/description diff --git a/omr-quota/files/bin/omr-quota b/omr-quota/files/bin/omr-quota index 478169712..69c2d2ba6 100755 --- a/omr-quota/files/bin/omr-quota +++ b/omr-quota/files/bin/omr-quota @@ -13,13 +13,23 @@ while true; do rx=`vnstat -i $OMR_QUOTA_INTERFACE --json | jsonfilter -q -e '@.interfaces[0].traffic.months[-1].rx' | tr -d "\n"` tx=`vnstat -i $OMR_QUOTA_INTERFACE --json | jsonfilter -q -e '@.interfaces[0].traffic.months[-1].tx' | tr -d "\n"` tt=$((rx + tx)) - if [ -n "$OMR_QUOTA_RX" ] && [ "$OMR_QUOTA_RX" -gt 0 ] && [ -n "$rx" ] && [ "$OMR_QUOTA_RX" -ge "$rx" ] && [ "$(ifstatus $OMR_QUOTA_INTERFACE | jsonfilter -e '@.up')" = "true" ]; then - ifdown $OMR_QUOTA_INTERFACE - elif [ -n "$OMR_QUOTA_TX" ] && [ "$OMR_QUOTA_TX" -gt 0 ] && [ -n "$tx" ] && [ "$OMR_QUOTA_TX" -ge "$tx" ] && [ "$(ifstatus $OMR_QUOTA_INTERFACE | jsonfilter -e '@.up')" = "true" ]; then - ifdown $OMR_QUOTA_INTERFACE - elif [ -n "$OMR_QUOTA_TT" ] && [ "$OMR_QUOTA_TT" -gt 0 ] && [ -n "$tt" ] && [ "$OMR_QUOTA_TT" -ge "$tt" ] && [ "$(ifstatus $OMR_QUOTA_INTERFACE | jsonfilter -e '@.up')" = "true" ]; then - ifdown $OMR_QUOTA_INTERFACE - else + if [ -n "$OMR_QUOTA_RX" ] && [ "$OMR_QUOTA_RX" -gt 0 ] && [ -n "$rx" ] && [ "$OMR_QUOTA_RX" -le "$rx" ]; then + if [ "$(ifstatus $OMR_QUOTA_INTERFACE | jsonfilter -e '@.up')" = "true" ]; then + logger -t "OMR-QUOTA" "Set interface $OMR_QUOTA_INTERFACE down, RX quota reached" + ifdown $OMR_QUOTA_INTERFACE + fi + elif [ -n "$OMR_QUOTA_TX" ] && [ "$OMR_QUOTA_TX" -gt 0 ] && [ -n "$tx" ] && [ "$OMR_QUOTA_TX" -le "$tx" ]; then + if [ "$(ifstatus $OMR_QUOTA_INTERFACE | jsonfilter -e '@.up')" = "true" ]; then + logger -t "OMR-QUOTA" "Set interface $OMR_QUOTA_INTERFACE down, TX quota reached" + ifdown $OMR_QUOTA_INTERFACE + fi + elif [ -n "$OMR_QUOTA_TT" ] && [ "$OMR_QUOTA_TT" -gt 0 ] && [ -n "$tt" ] && [ "$OMR_QUOTA_TT" -le "$tt" ]; then + if [ "$(ifstatus $OMR_QUOTA_INTERFACE | jsonfilter -e '@.up')" = "true" ]; then + logger -t "OMR-QUOTA" "Set interface $OMR_QUOTA_INTERFACE down, RX+TX quota reached" + ifdown $OMR_QUOTA_INTERFACE + fi + elif [ -n "$OMR_QUOTA_RX" ] && [ "$OMR_QUOTA_RX" -gt 0 ] && [ -n "$OMR_QUOTA_TX" ] && [ "$OMR_QUOTA_TX" -gt 0 ] && [ -n "$OMR_QUOTA_TT" ] && [ "$OMR_QUOTA_TT" -gt 0 ] && [ "$(ifstatus $OMR_QUOTA_INTERFACE | jsonfilter -e '@.up')" = "false" ]; then + logger -t "OMR-QUOTA" "Set interface $OMR_QUOTA_INTERFACE up" ifup $OMR_QUOTA_INTERFACE fi sleep "$OMR_QUOTA_INTERVAL" diff --git a/omr-quota/files/etc/init.d/omr-quota b/omr-quota/files/etc/init.d/omr-quota index d92ba5038..0d81f6634 100755 --- a/omr-quota/files/etc/init.d/omr-quota +++ b/omr-quota/files/etc/init.d/omr-quota @@ -21,16 +21,16 @@ _launch_quota() { interface=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]') [ -z "$interface" ] && return - + + [ -z "$txquota" ] && [ -z "$rxquota" ] && [ -z "$ttquota" ] && return + [ "$enabled" = "0" ] && return + [ "$(uci get vnstat.@vnstat[-1].interface | grep $interface)" = "" ] && { uci -q batch <<-EOF add_list vnstat.@vnstat[-1].interface=$interface EOF } - [ -z "$txquota" ] && [ -z "$rxquota" ] && [ -z "$ttquota" ] && return - [ "$enabled" = "0" ] && return - procd_open_instance procd_set_param command /bin/omr-quota "$interface" procd_append_param env "OMR_QUOTA_TX=$txquota" diff --git a/omr-tracker/files/bin/omr-tracker b/omr-tracker/files/bin/omr-tracker index 306105b76..e667ae8e1 100755 --- a/omr-tracker/files/bin/omr-tracker +++ b/omr-tracker/files/bin/omr-tracker @@ -207,7 +207,7 @@ while true; do fi fi if [ -z "$OMR_TRACKER_DEVICE_GATEWAY" ]; then - OMR_TRACKER_DEVICE_ROUTE=$(ip -4 r list dev "$OMR_TRACKER_DEVICE" | grep via | grep -v default | grep -v metric | grep -v / | awk '{print $1}' | tr -d "\n") + OMR_TRACKER_DEVICE_ROUTE=$(ip -4 r list dev "$OMR_TRACKER_DEVICE" | grep via | grep -v default | grep -v metric | grep -v / | awk '{print $1; exit}' | tr -d "\n") fi if [ -z "$OMR_TRACKER_DEVICE_GATEWAY" ]; then OMR_TRACKER_DEVICE_GATEWAY=$(ip -4 r list dev "$OMR_TRACKER_DEVICE" | grep kernel | awk '/proto kernel/ {print $1}' | tr -d "\n") @@ -240,14 +240,14 @@ while true; do config_foreach _ping_server server $OMR_TRACKER_DEVICE fi if [ "$serverip_ping" = false ] && [ -n "$OMR_TRACKER_HOST" ]; then + OMR_TRACKER_HOST=$(resolveip -4 $OMR_TRACKER_HOST | tr -d "\n") if [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "3g" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "qmi" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "ncm" ]; then - OMR_TRACKER_HOST=$(resolveip -4 $OMR_TRACKER_HOST | tr -d "\n") # Check if route is not used - while ! ip route add $OMR_TRACKER_HOST via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP > /dev/null 2&>1 + while ! ip route add $OMR_TRACKER_HOST via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP > /dev/null 2>&1 do logger -t "omr-tracker" "Can't create route to $OMR_TRACKER_HOST via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE src $OMR_TRACKER_DEVICE_IP. waiting..." sleep 2 - ip route del "$OMR_TRACKER_HOST" via "$OMR_TRACKER_DEVICE_GATEWAY" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP" > /dev/null 2&>1 + ip route del "$OMR_TRACKER_HOST" via "$OMR_TRACKER_DEVICE_GATEWAY" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP" > /dev/null 2>&1 _restart done fi @@ -261,7 +261,7 @@ while true; do _dns "$OMR_TRACKER_HOST" "$OMR_TRACKER_DEVICE_IP" "yes" statusb=$? fi - ip route del "$OMR_TRACKER_HOST" via "$OMR_TRACKER_DEVICE_GATEWAY" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP" > /dev/null 2&>1 + ip route del "$OMR_TRACKER_HOST" via "$OMR_TRACKER_DEVICE_GATEWAY" dev "$OMR_TRACKER_DEVICE" src "$OMR_TRACKER_DEVICE_IP" > /dev/null 2>&1 if $(exit $statusb); then OMR_TRACKER_STATUS_MSG="" OMR_TRACKER_STATUS="OK" diff --git a/omr-tracker/files/bin/omr-tracker-ss b/omr-tracker/files/bin/omr-tracker-ss index 6a85aa990..3fc907f3f 100755 --- a/omr-tracker/files/bin/omr-tracker-ss +++ b/omr-tracker/files/bin/omr-tracker-ss @@ -28,7 +28,9 @@ _get_ip() { check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)" [ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com" uci -q set openmptcprouter.omr.detected_public_ipv4="$(wget -4 -qO- -T 3 $check_ipv4_website)" - uci -q set openmptcprouter.omr.detected_ss_ipv4="$(curl -s -4 --socks5 "${proxy}" --max-time 3 $check_ipv4_website)" + if [ "$(uci -q get openmptcprouter.omr.shadowsocks)" != "down" ]; then + uci -q set openmptcprouter.omr.detected_ss_ipv4="$(curl -s -4 --socks5 "${proxy}" --max-time 3 $check_ipv4_website)" + fi if [ "$(uci -q get openmptcprouter.settings.disable_ipv6)" != "1" ]; then uci -q set openmptcprouter.omr.detected_public_ipv6="$(wget -6 -qO- -T 3 $check_ipv6_website)" # uci -q set openmptcprouter.omr.detected_ss_ipv6=$(curl -s -6 --socks5 ":::1111" --max-time 3 http://ip.openmptcprouter.com) diff --git a/omr-tracker/files/etc/config/omr-tracker b/omr-tracker/files/etc/config/omr-tracker index 83d7a78cc..3134bee3b 100644 --- a/omr-tracker/files/etc/config/omr-tracker +++ b/omr-tracker/files/etc/config/omr-tracker @@ -22,7 +22,6 @@ config shadowsocks 'shadowsocks' list hosts '1.1.1.1' list hosts '1.0.0.1' list hosts '212.27.48.10' - list hosts '104.16.1.1' list hosts '103.224.182.242' list hosts '198.27.92.1' list hosts '88.191.250.176' diff --git a/omr-tracker/files/etc/init.d/omr-tracker b/omr-tracker/files/etc/init.d/omr-tracker index ccd88b5ad..1b57b15bb 100755 --- a/omr-tracker/files/etc/init.d/omr-tracker +++ b/omr-tracker/files/etc/init.d/omr-tracker @@ -118,7 +118,7 @@ _initialize_shadowsocks_tracker() { } _launch_shadowsocks_tracker() { - local hosts timeout tries interval local_port enabled + local hosts timeout tries interval local_port enabled server [ "$1" = "tracker" ] || return @@ -127,8 +127,10 @@ _launch_shadowsocks_tracker() { config_get local_port "$1" local_port local disabled config_get disabled "$1" disabled 0 + config_get server "$1" server [ "$enabled" = "0" ] || [ "$disabled" = "1" ] || [ -z "$hosts" ] && return + [ -z "$server" ] || [ "$(uci -q get shadowsocks-libev.$server.server)" = "192.168.1.3" ] || [ "$(uci -q get shadowsocks-libev.$server.server)" = "" ] && return procd_open_instance # shellcheck disable=SC2086 diff --git a/openmptcprouter-full/Makefile b/openmptcprouter-full/Makefile index 8340b2165..de964e2b2 100644 --- a/openmptcprouter-full/Makefile +++ b/openmptcprouter-full/Makefile @@ -35,10 +35,10 @@ MY_DEPENDS := \ wireless-tools \ libiwinfo-lua \ ca-bundle ca-certificates libustream-openssl \ - luci-mod-admin-full luci-app-firewall luci-app-glorytun luci-app-shadowsocks-libev luci-app-unbound luci-theme-openmptcprouter luci-base \ + luci-mod-admin-full luci-app-firewall luci-app-glorytun luci-app-shadowsocks-libev luci-app-unbound luci-theme-openmptcprouter luci-theme-argon luci-base \ luci-app-nginx-ha luci-app-omr-tracker luci-app-omr-dscp \ luci-app-sqm sqm-scripts-extra \ - luci-app-vnstat omr-quota luci-app-omr-quota \ + luci-app-vnstat2 omr-quota luci-app-omr-quota \ luci-app-mptcp luci-app-openmptcprouter luci-app-omr-bypass luci-app-mail luci-app-upnp \ luci-app-wol luci-app-opkg \ luci-app-uhttpd \ @@ -79,7 +79,9 @@ MY_DEPENDS := \ !TARGET_mvebu:kmod-usb-net-huawei-cdc-ncm !TARGET_mvebu:kmod-usb-net-rndis !TARGET_mvebu:kmod-usb-net-cdc-ether !TARGET_mvebu:kmod-usb-net-ipheth !TARGET_mvebu:usbmuxd \ kmod-rt2800-usb kmod-rtl8xxxu kmod-rtl8192cu kmod-net-rtl8192su \ !TARGET_mvebu:luci-proto-qmi wpad-basic kmod-mt7601u kmod-rtl8187 \ - wireguard luci-app-mlvpn mlvpn 464xlat + wireguard luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-advanced-reboot luci-app-https-dns-proxy kmod-tcp-nanqinlang iptables-mod-ipopt igmpproxy ss mptcpd iptraf-ng \ + luci-app-acl block-mount blockd fstools luci-app-shutdown +# luci-theme-openwrt-2020 luci-proto-bonding luci-app-statistics # softethervpn5-client softethervpn5-server # luci-app-mlvpn ubond \ diff --git a/openmptcprouter/files/etc/init.d/mptcpovervpn b/openmptcprouter/files/etc/init.d/mptcpovervpn index e6240157d..27346a09b 100755 --- a/openmptcprouter/files/etc/init.d/mptcpovervpn +++ b/openmptcprouter/files/etc/init.d/mptcpovervpn @@ -33,6 +33,7 @@ mptcp_over_vpn() { set network.ovpn${interface}.defaultroute='0' set network.ovpn${interface}.peerdns='0' set network.ovpn${interface}.proto='none' + set network.ovpn${interface}.ip4table='wan' set network.ovpn${interface}.multipath='${multipath}' set network.${interface}.multipath='off' commit network diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index 422bd375e..0d700ef4e 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -167,6 +167,13 @@ _get_vps_config() { EOF fi + vpsinternet="$(echo "$vps_config" | jsonfilter -q -e '@.network.internet')" + if [ "$vpsinternet" = "false" ] && [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then + uci -q batch <<-EOF >/dev/null + set openmptcprouter.settings.external_check='0' + commit openmptcprouter + EOF + fi vps_kernel="$(echo "$vps_config" | jsonfilter -q -e '@.vps.kernel')" vps_machine="$(echo "$vps_config" | jsonfilter -q -e '@.vps.machine')" @@ -513,6 +520,7 @@ _set_vpn_ip() { vpnip_remote_current="$(echo "$vps_config" | jsonfilter -q -e '@.vpn.localip')" vpnip_remote=$(ip -4 r list dev ${vpnifname} | grep via | grep -v default | grep -v / | grep -v metric | awk '{print $1}' | tr -d "\n") [ -z "$vpnip_remote" ] && vpnip_remote=$(ip -4 r list dev ${vpnifname} | grep kernel | awk '{print $1}' | tr -d "\n") + [ -z "$vpnip_remote" ] && vpnip_remote=$(ip -4 r list dev ${vpnifname} | grep "proto static src" | awk '{print $3}' | tr -d "\n") if [ "$vpnip_remote" != "" ] && [ "$vpnip_local" != "" ] && ([ "$vpnip_remote" != "$vpnip_remote_current" ] || [ "$vpnip_local" != "$vpnip_local_current" ]); then settings='{"remoteip" : "'$vpnip_local'","localip" : "'$vpnip_remote'"}' result=$(_set_json "vpnips" "$settings") @@ -552,30 +560,37 @@ _set_client2client() { _vps_firewall_redirect_port() { local src proto src_dport config_get src $1 src - config_get proto $1 proto + config_get proto $1 proto "tcp udp" config_get src_dport $1 src_dport config_get family $1 family "ipv4" - [ "$src" = "vpn" ] && [ -n "$proto" ] && [ -n "$src_dport" ] && { + config_get enabled $1 enabled "1" + [ "$src" = "vpn" ] && [ -n "$proto" ] && [ -n "$src_dport" ] && [ "$enabled" != "0" ] && { if [ "$proto" = "tcp udp" ]; then if [ "$family" = "ipv4" ]; then - vpsfwlist=$(echo "$vpsfwlist" | grep -v "$port # OMR redirect router $src_dport port tcp") + vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR $username redirect router $src_dport port tcp") + [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR redirect router $src_dport port tcp") else - vpsfw6list=$(echo "$vpsfw6list" | grep -v "$port # OMR redirect router $src_dport port tcp") + vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR $username redirect router $src_dport port tcp") + [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR redirect router $src_dport port tcp") fi settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "tcp","fwtype" : "DNAT","ipproto" : "'$family'"}' _set_json "shorewallopen" "$settings" if [ "$family" = "ipv4" ]; then - vpsfwlist=$(echo "$vpsfwlist" | grep -v "$port # OMR redirect router $src_dport port udp") + vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR $username redirect router $src_dport port udp") + [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR redirect router $src_dport port udp") else - vpsfw6list=$(echo "$vpsfw6list" | grep -v "$port # OMR redirect router $src_dport port udp") + vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR $username redirect router $src_dport port udp") + [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR redirect router $src_dport port udp") fi settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "udp","fwtype" : "DNAT","ipproto" : "'$family'"}' _set_json "shorewallopen" "$settings" else if [ "$family" = "ipv4" ]; then - vpsfwlist=$(echo "$vpsfwlist" | grep -v "$port # OMR redirect router $src_dport port $proto") + vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR $username redirect router $src_dport port $proto") + [ "$username" = "openmptcprouter" ] && vpsfwlist=$(echo "$vpsfwlist" | grep -v "$src_dport # OMR redirect router $src_dport port $proto") else - vpsfw6list=$(echo "$vpsfw6list" | grep -v "$port # OMR redirect router $src_dport port $proto") + vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR $username redirect router $src_dport port $proto") + [ "$username" = "openmptcprouter" ] && vpsfw6list=$(echo "$vpsfw6list" | grep -v "$src_dport # OMR redirect router $src_dport port $proto") fi settings='{"name" : "router '$src_dport'","port" : "'$src_dport'","proto" : "'$proto'","fwtype" : "DNAT","ipproto" : "'$family'"}' _set_json "shorewallopen" "$settings" @@ -609,6 +624,7 @@ _vps_firewall_close_port() { _set_vps_firewall() { fwservername=$1 [ -z "$servername" ] && servername=$fwservername + [ -z "$fwservername" ] && fwservername=$servername [ "$(uci -q get openmptcprouter.${fwservername}.nofwredirect)" = "1" ] && return [ -z "$(uci -q get openmptcprouter.${fwservername}.username)" ] && return [ -z "$(uci -q get openmptcprouter.${fwservername}.password)" ] && return @@ -623,6 +639,7 @@ _set_vps_firewall() { EOF return } + username="$(uci -q get openmptcprouter.${fwservername}.username)" settings='{"name" : "redirect router"}' fw_list=$(_set_json "shorewalllist" "$settings") vpsfwlist=$(echo $fw_list | jsonfilter -q -e '@.list[*]' | sed '/^[[:space:]]*$/d') @@ -631,7 +648,10 @@ _set_vps_firewall() { vpsfw6list=$(echo $fw6_list | jsonfilter -q -e '@.list[*]' | sed '/^[[:space:]]*$/d') config_load firewall config_foreach _vps_firewall_redirect_port redirect - [ -n "$vpsfwlist" ] || [ -n "$vpsfw6list" ] && _vps_firewall_close_port + [ -n "$vpsfwlist" ] || [ -n "$vpsfw6list" ] && { + logger -t "OMR-VPS" "Remove old firewall rules" + _vps_firewall_close_port + } } set_vps_firewall() { @@ -663,6 +683,15 @@ _set_config_from_vps() { user_permission="$(echo "$vps_config" | jsonfilter -q -e '@.user.permission')" [ -z "$user_permission" ] && user_permission="rw" + vpsinternet="$(echo "$vps_config" | jsonfilter -q -e '@.network.internet')" + if [ "$vpsinternet" = "false" ] && [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then + uci -q batch <<-EOF >/dev/null + set openmptcprouter.settings.external_check='0' + EOF + logger -t "OMR-VPS" "OMR-Tracker restart..." + /etc/init.d/omr-tracker restart + fi + # Set current VPN current_vpn="$(uci -q get openmptcprouter.settings.vpn)" if [ -z "$current_vpn" ] || [ -n "$vps_lastchange" ] || [ "$user_permission" = "ro" ]; then diff --git a/openmptcprouter/files/etc/uci-defaults/1920-omr-network b/openmptcprouter/files/etc/uci-defaults/1920-omr-network index 59bad73ca..2c8a1231c 100755 --- a/openmptcprouter/files/etc/uci-defaults/1920-omr-network +++ b/openmptcprouter/files/etc/uci-defaults/1920-omr-network @@ -25,6 +25,7 @@ _setup_macvlan() { set network.$1.type=macvlan set network.$1.masterintf=$_ifname set macvlan.$1=macvlan + set macvlan.$1.name=$1 set macvlan.$1.ifname=$_ifname EOF _macaddr=$(uci -q get "network.$1.macaddr") diff --git a/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks b/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks index 46f5d9d1d..3739303aa 100755 --- a/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks +++ b/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks @@ -77,10 +77,10 @@ if [ "$(uci -q get shadowsocks-libev.hi.obfs)" = "1" ]; then fi if [ "$(uci -q get ucitrack.@shadowsocks-libev[*1].affects | grep openmptcprouter-vps)" = "" ]; then - uci -q batch <<-EOF >/dev/null - add_list ucitrack.@shadowsocks-libev[-1].affects="openmptcprouter-vps" - commit ucitrack - EOF + uci -q batch <<-EOF >/dev/null + add_list ucitrack.@shadowsocks-libev[-1].affects="openmptcprouter-vps" + commit ucitrack + EOF fi rm -f /tmp/luci-indexcache diff --git a/openmptcprouter/files/etc/uci-defaults/1940-omr-dns b/openmptcprouter/files/etc/uci-defaults/1940-omr-dns index 76870b1eb..73508e900 100755 --- a/openmptcprouter/files/etc/uci-defaults/1940-omr-dns +++ b/openmptcprouter/files/etc/uci-defaults/1940-omr-dns @@ -12,12 +12,12 @@ if [ "$(uci -q get openmptcprouter.latest_versions)" = "" ]; then if [ "$(uci -q show dhcp | grep 127.0.0.1#5353)" = "" ]; then uci -q batch <<-EOF >/dev/null add_list dhcp.@dnsmasq[-1].server="127.0.0.1#5353" - add_list dhcp.@dnsmasq[-1].server="/use-application-dns.net/" + add_list dhcp.@dnsmasq[-1].server="/lan/" commit dhcp EOF fi fi -if [ "$(uci -q show dhcp | grep 'use-application-dns.net'" = "" ]; then +if [ "$(uci -q show dhcp | grep 'use-application-dns.net')" = "" ]; then uci -q batch <<-EOF >/dev/null add_list dhcp.@dnsmasq[-1].server="/use-application-dns.net/" commit dhcp @@ -40,6 +40,23 @@ if [ "$(uci -q get dhcp.lan.dhcp_options)" = "" ]; then EOF fi +if [ "$(uci -q get https-dns-proxy.@https-dns-proxy[0].listen_port)" = "5053" ]; then +# uci -q batch <<-EOF >/dev/null +# delete https-dns-proxy.@https-dns-proxy[-1] +# delete https-dns-proxy.@https-dns-proxy[-1] +# commit https-dns-proxy +# EOF + /etc/init.d/https-dns-proxy stop + /etc/init.d/https-dns-proxy disable +# set https-dns-proxy.@https-dns-proxy[-1]=https-dns-proxy +# set https-dns-proxy.@https-dns-proxy[-1].listen_addr='127.0.0.1' +# set https-dns-proxy.@https-dns-proxy[-1].user='nobody' +# set https-dns-proxy.@https-dns-proxy[-1].group='nogroup' +# set https-dns-proxy.@https-dns-proxy[-1].bootstrap_dns='1.1.1.1,1.0.0.1' +# set https-dns-proxy.@https-dns-proxy[-1].resolver_url='https://cloudflare-dns.com/dns-query' +# set https-dns-proxy.@https-dns-proxy[-1].listen_port='5354' +fi + #uci -q batch <<-EOF >/dev/null # set unbound.@unbound[-1].add_local_fqdn=0 # set unbound.@unbound[-1].localservice=1 diff --git a/openmptcprouter/files/etc/uci-defaults/2020-omr-vpn b/openmptcprouter/files/etc/uci-defaults/2020-omr-vpn index c4fce511c..0d73bc7bc 100755 --- a/openmptcprouter/files/etc/uci-defaults/2020-omr-vpn +++ b/openmptcprouter/files/etc/uci-defaults/2020-omr-vpn @@ -44,6 +44,9 @@ if [ "$(uci -q get openvpn.omr.proto)" != "tcp-client" ]; then commit openvpn EOF fi + +uci -q delete openvpn.omr.secret + #if [ "$(uci -q get openvpn.omr.com_lzo)" = "" ]; then # uci -q batch <<-EOF >/dev/null # set openvpn.omr.comp_lzo=adaptive diff --git a/openmptcprouter/files/etc/uci-defaults/2060-omr-system b/openmptcprouter/files/etc/uci-defaults/2060-omr-system index ec6f35866..12cb92bdd 100755 --- a/openmptcprouter/files/etc/uci-defaults/2060-omr-system +++ b/openmptcprouter/files/etc/uci-defaults/2060-omr-system @@ -1,6 +1,8 @@ #!/bin/sh uci -q batch <<-EOF >/dev/null set system.@system[-1].ttylogin=1 + set system.ntp.use_dhcp='0' + set system.ntp.enable_server='1' commit system set rpcd.@rpcd[0].timeout=90 commit rpcd diff --git a/rpi-eeprom/Makefile b/rpi-eeprom/Makefile index 0babe3fd6..b142ccd99 100644 --- a/rpi-eeprom/Makefile +++ b/rpi-eeprom/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=rpi-eeprom -PKG_VERSION:=20200304 +PKG_VERSION:=20200319 PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/raspberrypi/rpi-eeprom.git -PKG_SOURCE_VERSION:=17086f2637a46b9ed47633c9b6d0c27f7d2043aa +PKG_SOURCE_VERSION:=a9ca308223c1d0426b9ab320696b95954078c3b4 CMAKE_INSTALL:=1 diff --git a/shadowsocks-libev/files/shadowsocks-libev.config b/shadowsocks-libev/files/shadowsocks-libev.config index 01f3251a9..19e633d6d 100644 --- a/shadowsocks-libev/files/shadowsocks-libev.config +++ b/shadowsocks-libev/files/shadowsocks-libev.config @@ -34,7 +34,7 @@ config ss_rules 'ss_rules' option local_default 'forward' config server 'sss0' - option disabled 0 + option disabled 1 option server '192.168.1.3' option server_port '65101' option key '' diff --git a/shadowsocks-libev/files/shadowsocks-libev.init b/shadowsocks-libev/files/shadowsocks-libev.init index 7a8fa9efa..21d437578 100644 --- a/shadowsocks-libev/files/shadowsocks-libev.init +++ b/shadowsocks-libev/files/shadowsocks-libev.init @@ -185,8 +185,10 @@ ss_rules() { all_ss_redir_ports=$min_ss_redir_ports fi local_port_tcp="$all_ss_redir_ports" + #local_port_udp="$all_ss_redir_ports" eval local_port_udp="\$ss_rules_redir_udp_$redir_udp" local_port_tcp6="$all_ss_redir_ports" + #local_port_udp6="$all_ss_redir_ports" eval local_port_udp6="\$ss_rules6_redir_udp_$redir_udp" else eval local_port_tcp="\$ss_rules_redir_tcp_$redir_tcp" @@ -217,20 +219,20 @@ ss_rules() { ss_rules_call() { "$bin" "$@" \ -s "$ss_redir_servers4" \ - -l "$local_port_tcp" \ - -L "$local_port_udp" \ - --src-default "$src_default" \ - --dst-default "$dst_default" \ - --local-default "$local_default" \ - --dst-bypass-file "$dst_ips_bypass_file" \ - --dst-forward-file "$dst_ips_forward_file" \ - --dst-bypass "$dst_ips_bypass4" \ - --dst-forward "$dst_ips_forward4" \ - --src-bypass "$src_ips_bypass4" \ - --src-forward "$src_ips_forward4" \ - --src-checkdst "$src_ips_checkdst4" \ - --ifnames "$ifnames" \ - --ipt-extra "$ipt_args" \ + ${local_port_tcp:+-l "$local_port_tcp"} \ + ${local_port_udp:+-L "$local_port_udp"} \ + ${src_default:+--src-default "$src_default"} \ + ${dst_default:+--dst-default "$dst_default"} \ + ${local_default:+--local-default "$local_default"} \ + ${dst_ips_bypass_file:+--dst-bypass-file "$dst_ips_bypass_file"} \ + ${dst_ips_forward_file:+--dst-forward-file "$dst_ips_forward_file"} \ + ${dst_ips_bypass4:+--dst-bypass "$dst_ips_bypass4"} \ + ${dst_ips_forward4:+--dst-forward "$dst_ips_forward4"} \ + ${src_ips_bypass4:+--src-bypass "$src_ips_bypass4"} \ + ${src_ips_forward4:+--src-forward "$src_ips_forward4"} \ + ${src_ips_checkdst4:+--src-checkdst "$src_ips_checkdst4"} \ + ${ifnames:+--ifnames "$ifnames"} \ + ${ipt_args:+--ipt-extra "$ipt_args"} \ $args \ || "$bin" "$@" -f } @@ -238,20 +240,19 @@ ss_rules_call() { ss_rules_call6() { "$bin6" "$@" \ -s "$ss_redir_servers6" \ - -l "$local_port_tcp6" \ - -L "$local_port_udp6" \ - --src-default "$src_default" \ - --dst-default "$dst_default" \ - --local-default "$local_default" \ - --dst-bypass-file "$dst_ips_bypass_file" \ - --dst-forward-file "$dst_ips_forward_file" \ - --dst-bypass "$dst_ips_bypass6" \ - --dst-forward "$dst_ips_forward6" \ - --src-bypass "$src_ips_bypass6" \ - --src-forward "$src_ips_forward6" \ - --src-checkdst "$src_ips_checkdst6" \ - --ifnames "$ifnames" \ - --ipt-extra "$ipt_args" \ + ${local_port_tcp:+-l "$local_port_tcp6"} \ + ${local_port_udp:+-L "$local_port_udp6"} \ + ${src_default:+--src-default "$src_default"} \ + ${dst_default:+--dst-default "$dst_default"} \ + ${dst_ips_bypass_file:+--dst-bypass-file "$dst_ips_bypass_file"} \ + ${dst_ips_forward_file:+--dst-forward-file "$dst_ips_forward_file"} \ + ${dst_ips_bypass6:+--dst-bypass "$dst_ips_bypass6"} \ + ${dst_ips_forward6:+--dst-forward "$dst_ips_forward6"} \ + ${src_ips_bypass6:+--src-bypass "$src_ips_bypass6"} \ + ${src_ips_forward6:+--src-forward "$src_ips_forward6"} \ + ${src_ips_checkdst6:+--src-checkdst "$src_ips_checkdst6"} \ + ${ifnames:+--ifnames "$ifnames"} \ + ${ipt_args:+--ipt-extra "$ipt_args"} \ $args \ || "$bin6" "$@" -f } @@ -282,15 +283,21 @@ rules_exist() { server_state() { config_get disabled "$1" disabled "0" [ "$disabled" = "0" ] && enabled="1" + config_get key "$1" key + [ -n "$key" ] && passkey=$key + config_get password "$1" password + [ -n "$password" ] && passkey=$password } rules_up() { rules_exist && return 0 [ "$(uci -q get shadowsocks-libev.ss_rules.disabled)" = "1" ] && return 0 enabled="0" + passkey="" config_load shadowsocks-libev config_foreach server_state server [ "$enabled" = "0" ] && return + [ -z "$passkey" ] && return logger -t "Shadowsocks" "Rules UP" for cfgtype in ss_redir; do config_foreach ss_rules_restart "$cfgtype" "$cfgtype" diff --git a/shadowsocks-libev/files/ss-rules b/shadowsocks-libev/files/ss-rules index b50eaeacd..5146316d9 100755 --- a/shadowsocks-libev/files/ss-rules +++ b/shadowsocks-libev/files/ss-rules @@ -123,7 +123,7 @@ ss_rules_flush() { iptables-save --counters | grep -v ss_rules_ | iptables-restore -w --counters while ip rule del fwmark 1 lookup 100 2>/dev/null; do true; done - ip route flush table 100 + ip route flush table 100 || true for setname in $(ipset -n list | grep "ss_rules_"); do ipset destroy "$setname" 2>/dev/null || true done diff --git a/shadowsocks-libev/files/ss-rules6 b/shadowsocks-libev/files/ss-rules6 index 3c78e9a73..796e3178e 100755 --- a/shadowsocks-libev/files/ss-rules6 +++ b/shadowsocks-libev/files/ss-rules6 @@ -105,7 +105,7 @@ ss_rules6_flush() { ip6tables-save --counters | grep -v ss_rules6_ | ip6tables-restore -w --counters while ip -f inet6 rule del fwmark 1 lookup 100 2>/dev/null; do true; done - ip -f inet6 route flush table 100 + ip -f inet6 route flush table 100 || true for setname in $(ipset -n list | grep "ss_rules6_"); do ipset destroy "$setname" 2>/dev/null || true done diff --git a/shadowsocks-v2ray-plugin/Makefile b/shadowsocks-v2ray-plugin/Makefile index 6dc6cb41e..1d0e8044b 100644 --- a/shadowsocks-v2ray-plugin/Makefile +++ b/shadowsocks-v2ray-plugin/Makefile @@ -13,7 +13,7 @@ PKG_MAINTAINER:=Ycarus PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/shadowsocks/v2ray-plugin.git -PKG_SOURCE_VERSION:=59b8f4fc46c7be399dad0620121a89efa656dc9c +PKG_SOURCE_VERSION:=63dd1bd821d85b95d06d3ea57772d2298caf5f65 PKG_BUILD_DEPENDS:=golang/host PKG_BUILD_PARALLEL:=1 diff --git a/speedtestc/Makefile b/speedtestc/Makefile index afaf440af..5144ede64 100644 --- a/speedtestc/Makefile +++ b/speedtestc/Makefile @@ -11,10 +11,8 @@ PKG_NAME:=speedtestc PKG_RELEASE:=2 PKG_SOURCE_URL:=https://github.com/mobrembski/SpeedTestC.git -#PKG_SOURCE_URL:=https://github.com/egliu/SpeedTestC.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=e7c6a35f0ac83fa7afec24ad52c8281abd3533ad -#PKG_SOURCE_VERSION:=f7623914afabda582f146caab1081e601a34e882 +PKG_SOURCE_VERSION:=64f8d8288cbbaa596a408fd3051a2b5bc831faa9 PKG_MAINTAINER:=Ycarus (Yannick Chabanois) PKG_LICENSE:=GPL-2.0 PKG_BUILD_PARALLEL:=0 diff --git a/vnstat/Makefile b/vnstat/Makefile index bdf3a869d..5645e2142 100644 --- a/vnstat/Makefile +++ b/vnstat/Makefile @@ -1,6 +1,6 @@ # # Copyright (C) 2006-2014 OpenWrt.org -# Copyright (C) 2019 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# Copyright (C) 2019-2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=vnstat -PKG_VERSION:=2.4 -PKG_RELEASE:=2 +PKG_VERSION:=2.6 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://humdi.net/vnstat -PKG_HASH:=a0955999abd56d5463d257ffdccc9b1e9ad9ea504de81e64ba4c197f1245abaa +PKG_HASH:=89276e0a7281943edb554b874078278ad947dc312938a2451e03eb80679f7ff7 PKG_MAINTAINER:=Ycarus PKG_INSTALL:=1 @@ -60,6 +60,7 @@ endef define Package/vnstat/conffiles /etc/vnstat.conf /etc/config/vnstat +/var/lib/vnstat.db endef define Build/Compile/vnstat